summaryrefslogtreecommitdiff
path: root/libavformat/aviobuf.c
diff options
context:
space:
mode:
authorAndriy Gelman <andriy.gelman@gmail.com>2021-03-13 23:54:32 -0500
committerAndriy Gelman <andriy.gelman@gmail.com>2021-03-16 22:46:25 -0400
commit9383885c0d2155b1f9e65c08c3f35d190ae2ba98 (patch)
tree2394a61e4ba9d0ecd01d292ed12819f1e24bfa2c /libavformat/aviobuf.c
parent30a69b1625818dda865221c3368155f398540c7b (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>
Diffstat (limited to 'libavformat/aviobuf.c')
-rw-r--r--libavformat/aviobuf.c10
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);