[FFmpeg-devel] [PATCH] avformat/aviobuf: don't reduce short seek threshold

Martin Storsjö martin at martin.st
Mon Mar 15 11:52:22 EET 2021


On Sat, 13 Mar 2021, Andriy Gelman wrote:

> From: Andriy Gelman <andriy.gelman at gmail.com>
>
> 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 the 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
> 70d8077b795766e2486e6ec8110f22a97362d6d7. As in Ticket #9148 it reduced

This commit reference is typoed, the last char should be a 6, not a 7.

> 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.
>
> Signed-off-by: Andriy Gelman <andriy.gelman at gmail.com>
> ---
> libavformat/aviobuf.c | 10 +++-------
> 1 file 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);
> -- 
> 2.30.2

LGTM, thanks!

// Martin



More information about the ffmpeg-devel mailing list