소스 검색

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