summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Sauer <ensonic@users.sf.net>2013-10-30 08:19:41 +0100
committerThiago Santos <thiagoss@osg.samsung.com>2015-09-01 16:26:46 -0300
commiteccc6c8b9f01ebba9a7bd52c942b7ed41b7bb2b0 (patch)
treeda853a03ca5113750210448c646ac8f6afa77bc9
parentb7d72a9ab9704217e0a868f5c70b386cee035a4d (diff)
stats: handle buffer lists
-rw-r--r--plugins/tracers/gststats.c46
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;
}