[FFmpeg-cvslog] rtsp: add option to set the socket timeout of the lower protocol.
Michael Niedermayer
git at videolan.org
Mon Apr 8 17:56:45 CEST 2013
ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sun Apr 7 03:39:56 2013 +0200| [0678c388bac79925a375594977cad3e41cd4c5bd] | committer: Michael Niedermayer
rtsp: add option to set the socket timeout of the lower protocol.
Fixes Ticket2294
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0678c388bac79925a375594977cad3e41cd4c5bd
---
doc/protocols.texi | 5 +++++
libavformat/rtsp.c | 4 +++-
libavformat/rtsp.h | 5 +++++
3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/doc/protocols.texi b/doc/protocols.texi
index 9940b67..0c56b8b 100644
--- a/doc/protocols.texi
+++ b/doc/protocols.texi
@@ -538,6 +538,11 @@ To receive a stream in realtime:
ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp @var{output}
@end example
+ at table @option
+ at item stimeout
+Socket IO timeout in micro seconds.
+ at end table
+
@section sap
Session Announcement Protocol (RFC 2974). This is not technically a
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index fcc134f..dc94f0f 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -91,6 +91,7 @@ const AVOption ff_rtsp_options[] = {
{ "min_port", "Minimum local UDP port", OFFSET(rtp_port_min), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MIN}, 0, 65535, DEC|ENC },
{ "max_port", "Maximum local UDP port", OFFSET(rtp_port_max), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MAX}, 0, 65535, DEC|ENC },
{ "timeout", "Maximum timeout (in seconds) to wait for incoming connections. -1 is infinite. Implies flag listen", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
+ { "stimeout", "timeout (in micro seconds) of socket i/o operations.", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
RTSP_REORDERING_OPTS(),
{ NULL },
};
@@ -1618,7 +1619,8 @@ redirect:
}
} else {
/* open the tcp connection */
- ff_url_join(tcpname, sizeof(tcpname), "tcp", NULL, host, port, NULL);
+ ff_url_join(tcpname, sizeof(tcpname), "tcp", NULL, host, port,
+ "?timeout=%d", rt->stimeout);
if (ffurl_open(&rt->rtsp_hd, tcpname, AVIO_FLAG_READ_WRITE,
&s->interrupt_callback, NULL) < 0) {
err = AVERROR(EIO);
diff --git a/libavformat/rtsp.h b/libavformat/rtsp.h
index 321cd7a..4af3507 100644
--- a/libavformat/rtsp.h
+++ b/libavformat/rtsp.h
@@ -391,6 +391,11 @@ typedef struct RTSPState {
int initial_timeout;
/**
+ * timeout of socket i/o operations.
+ */
+ int stimeout;
+
+ /**
* Size of RTP packet reordering queue.
*/
int reordering_queue_size;
More information about the ffmpeg-cvslog
mailing list