浏览代码

Add statistics functions to outputs

Total bytes, total frames, and frames dropped.  Total frames is
generated automatically, but total bytes and total dropped frames are
returned via callbacks.
jp9000 11 年之前
父节点
当前提交
3d1c132989
共有 3 个文件被更改,包括 29 次插入0 次删除
  1. 21 0
      libobs/obs-output.c
  2. 4 0
      libobs/obs-output.h
  3. 4 0
      libobs/obs.h

+ 21 - 0
libobs/obs-output.c

@@ -341,6 +341,27 @@ void obs_output_set_reconnect_settings(obs_output_t output,
 	output->reconnect_retry_sec = retry_sec;
 }
 
+uint64_t obs_output_get_total_bytes(obs_output_t output)
+{
+	if (!output || !output->info.total_bytes)
+		return 0;
+
+	return output->info.total_bytes(output->context.data);
+}
+
+int obs_output_get_frames_dropped(obs_output_t output)
+{
+	if (!output || !output->info.dropped_frames)
+		return 0;
+
+	return output->info.dropped_frames(output->context.data);
+}
+
+int obs_output_get_total_frames(obs_output_t output)
+{
+	return output ? output->total_frames : 0;
+}
+
 void obs_output_set_video_conversion(obs_output_t output,
 		const struct video_scale_info *conversion)
 {

+ 4 - 0
libobs/obs-output.h

@@ -52,6 +52,10 @@ struct obs_output_info {
 	obs_properties_t (*properties)(void);
 
 	void (*pause)(void *data);
+
+	uint64_t (*total_bytes)(void *data);
+
+	int (*dropped_frames)(void *data);
 };
 
 EXPORT void obs_register_output_s(const struct obs_output_info *info,

+ 4 - 0
libobs/obs.h

@@ -855,6 +855,10 @@ EXPORT obs_service_t obs_output_get_service(obs_output_t output);
 EXPORT void obs_output_set_reconnect_settings(obs_output_t output,
 		int retry_count, int retry_sec);
 
+EXPORT uint64_t obs_output_get_total_bytes(obs_output_t output);
+EXPORT int obs_output_get_frames_dropped(obs_output_t output);
+EXPORT int obs_output_get_total_frames(obs_output_t output);
+
 /* ------------------------------------------------------------------------- */
 /* Functions used by outputs */