[FFmpeg-cvslog] rtpdec: Move the URLContext used for RTCP RR out from the context, to a parameter

Martin Storsjö git at videolan.org
Fri Jan 4 13:22:36 CET 2013


ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Wed Oct 17 16:05:24 2012 +0300| [3f95f0dda55fca74b646937095a02a8fa9776622] | committer: Martin Storsjö

rtpdec: Move the URLContext used for RTCP RR out from the context, to a parameter

Signed-off-by: Martin Storsjö <martin at martin.st>

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

 libavformat/rtpdec.c |   10 ++++------
 libavformat/rtpdec.h |    8 +++-----
 libavformat/rtsp.c   |    4 ++--
 3 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c
index 1043930..77df188 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 98e266a..2d962c8 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 8142094..d5b3242 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -643,7 +643,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);
 
@@ -1860,7 +1860,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 &&



More information about the ffmpeg-cvslog mailing list