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.
master
jp9000 2018-04-23 09:05:32 -07:00
parent 45b5291530
commit c4b482efef
3 changed files with 41 additions and 0 deletions

View File

@ -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
---------------------------------

View File

@ -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);
}

View File

@ -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 */