From: Mathieu Duponchelle Date: Sat, 2 Feb 2019 01:26:47 +0000 (+0100) Subject: rtpjitterbuffer: use the correct segment seqnum X-Git-Tag: 1.19.3~509^2~1182 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a6d681ad09b694cc92d43a8effceff7328137075;p=platform%2Fupstream%2Fgstreamer.git rtpjitterbuffer: use the correct segment seqnum --- diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c index 2fbbd4b..aa08aa7 100644 --- a/gst/rtpmanager/gstrtpjitterbuffer.c +++ b/gst/rtpmanager/gstrtpjitterbuffer.c @@ -274,6 +274,7 @@ struct _GstRtpJitterBufferPrivate gboolean ts_discont; gboolean active; guint64 out_offset; + guint32 segment_seqnum; gboolean timer_running; GThread *timer_thread; @@ -1019,6 +1020,7 @@ gst_rtp_jitter_buffer_init (GstRtpJitterBuffer * jitterbuffer) priv->last_pts = -1; priv->last_rtptime = -1; priv->avg_jitter = 0; + priv->segment_seqnum = GST_SEQNUM_INVALID; priv->timers = g_array_new (FALSE, TRUE, sizeof (TimerData)); priv->rtx_stats_timers = timer_queue_new (); priv->jbuf = rtp_jitter_buffer_new (); @@ -1610,6 +1612,7 @@ gst_rtp_jitter_buffer_flush_stop (GstRtpJitterBuffer * jitterbuffer) priv->last_rtptime = -1; priv->last_in_pts = 0; priv->equidistant = 0; + priv->segment_seqnum = GST_SEQNUM_INVALID; GST_DEBUG_OBJECT (jitterbuffer, "flush and reset jitterbuffer"); rtp_jitter_buffer_flush (priv->jbuf, (GFunc) free_item, NULL); rtp_jitter_buffer_disable_buffering (priv->jbuf, FALSE); @@ -1801,6 +1804,8 @@ queue_event (GstRtpJitterBuffer * jitterbuffer, GstEvent * event) GstSegment segment; gst_event_copy_segment (event, &segment); + priv->segment_seqnum = gst_event_get_seqnum (event); + /* we need time for now */ if (segment.format != GST_FORMAT_TIME) { GST_DEBUG_OBJECT (jitterbuffer, "ignoring non-TIME newsegment"); @@ -1808,6 +1813,7 @@ queue_event (GstRtpJitterBuffer * jitterbuffer, GstEvent * event) gst_segment_init (&segment, GST_FORMAT_TIME); event = gst_event_new_segment (&segment); + gst_event_set_seqnum (event, priv->segment_seqnum); } priv->segment = segment; @@ -3940,8 +3946,13 @@ do_eos_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer, GST_INFO_OBJECT (jitterbuffer, "got the NPT timeout"); remove_timer (jitterbuffer, timer); if (!priv->eos) { + GstEvent *event; + /* there was no EOS in the buffer, put one in there now */ - queue_event (jitterbuffer, gst_event_new_eos ()); + event = gst_event_new_eos (); + if (priv->segment_seqnum != GST_SEQNUM_INVALID) + gst_event_set_seqnum (event, priv->segment_seqnum); + queue_event (jitterbuffer, event); } JBUF_SIGNAL_EVENT (priv); @@ -4208,6 +4219,8 @@ pause: gst_pad_pause_task (priv->srcpad); if (result == GST_FLOW_EOS) { event = gst_event_new_eos (); + if (priv->segment_seqnum != GST_SEQNUM_INVALID) + gst_event_set_seqnum (event, priv->segment_seqnum); gst_pad_push_event (priv->srcpad, event); } return;