浏览代码

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.
jp9000 7 年之前
父节点
当前提交
c4b482efef
共有 3 个文件被更改,包括 41 次插入0 次删除
  1. 12 0
      docs/sphinx/reference-core.rst
  2. 21 0
      libobs/obs.c
  3. 8 0
      libobs/obs.h

+ 12 - 0
docs/sphinx/reference-core.rst

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

+ 21 - 0
libobs/obs.c

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

+ 8 - 0
libobs/obs.h

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