diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-01-04 13:13:01 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-01-04 13:13:30 +0100 |
commit | ea96feddb7bb813c1e0c9befe9c96bf73996f841 (patch) | |
tree | 1669d72b0c1baeb033c3b2f28faf62ccd53978e5 | |
parent | e1cf1a9c89dbb3b867c50421cf543221a4d223f9 (diff) | |
parent | 3f95f0dda55fca74b646937095a02a8fa9776622 (diff) | |
download | ffmpeg-ea96feddb7bb813c1e0c9befe9c96bf73996f841.tar.gz |
Merge commit '3f95f0dda55fca74b646937095a02a8fa9776622'
* commit '3f95f0dda55fca74b646937095a02a8fa9776622':
rtpdec: Move the URLContext used for RTCP RR out from the context, to a parameter
Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavformat/rtpdec.c | 10 | ||||
-rw-r--r-- | libavformat/rtpdec.h | 8 | ||||
-rw-r--r-- | libavformat/rtsp.c | 4 |
3 files changed, 9 insertions, 13 deletions
diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c index 8a80e03b77..5412e6735b 100644 --- a/libavformat/rtpdec.c +++ b/libavformat/rtpdec.c @@ -226,7 +226,7 @@ static int rtp_valid_packet_in_sequence(RTPStatistics *s, uint16_t seq) return 1; } -int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, int count) +int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, URLContext *fd, int count) { AVIOContext *pb; uint8_t *buf; @@ -242,7 +242,7 @@ int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, int count) uint32_t fraction; uint64_t ntp_time = s->last_rtcp_ntp_time; // TODO: Get local ntp time? - if (!s->rtp_ctx || (count < 1)) + if (!fd || (count < 1)) return -1; /* TODO: I think this is way too often; RFC 1889 has algorithm for this */ @@ -316,7 +316,7 @@ int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, int count) if ((len > 0) && buf) { int av_unused result; av_dlog(s->ic, "sending %d bytes of RR\n", len); - result = ffurl_write(s->rtp_ctx, buf, len); + result = ffurl_write(fd, buf, len); av_dlog(s->ic, "result from ffurl_write: %d\n", result); av_free(buf); } @@ -367,8 +367,7 @@ void ff_rtp_send_punch_packets(URLContext *rtp_handle) * rtp demux (otherwise AV_CODEC_ID_MPEG2TS packets are returned) */ RTPDemuxContext *ff_rtp_parse_open(AVFormatContext *s1, AVStream *st, - URLContext *rtpc, int payload_type, - int queue_size) + int payload_type, int queue_size) { RTPDemuxContext *s; @@ -413,7 +412,6 @@ RTPDemuxContext *ff_rtp_parse_open(AVFormatContext *s1, AVStream *st, } } // needed to send back RTCP RR in RTSP sessions - s->rtp_ctx = rtpc; gethostname(s->hostname, sizeof(s->hostname)); return s; } diff --git a/libavformat/rtpdec.h b/libavformat/rtpdec.h index fb1acc279d..407c6d005d 100644 --- a/libavformat/rtpdec.h +++ b/libavformat/rtpdec.h @@ -40,8 +40,7 @@ typedef struct RTPDynamicProtocolHandler RTPDynamicProtocolHandler; typedef struct RTPDemuxContext RTPDemuxContext; RTPDemuxContext *ff_rtp_parse_open(AVFormatContext *s1, AVStream *st, - URLContext *rtpc, int payload_type, - int queue_size); + int payload_type, int queue_size); void ff_rtp_parse_set_dynamic_protocol(RTPDemuxContext *s, PayloadContext *ctx, RTPDynamicProtocolHandler *handler); int ff_rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt, @@ -69,10 +68,10 @@ void ff_rtp_send_punch_packets(URLContext* rtp_handle); /** * some rtp servers assume client is dead if they don't hear from them... - * so we send a Receiver Report to the provided ByteIO context + * so we send a Receiver Report to the provided URLContext * (we don't have access to the rtcp handle from here) */ -int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, int count); +int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, URLContext *fd, int count); // these statistics are used for rtcp receiver reports... typedef struct RTPStatistics { @@ -158,7 +157,6 @@ struct RTPDemuxContext { int read_buf_index; int read_buf_size; /* used to send back RTCP RR */ - URLContext *rtp_ctx; char hostname[256]; /** Statistics for this stream (used by RTCP receiver reports) */ diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index 04ea47cbf5..bac075295f 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -644,7 +644,7 @@ int ff_rtsp_open_transport_ctx(AVFormatContext *s, RTSPStream *rtsp_st) rtsp_st->dynamic_protocol_context, rtsp_st->dynamic_handler); else if (CONFIG_RTPDEC) - rtsp_st->transport_priv = ff_rtp_parse_open(s, st, rtsp_st->rtp_handle, + rtsp_st->transport_priv = ff_rtp_parse_open(s, st, rtsp_st->sdp_payload_type, reordering_queue_size); @@ -1856,7 +1856,7 @@ int ff_rtsp_fetch_packet(AVFormatContext *s, AVPacket *pkt) case RTSP_LOWER_TRANSPORT_UDP_MULTICAST: len = udp_read_packet(s, &rtsp_st, rt->recvbuf, RECVBUF_SIZE, wait_end); if (len > 0 && rtsp_st->transport_priv && rt->transport == RTSP_TRANSPORT_RTP) - ff_rtp_check_and_send_back_rr(rtsp_st->transport_priv, len); + ff_rtp_check_and_send_back_rr(rtsp_st->transport_priv, rtsp_st->rtp_handle, len); break; } if (len == AVERROR(EAGAIN) && first_queue_st && |