diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-01-13 14:05:55 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-01-13 14:06:01 +0100 |
commit | 3bcf443f91d83dffbcfdafa07d151c2b7028bf04 (patch) | |
tree | 12a6de6dba3e9b19cd9227171d8999f8563235ef /libavformat | |
parent | 6cd1dbe6dffe82e7561a52b731f2cb57a3967bc0 (diff) | |
parent | 22c436c85e0dd81702b4e9289b90755b7310982f (diff) | |
download | ffmpeg-3bcf443f91d83dffbcfdafa07d151c2b7028bf04.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master:
rtpdec: Send a valid "delay since SR" value in the RTCP RR packets
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/rtpdec.c | 5 | ||||
-rw-r--r-- | libavformat/rtpdec.h | 1 |
2 files changed, 4 insertions, 2 deletions
diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c index f78a018a57..44730fd0da 100644 --- a/libavformat/rtpdec.c +++ b/libavformat/rtpdec.c @@ -135,6 +135,7 @@ static int rtcp_parse_packet(RTPDemuxContext *s, const unsigned char *buf, return AVERROR_INVALIDDATA; } + s->last_rtcp_reception_time = av_gettime(); s->last_rtcp_ntp_time = AV_RB64(buf + 8); s->last_rtcp_timestamp = AV_RB32(buf + 16); if (s->first_rtcp_ntp_time == AV_NOPTS_VALUE) { @@ -261,7 +262,6 @@ int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, URLContext *fd, uint32_t lost_interval; uint32_t expected; uint32_t fraction; - uint64_t ntp_time = s->last_rtcp_ntp_time; // TODO: Get local ntp time? if ((!fd && !avio) || (count < 1)) return -1; @@ -315,7 +315,8 @@ int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, URLContext *fd, avio_wb32(pb, 0); /* delay since last SR */ } else { uint32_t middle_32_bits = s->last_rtcp_ntp_time >> 16; // this is valid, right? do we need to handle 64 bit values special? - uint32_t delay_since_last = ntp_time - s->last_rtcp_ntp_time; + uint32_t delay_since_last = av_rescale(av_gettime() - s->last_rtcp_reception_time, + 65536, AV_TIME_BASE); avio_wb32(pb, middle_32_bits); /* last SR timestamp */ avio_wb32(pb, delay_since_last); /* delay since last SR */ diff --git a/libavformat/rtpdec.h b/libavformat/rtpdec.h index b8eb2f9f1c..f40eae2079 100644 --- a/libavformat/rtpdec.h +++ b/libavformat/rtpdec.h @@ -175,6 +175,7 @@ struct RTPDemuxContext { /* rtcp sender statistics receive */ int64_t last_rtcp_ntp_time; + int64_t last_rtcp_reception_time; int64_t first_rtcp_ntp_time; uint32_t last_rtcp_timestamp; int64_t rtcp_ts_offset; |