提交 c4b482ef 编写于 作者: J jp9000

libobs: Add functions to get raw video output

Adds obs_add_raw_video_callback() and obs_remove_raw_video_callback()
functions which allow the ability to get raw video frames without
necessarily needing to create an output.
上级 45b52915
......@@ -433,6 +433,18 @@ Video, Audio, and Graphics
Adds/removes a main rendering callback. Allows custom rendering to
the main stream/recording output.
---------------------
.. function:: void obs_add_raw_video_callback(const struct video_scale_info *conversion, void (*callback)(void *param, struct video_data *frame), void *param)
void obs_remove_raw_video_callback(void (*callback)(void *param, struct video_data *frame), void *param)
Adds/removes a raw video callback. Allows the ability to obtain raw
video frames without necessarily using an output.
:param conversion: Specifies conversion requirements. Can be NULL.
:param callback: The callback that receives raw video frames.
:param param: The private data associated with the callback.
Primary signal/procedure handlers
---------------------------------
......
......@@ -2089,3 +2089,24 @@ void stop_raw_video(video_t *v,
os_atomic_dec_long(&video->raw_active);
video_output_disconnect(v, callback, param);
}
void obs_add_raw_video_callback(
const struct video_scale_info *conversion,
void (*callback)(void *param, struct video_data *frame),
void *param)
{
struct obs_core_video *video = &obs->video;
if (!obs)
return;
start_raw_video(video->video, conversion, callback, param);
}
void obs_remove_raw_video_callback(
void (*callback)(void *param, struct video_data *frame),
void *param)
{
struct obs_core_video *video = &obs->video;
if (!obs)
return;
stop_raw_video(video->video, callback, param);
}
......@@ -628,6 +628,14 @@ EXPORT void obs_remove_main_render_callback(
void (*draw)(void *param, uint32_t cx, uint32_t cy),
void *param);
EXPORT void obs_add_raw_video_callback(
const struct video_scale_info *conversion,
void (*callback)(void *param, struct video_data *frame),
void *param);
EXPORT void obs_remove_raw_video_callback(
void (*callback)(void *param, struct video_data *frame),
void *param);
/* ------------------------------------------------------------------------- */
/* View context */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册