[FFmpeg-cvslog] rtpdec: fix issue with conversion from unsigned to signed

Gilles Chanteperdrix git at videolan.org
Sun Feb 22 00:28:25 CET 2015


ffmpeg | branch: master | Gilles Chanteperdrix <gilles.chanteperdrix at xenomai.org> | Fri Feb 20 07:14:53 2015 +0100| [1ec28a66f2c853a7e4aeb21495c0b4d9478f17db] | committer: Martin Storsjö

rtpdec: fix issue with conversion from unsigned to signed

When receiving an RTCP packet, the difference between the last RTCP
timestamp and the base timestamp may be negative. As these timestamps
are of the uint32_t type, the result becomes a large integer. Cast
the difference to int32_t to avoid this issue.

The result of this issue is very large start times for RTSP
streams, and difficulty to restart correctly after a pause.

Signed-off-by: Gilles Chanteperdrix <gilles.chanteperdrix at xenomai.org>
Signed-off-by: Martin Storsjö <martin at martin.st>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1ec28a66f2c853a7e4aeb21495c0b4d9478f17db
---

 libavformat/rtpdec.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c
index 97f1428..522d951 100644
--- a/libavformat/rtpdec.c
+++ b/libavformat/rtpdec.c
@@ -143,7 +143,7 @@ static int rtcp_parse_packet(RTPDemuxContext *s, const unsigned char *buf,
                 s->first_rtcp_ntp_time = s->last_rtcp_ntp_time;
                 if (!s->base_timestamp)
                     s->base_timestamp = s->last_rtcp_timestamp;
-                s->rtcp_ts_offset = s->last_rtcp_timestamp - s->base_timestamp;
+                s->rtcp_ts_offset = (int32_t)(s->last_rtcp_timestamp - s->base_timestamp);
             }
 
             break;



More information about the ffmpeg-cvslog mailing list