From 0678c388bac79925a375594977cad3e41cd4c5bd Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 7 Apr 2013 03:39:56 +0200 Subject: [PATCH] rtsp: add option to set the socket timeout of the lower protocol. Fixes Ticket2294 Signed-off-by: Michael Niedermayer --- 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 9940b67d57..0c56b8b510 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 +@table @option +@item stimeout +Socket IO timeout in micro seconds. +@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 fcc134f06f..dc94f0f795 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 321cd7a1f8..4af3507d73 100644 --- a/libavformat/rtsp.h +++ b/libavformat/rtsp.h @@ -390,6 +390,11 @@ typedef struct RTSPState { */ int initial_timeout; + /** + * timeout of socket i/o operations. + */ + int stimeout; + /** * Size of RTP packet reordering queue. */