From 3d1c132989627b87a8e6d6d810a8ae910a10e4b5 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Sun, 6 Jul 2014 14:55:56 -0700 Subject: [PATCH] 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. --- libobs/obs-output.c | 21 +++++++++++++++++++++ libobs/obs-output.h | 4 ++++ libobs/obs.h | 4 ++++ 3 files changed, 29 insertions(+) diff --git a/libobs/obs-output.c b/libobs/obs-output.c index e37bd970e..68e22cba6 100644 --- a/libobs/obs-output.c +++ b/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) { diff --git a/libobs/obs-output.h b/libobs/obs-output.h index ec4e32cf3..da8f7edf4 100644 --- a/libobs/obs-output.h +++ b/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, diff --git a/libobs/obs.h b/libobs/obs.h index 321524222..e37957c3a 100644 --- a/libobs/obs.h +++ b/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 */