Browse Source

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 năm trước cách đây
mục cha
commit
3d1c132989
3 tập tin đã thay đổi với 29 bổ sung0 xóa
  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 */