* commit 'e96406eda4':
  rtsp: Add support for depacketizing RTP data via custom IO

Conflicts:
	libavformat/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2013-01-04 13:23:19 +01:00
commit 8d0b2aae71
5 changed files with 84 additions and 18 deletions

View file

@ -226,7 +226,8 @@ static int rtp_valid_packet_in_sequence(RTPStatistics *s, uint16_t seq)
return 1;
}
int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, URLContext *fd, int count)
int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, URLContext *fd,
AVIOContext *avio, int count)
{
AVIOContext *pb;
uint8_t *buf;
@ -242,7 +243,7 @@ int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, URLContext *fd, int count)
uint32_t fraction;
uint64_t ntp_time = s->last_rtcp_ntp_time; // TODO: Get local ntp time?
if (!fd || (count < 1))
if ((!fd && !avio) || (count < 1))
return -1;
/* TODO: I think this is way too often; RFC 1889 has algorithm for this */
@ -255,7 +256,9 @@ int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, URLContext *fd, int count)
return -1;
s->last_octet_count = s->octet_count;
if (avio_open_dyn_buf(&pb) < 0)
if (!fd)
pb = avio;
else if (avio_open_dyn_buf(&pb) < 0)
return -1;
// Receiver Report
@ -312,6 +315,8 @@ int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, URLContext *fd, int count)
avio_w8(pb, 0);
avio_flush(pb);
if (!fd)
return 0;
len = avio_close_dyn_buf(pb, &buf);
if ((len > 0) && buf) {
int av_unused result;