From 4bdbb7a98f7873083ad385565dcd4759ee5867f4 Mon Sep 17 00:00:00 2001 From: Matthew Waters Date: Mon, 17 Nov 2014 14:00:10 +1100 Subject: [PATCH] aggregator: add _get_latency() for subclass usage API: gst_aggregator_get_latency https://bugzilla.gnome.org/show_bug.cgi?id=739996 --- libs/gst/base/gstaggregator.c | 38 ++++++++++++++++++++++++++++++++++++++ libs/gst/base/gstaggregator.h | 4 ++++ 2 files changed, 42 insertions(+) diff --git a/libs/gst/base/gstaggregator.c b/libs/gst/base/gstaggregator.c index 7d59037..cb4ba96 100644 --- a/libs/gst/base/gstaggregator.c +++ b/libs/gst/base/gstaggregator.c @@ -947,6 +947,44 @@ _latency_query (GstAggregator * self, GstPad * pad, gpointer user_data) return TRUE; } +/** + * gst_aggregator_get_latency: + * @self: a #GstAggregator + * @live: (out) (allow-none): whether @self is live + * @min_latency: (out) (allow-none): the configured minimum latency of @self + * @max_latency: (out) (allow-none): the configured maximum latency of @self + * + * Retreives the latency values reported by @self in response to the latency + * query. + * + * Typically only called by subclasses. + */ +void +gst_aggregator_get_latency (GstAggregator * self, gboolean * live, + GstClockTime * min_latency, GstClockTime * max_latency) +{ + GstClockTime min, max; + + g_return_if_fail (GST_IS_AGGREGATOR (self)); + + min = self->priv->latency_min; + max = self->priv->latency_max; + + if (GST_CLOCK_TIME_IS_VALID (self->timeout)) { + if (GST_CLOCK_TIME_IS_VALID (min)) + min += self->timeout; + if (GST_CLOCK_TIME_IS_VALID (max)) + max += self->timeout; + } + + if (live) + *live = self->priv->latency_live; + if (min_latency) + *min_latency = min; + if (max_latency) + *max_latency = max; +} + static gboolean gst_aggregator_query_latency (GstAggregator * self, GstQuery * query) { diff --git a/libs/gst/base/gstaggregator.h b/libs/gst/base/gstaggregator.h index 837fdbb..8bf8fbd 100644 --- a/libs/gst/base/gstaggregator.h +++ b/libs/gst/base/gstaggregator.h @@ -261,6 +261,10 @@ gboolean gst_aggregator_iterate_sinkpads (GstAggregator GstAggregatorPadForeachFunc func, gpointer user_data); +void gst_aggregator_get_latency (GstAggregator * self, + gboolean * live, + GstClockTime * min, + GstClockTime * max); G_END_DECLS -- 2.7.4