From: Wim Taymans Date: Mon, 6 Sep 2010 11:14:00 +0000 (+0200) Subject: rtppayload: notify of first timestamp/seqnum X-Git-Tag: RELEASE-0.10.31~244 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9fd1c4826752149f4bb31ebea9a90c3ba402f233;p=platform%2Fupstream%2Fgst-plugins-base.git rtppayload: notify of first timestamp/seqnum Notify of the first timestamp/seqnum pushed out by the payloader. Fixes #612264 --- diff --git a/gst-libs/gst/rtp/gstbasertppayload.c b/gst-libs/gst/rtp/gstbasertppayload.c index e1cc721..e9c9881 100644 --- a/gst-libs/gst/rtp/gstbasertppayload.c +++ b/gst-libs/gst/rtp/gstbasertppayload.c @@ -46,6 +46,7 @@ struct _GstBaseRTPPayloadPrivate gboolean ssrc_random; guint16 next_seqnum; gboolean perfect_rtptime; + gint notified_first_timestamp; gint64 prop_max_ptime; gint64 caps_max_ptime; @@ -809,6 +810,12 @@ gst_basertppayload_prepare_push (GstBaseRTPPayload * payload, GST_BUFFER_SIZE (GST_BUFFER (obj)), payload->seqnum, data.rtptime, GST_TIME_ARGS (data.timestamp)); + if (g_atomic_int_compare_and_exchange (&payload->priv-> + notified_first_timestamp, 1, 0)) { + g_object_notify (G_OBJECT (payload), "timestamp"); + g_object_notify (G_OBJECT (payload), "seqnum"); + } + return GST_FLOW_OK; /* ERRORS */ @@ -1023,6 +1030,7 @@ gst_basertppayload_change_state (GstElement * element, else basertppayload->ts_base = basertppayload->ts_offset; basertppayload->timestamp = basertppayload->ts_base; + g_atomic_int_set (&basertppayload->priv->notified_first_timestamp, 1); break; default: break; @@ -1031,6 +1039,9 @@ gst_basertppayload_change_state (GstElement * element, ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); switch (transition) { + case GST_STATE_CHANGE_PLAYING_TO_PAUSED: + g_atomic_int_set (&basertppayload->priv->notified_first_timestamp, 1); + break; case GST_STATE_CHANGE_READY_TO_NULL: break; default: