aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>2016-04-18 15:47:05 +0100
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>2016-04-18 15:47:54 +0100
commit299d4f9428c2f4d16a1575d80d80caacdd850606 (patch)
tree79ed46565ed50be08459daa2d66f5f5789fb625d
parent4eef36a4f6db1feb9d628337bd96e07a9b482c1a (diff)
parentccea588f831906084b8c8235222920e6984beb72 (diff)
downloadffmpeg-299d4f9428c2f4d16a1575d80d80caacdd850606.tar.gz
Merge commit 'ccea588f831906084b8c8235222920e6984beb72'
* commit 'ccea588f831906084b8c8235222920e6984beb72': avio: Add an option 'rw_timeout' Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
-rw-r--r--doc/protocols.texi8
-rw-r--r--libavformat/avio.c5
-rw-r--r--libavformat/version.h2
3 files changed, 13 insertions, 2 deletions
diff --git a/doc/protocols.texi b/doc/protocols.texi
index 375d0428ae..cfd7be7cf3 100644
--- a/doc/protocols.texi
+++ b/doc/protocols.texi
@@ -36,6 +36,14 @@ particular protocol using the option
The option "-protocols" of the ff* tools will display the list of
supported protocols.
+All protocols accept the following options:
+
+@table @option
+@item rw_timeout
+Maximum time to wait for (network) read/write operations to complete,
+in microseconds.
+@end table
+
A description of the currently available protocols follows.
@section async
diff --git a/libavformat/avio.c b/libavformat/avio.c
index 4b10dd8f39..7e68c9a6e9 100644
--- a/libavformat/avio.c
+++ b/libavformat/avio.c
@@ -56,6 +56,7 @@ static void *urlcontext_child_next(void *obj, void *prev)
static const AVOption options[] = {
{"protocol_whitelist", "List of protocols that are allowed to be used", OFFSET(protocol_whitelist), AV_OPT_TYPE_STRING, { .str = NULL }, CHAR_MIN, CHAR_MAX, D },
{"protocol_blacklist", "List of protocols that are not allowed to be used", OFFSET(protocol_blacklist), AV_OPT_TYPE_STRING, { .str = NULL }, CHAR_MIN, CHAR_MAX, D },
+ {"rw_timeout", "Timeout for IO operations (in microseconds)", offsetof(URLContext, rw_timeout), AV_OPT_TYPE_INT64, { .i64 = 0 }, 0, INT64_MAX, AV_OPT_FLAG_ENCODING_PARAM | AV_OPT_FLAG_DECODING_PARAM },
{ NULL }
};
@@ -388,8 +389,10 @@ static inline int retry_transfer_wrapper(URLContext *h, uint8_t *buf,
}
} else if (ret < 1)
return (ret < 0 && ret != AVERROR_EOF) ? ret : len;
- if (ret)
+ if (ret) {
fast_retries = FFMAX(fast_retries, 2);
+ wait_since = 0;
+ }
len += ret;
}
return len;
diff --git a/libavformat/version.h b/libavformat/version.h
index 8504468d59..93b87ebe0e 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -31,7 +31,7 @@
#define LIBAVFORMAT_VERSION_MAJOR 57
#define LIBAVFORMAT_VERSION_MINOR 34
-#define LIBAVFORMAT_VERSION_MICRO 101
+#define LIBAVFORMAT_VERSION_MICRO 102
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
LIBAVFORMAT_VERSION_MINOR, \