diff options
author | Andriy Gelman <andriy.gelman@gmail.com> | 2021-03-13 23:54:32 -0500 |
---|---|---|
committer | Andriy Gelman <andriy.gelman@gmail.com> | 2021-03-16 22:46:25 -0400 |
commit | 9383885c0d2155b1f9e65c08c3f35d190ae2ba98 (patch) | |
tree | 2394a61e4ba9d0ecd01d292ed12819f1e24bfa2c | |
parent | 30a69b1625818dda865221c3368155f398540c7b (diff) |
avformat/aviobuf: don't reduce short seek threshold
Commit 8c8e5d5286bf598a89ef9993a2cf6ea409d03a32 added a way to reduce
seek time by waiting for the windowed tcp packets instead of creating a
new socket connection. It implemented this by overwriting
s->short_seek_threshold in avio_seek(). However,
s->short_seek_threshold could already be set and be higher than the
threshold set by the protocol (i.e. s->short_seek_threshold is set in
ff_configure_buffers_for_index()).
This new feature was only enabled for tls connections in
70d8077b795766e2486e6ec8110f22a97362d6d6. As in Ticket #9148 it reduced
performance because instead of waiting to refill the AVIOContext buffers
with an existing connections, a new HTTP request was often made instead.
Fixes Ticket #9148.
Reviewed-by: Martin Storsjö <martin@martin.st>
Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
-rw-r--r-- | libavformat/aviobuf.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index 78cc60b2ae..518cb11129 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -283,13 +283,9 @@ int64_t avio_seek(AVIOContext *s, int64_t offset, int whence) if (offset < 0) return AVERROR(EINVAL); - if (s->short_seek_get) { - short_seek = s->short_seek_get(s->opaque); - /* fallback to default short seek */ - if (short_seek <= 0) - short_seek = s->short_seek_threshold; - } else - short_seek = s->short_seek_threshold; + short_seek = s->short_seek_threshold; + if (s->short_seek_get) + short_seek = FFMAX(s->short_seek_get(s->opaque), short_seek); offset1 = offset - pos; // "offset1" is the relative offset from the beginning of s->buffer s->buf_ptr_max = FFMAX(s->buf_ptr_max, s->buf_ptr); |