mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 06:46:38 +00:00
aggregator: use new gst_element_foreach_sink_pad()
Instead of gst_aggregator_iterate_sinkpads() which will soon be removed. https://bugzilla.gnome.org/show_bug.cgi?id=785679
This commit is contained in:
parent
f51557dbc5
commit
2f3fbf24bc
1 changed files with 21 additions and 15 deletions
|
@ -762,9 +762,11 @@ gst_aggregator_wait_and_check (GstAggregator * self, gboolean * timeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_aggregator_do_events_and_queries (GstAggregator * self,
|
gst_aggregator_do_events_and_queries (GstElement * self, GstPad * epad,
|
||||||
GstAggregatorPad * pad, gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
|
GstAggregatorPad *pad = GST_AGGREGATOR_PAD_CAST (epad);
|
||||||
|
GstAggregator *aggregator = GST_AGGREGATOR_CAST (self);
|
||||||
GstEvent *event = NULL;
|
GstEvent *event = NULL;
|
||||||
GstQuery *query = NULL;
|
GstQuery *query = NULL;
|
||||||
GstAggregatorClass *klass = NULL;
|
GstAggregatorClass *klass = NULL;
|
||||||
|
@ -794,7 +796,7 @@ gst_aggregator_do_events_and_queries (GstAggregator * self,
|
||||||
if (event) {
|
if (event) {
|
||||||
GST_LOG_OBJECT (pad, "Processing %" GST_PTR_FORMAT, event);
|
GST_LOG_OBJECT (pad, "Processing %" GST_PTR_FORMAT, event);
|
||||||
gst_event_ref (event);
|
gst_event_ref (event);
|
||||||
ret = klass->sink_event (self, pad, event);
|
ret = klass->sink_event (aggregator, pad, event);
|
||||||
|
|
||||||
PAD_LOCK (pad);
|
PAD_LOCK (pad);
|
||||||
if (GST_EVENT_TYPE (event) == GST_EVENT_CAPS)
|
if (GST_EVENT_TYPE (event) == GST_EVENT_CAPS)
|
||||||
|
@ -804,7 +806,7 @@ gst_aggregator_do_events_and_queries (GstAggregator * self,
|
||||||
gst_event_unref (event);
|
gst_event_unref (event);
|
||||||
} else if (query) {
|
} else if (query) {
|
||||||
GST_LOG_OBJECT (pad, "Processing %" GST_PTR_FORMAT, query);
|
GST_LOG_OBJECT (pad, "Processing %" GST_PTR_FORMAT, query);
|
||||||
ret = klass->sink_query (self, pad, query);
|
ret = klass->sink_query (aggregator, pad, query);
|
||||||
|
|
||||||
PAD_LOCK (pad);
|
PAD_LOCK (pad);
|
||||||
if (g_queue_peek_tail (&pad->priv->data) == query) {
|
if (g_queue_peek_tail (&pad->priv->data) == query) {
|
||||||
|
@ -1104,16 +1106,17 @@ gst_aggregator_aggregate_func (GstAggregator * self)
|
||||||
GstFlowReturn flow_return = GST_FLOW_OK;
|
GstFlowReturn flow_return = GST_FLOW_OK;
|
||||||
gboolean processed_event = FALSE;
|
gboolean processed_event = FALSE;
|
||||||
|
|
||||||
gst_aggregator_iterate_sinkpads (self, gst_aggregator_do_events_and_queries,
|
gst_element_foreach_sink_pad (GST_ELEMENT_CAST (self),
|
||||||
NULL);
|
gst_aggregator_do_events_and_queries, NULL);
|
||||||
|
|
||||||
/* Ensure we have buffers ready (either in clipped_buffer or at the head of
|
/* Ensure we have buffers ready (either in clipped_buffer or at the head of
|
||||||
* the queue */
|
* the queue */
|
||||||
if (!gst_aggregator_wait_and_check (self, &timeout))
|
if (!gst_aggregator_wait_and_check (self, &timeout))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
gst_aggregator_iterate_sinkpads (self, gst_aggregator_do_events_and_queries,
|
gst_element_foreach_sink_pad (GST_ELEMENT_CAST (self),
|
||||||
&processed_event);
|
gst_aggregator_do_events_and_queries, &processed_event);
|
||||||
|
|
||||||
if (processed_event)
|
if (processed_event)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -1520,11 +1523,13 @@ eat:
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline gboolean
|
static gboolean
|
||||||
gst_aggregator_stop_pad (GstAggregator * self, GstAggregatorPad * pad,
|
gst_aggregator_stop_pad (GstElement * self, GstPad * epad, gpointer user_data)
|
||||||
gpointer unused_udata)
|
|
||||||
{
|
{
|
||||||
gst_aggregator_pad_flush (pad, self);
|
GstAggregatorPad *pad = GST_AGGREGATOR_PAD_CAST (epad);
|
||||||
|
GstAggregator *agg = GST_AGGREGATOR_CAST (self);
|
||||||
|
|
||||||
|
gst_aggregator_pad_flush (pad, agg);
|
||||||
|
|
||||||
PAD_LOCK (pad);
|
PAD_LOCK (pad);
|
||||||
pad->priv->flow_return = GST_FLOW_FLUSHING;
|
pad->priv->flow_return = GST_FLOW_FLUSHING;
|
||||||
|
@ -1543,7 +1548,9 @@ gst_aggregator_stop (GstAggregator * agg)
|
||||||
|
|
||||||
gst_aggregator_reset_flow_values (agg);
|
gst_aggregator_reset_flow_values (agg);
|
||||||
|
|
||||||
gst_aggregator_iterate_sinkpads (agg, gst_aggregator_stop_pad, NULL);
|
/* Application needs to make sure no pads are added while it shuts us down */
|
||||||
|
gst_element_foreach_sink_pad (GST_ELEMENT_CAST (agg),
|
||||||
|
gst_aggregator_stop_pad, NULL);
|
||||||
|
|
||||||
klass = GST_AGGREGATOR_GET_CLASS (agg);
|
klass = GST_AGGREGATOR_GET_CLASS (agg);
|
||||||
|
|
||||||
|
@ -2343,7 +2350,6 @@ gst_aggregator_class_init (GstAggregatorClass * klass)
|
||||||
G_MAXUINT64,
|
G_MAXUINT64,
|
||||||
DEFAULT_START_TIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
DEFAULT_START_TIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
GST_DEBUG_REGISTER_FUNCPTR (gst_aggregator_stop_pad);
|
|
||||||
GST_DEBUG_REGISTER_FUNCPTR (gst_aggregator_do_events_and_queries);
|
GST_DEBUG_REGISTER_FUNCPTR (gst_aggregator_do_events_and_queries);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2668,7 +2674,7 @@ flushing:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Queue serialized events and let the others go though directly.
|
/* Queue serialized events and let the others go through directly.
|
||||||
* The queued events with be handled from the src-pad task in
|
* The queued events with be handled from the src-pad task in
|
||||||
* gst_aggregator_do_events_and_queries().
|
* gst_aggregator_do_events_and_queries().
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue