From: Sebastian Dröge Date: Mon, 18 May 2015 14:08:53 +0000 (+0300) Subject: rtpsource: Allow sequence number wraparound during probation X-Git-Tag: 1.19.3~509^2~3623 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1974b24ef4572ef30eb5556456a7dd29f74f4699;p=platform%2Fupstream%2Fgstreamer.git rtpsource: Allow sequence number wraparound during probation --- diff --git a/gst/rtpmanager/rtpsource.c b/gst/rtpmanager/rtpsource.c index 2e984e3..0ef9e1f 100644 --- a/gst/rtpmanager/rtpsource.c +++ b/gst/rtpmanager/rtpsource.c @@ -1017,14 +1017,19 @@ update_receiver_stats (RTPSource * src, RTPPacketInfo * pinfo) /* if we are still on probation, check seqnum */ if (src->curr_probation) { - expected = src->stats.max_seq + 1; + expected = (src->stats.max_seq + 1) & (RTP_SEQ_MOD - 1); /* when in probation, we require consecutive seqnums */ if (seqnr == expected) { /* expected packet */ GST_DEBUG ("probation: seqnr %d == expected %d", seqnr, expected); src->curr_probation--; + if (seqnr < stats->max_seq) { + /* sequence number wrapped - count another 64K cycle. */ + stats->cycles += RTP_SEQ_MOD; + } src->stats.max_seq = seqnr; + if (src->curr_probation == 0) { GST_DEBUG ("probation done!"); init_seq (src, seqnr);