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

Andriy Gelman andriy.gelman at gmail.com
Wed Mar 17 04:44:38 EET 2021


On Mon, 15. Mar 11:52, Martin Storsjö wrote:
> 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!

Thanks, will apply with the typo fix.

-- 
Andriy


More information about the ffmpeg-devel mailing list