From: Stefan Sauer Date: Mon, 9 Jul 2012 17:56:15 +0000 (+0200) Subject: collectpads: add STREAM_START handling X-Git-Tag: RELEASE-0.11.93~134 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=46a4f2f6c03fe8e5eb56083d4536c7ba5b6debb7;p=platform%2Fupstream%2Fgstreamer.git collectpads: add STREAM_START handling Use a flag to forward the first STREAM_START --- diff --git a/libs/gst/base/gstcollectpads.c b/libs/gst/base/gstcollectpads.c index f40463c..c8d510d 100644 --- a/libs/gst/base/gstcollectpads.c +++ b/libs/gst/base/gstcollectpads.c @@ -109,6 +109,7 @@ struct _GstCollectPadsPrivate { /* with LOCK and/or STREAM_LOCK */ gboolean started; + gboolean stream_started; /* with STREAM_LOCK */ guint32 cookie; /* @data list cookie */ @@ -235,6 +236,7 @@ gst_collect_pads_init (GstCollectPads * pads) pads->priv->queuedpads = 0; pads->priv->eospads = 0; pads->priv->started = FALSE; + pads->priv->stream_started = FALSE; g_rec_mutex_init (&pads->stream_lock); @@ -1013,6 +1015,7 @@ gst_collect_pads_stop (GstCollectPads * pads) unref_data (pads->priv->earliest_data); pads->priv->earliest_data = NULL; pads->priv->earliest_time = GST_CLOCK_TIME_NONE; + pads->priv->stream_started = FALSE; GST_OBJECT_UNLOCK (pads); /* Wake them up so they can end the chain functions. */ @@ -1837,8 +1840,16 @@ gst_collect_pads_event_default (GstCollectPads * pads, GstCollectData * data, * accumulated and this is certainly not what we want. */ goto eat; } - case GST_EVENT_CAPS: case GST_EVENT_STREAM_START: + /* let the only the first one go through */ + if (!pads->priv->stream_started) { + pads->priv->stream_started = TRUE; + goto forward; + } else { + goto eat; + } + break; + case GST_EVENT_CAPS: case GST_EVENT_STREAM_CONFIG: goto eat; default: