[FFmpeg-cvslog] rtsp: Set the default delay to 0.1 s for the RTSP/SDP/RTP demuxers

Martin Storsjö git at videolan.org
Wed Mar 21 02:35:01 CET 2012


ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Mon Mar 19 20:40:23 2012 +0200| [ccfa8aa26f666372f47d69bc49e420a9b4239626] | committer: Martin Storsjö

rtsp: Set the default delay to 0.1 s for the RTSP/SDP/RTP demuxers

This enables reordering of UDP packets by default, unless the caller
explicitly sets -max_delay 0.

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

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

 doc/protocols.texi |    6 +++---
 libavformat/rtsp.c |    5 +++--
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/doc/protocols.texi b/doc/protocols.texi
index 0eb4c69..b08233e 100644
--- a/doc/protocols.texi
+++ b/doc/protocols.texi
@@ -288,9 +288,9 @@ Accept packets only from negotiated peer address and port.
 @end table
 
 When receiving data over UDP, the demuxer tries to reorder received packets
-(since they may arrive out of order, or packets may get lost totally). In
-order for this to be enabled, a maximum delay must be specified in the
- at code{max_delay} field of AVFormatContext.
+(since they may arrive out of order, or packets may get lost totally). This
+can be disabled by setting the maximum demuxing delay to zero (via
+the @code{max_delay} field of AVFormatContext).
 
 When watching multi-bitrate Real-RTSP streams with @file{avplay}, the
 streams to display can be chosen with @code{-vst} @var{n} and
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index 7afd106..07cf809 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -56,6 +56,7 @@
 #define MAX_TIMEOUTS READ_PACKET_TIMEOUT_S * 1000 / POLL_TIMEOUT_MS
 #define SDP_MAX_SIZE 16384
 #define RECVBUF_SIZE 10 * RTP_MAX_PACKET_LENGTH
+#define DEFAULT_REORDERING_DELAY 100000
 
 #define OFFSET(x) offsetof(RTSPState, x)
 #define DEC AV_OPT_FLAG_DECODING_PARAM
@@ -1427,7 +1428,7 @@ int ff_rtsp_connect(AVFormatContext *s)
         return AVERROR(EIO);
 
     if (s->max_delay < 0) /* Not set by the caller */
-        s->max_delay = 0;
+        s->max_delay = s->iformat ? DEFAULT_REORDERING_DELAY : 0;
 
     rt->control_transport = RTSP_MODE_PLAIN;
     if (rt->lower_transport_mask & (1 << RTSP_LOWER_TRANSPORT_HTTP)) {
@@ -1870,7 +1871,7 @@ static int sdp_read_header(AVFormatContext *s)
         return AVERROR(EIO);
 
     if (s->max_delay < 0) /* Not set by the caller */
-        s->max_delay = 0;
+        s->max_delay = DEFAULT_REORDERING_DELAY;
 
     /* read the whole sdp file */
     /* XXX: better loading */



More information about the ffmpeg-cvslog mailing list