diff options
author | Stefan Sauer <ensonic@users.sf.net> | 2013-10-30 08:19:41 +0100 |
---|---|---|
committer | Thiago Santos <thiagoss@osg.samsung.com> | 2015-09-01 16:26:46 -0300 |
commit | eccc6c8b9f01ebba9a7bd52c942b7ed41b7bb2b0 (patch) | |
tree | da853a03ca5113750210448c646ac8f6afa77bc9 | |
parent | b7d72a9ab9704217e0a868f5c70b386cee035a4d (diff) |
stats: handle buffer lists
-rw-r--r-- | plugins/tracers/gststats.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/plugins/tracers/gststats.c b/plugins/tracers/gststats.c index 70ea02f0c..93dccc52e 100644 --- a/plugins/tracers/gststats.c +++ b/plugins/tracers/gststats.c @@ -484,6 +484,46 @@ do_push_buffer_post (GstStatsTracer * self, va_list var_args) do_element_stats (self, pad, stats->last_ts, ts); } +typedef struct +{ + GstStatsTracer *self; + GstPad *pad; + GstPadStats *stats; + guint64 ts; +} DoPushBufferListArgs; + +static gboolean +do_push_buffer_list_item (GstBuffer ** buffer, guint idx, gpointer user_data) +{ + DoPushBufferListArgs *args = (DoPushBufferListArgs *) user_data; + + do_pad_stats (args->self, args->pad, args->stats, *buffer, args->ts); + do_transmission_stats (args->self, args->pad, *buffer, args->ts); + return TRUE; +} + +static void +do_push_buffer_list_pre (GstStatsTracer * self, va_list var_args) +{ + guint64 ts = va_arg (var_args, guint64); + GstPad *pad = va_arg (var_args, GstPad *); + GstBufferList *list = va_arg (var_args, GstBufferList *); + GstPadStats *stats = get_pad_stats (self, pad); + DoPushBufferListArgs args = { self, pad, stats, ts }; + + gst_buffer_list_foreach (list, do_push_buffer_list_item, &args); +} + +static void +do_push_buffer_list_post (GstStatsTracer * self, va_list var_args) +{ + guint64 ts = va_arg (var_args, guint64); + GstPad *pad = va_arg (var_args, GstPad *); + GstPadStats *stats = get_pad_stats (self, pad); + + do_element_stats (self, pad, stats->last_ts, ts); +} + static void gst_stats_tracer_invoke (GstTracer * obj, GstTracerHookId hid, GstTracerMessageId mid, va_list var_args) @@ -497,6 +537,12 @@ gst_stats_tracer_invoke (GstTracer * obj, GstTracerHookId hid, case GST_TRACER_MESSAGE_ID_PAD_PUSH_POST: do_push_buffer_post (self, var_args); break; + case GST_TRACER_MESSAGE_ID_PAD_PUSH_LIST_PRE: + do_push_buffer_list_pre (self, var_args); + break; + case GST_TRACER_MESSAGE_ID_PAD_PUSH_LIST_POST: + do_push_buffer_list_post (self, var_args); + break; default: break; } |