aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>2015-02-20 07:14:53 +0100
committerMichael Niedermayer <michaelni@gmx.at>2015-02-21 14:18:52 +0100
commit73029abddc14c8a376ff81968fe9b1e171e4e9eb (patch)
tree0a26e87f592fdbe9946e192d7e22c17d1cc4d7fd
parente3cc93aacfcbb2111e3520355d414b55b48f9426 (diff)
downloadandroid_external_ffmpeg-73029abddc14c8a376ff81968fe9b1e171e4e9eb.tar.gz
android_external_ffmpeg-73029abddc14c8a376ff81968fe9b1e171e4e9eb.tar.bz2
android_external_ffmpeg-73029abddc14c8a376ff81968fe9b1e171e4e9eb.zip
libavformat/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@xenomai.org> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavformat/rtpdec.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c
index 1866bda010..b4637e2c6f 100644
--- a/libavformat/rtpdec.c
+++ b/libavformat/rtpdec.c
@@ -161,7 +161,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;