On Fri, 14 May 2021 21:42:25 +0200 Gustav Grusell <gustav.grus...@gmail.com> wrote:
> Before, seeking in hls streams would always seek to the next keyframe > after the given timestamp. With this fix, if AVSEEK_FLAG_BACKWARD is > set, seeking will be to the first keyframe of the segment containing > the given timestamp. This fixes #6850. --- > libavformat/hls.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/libavformat/hls.c b/libavformat/hls.c > index 8fc6924c90..3f1fd2cb70 100644 > --- a/libavformat/hls.c > +++ b/libavformat/hls.c > @@ -2199,10 +2199,15 @@ static int hls_read_packet(AVFormatContext > *s, AVPacket *pkt) > tb = get_timebase(pls); > ts_diff = av_rescale_rnd(pls->pkt->dts, > AV_TIME_BASE, > - tb.den, AV_ROUND_DOWN) - > - pls->seek_timestamp; > - if (ts_diff >= 0 && (pls->seek_flags & > AVSEEK_FLAG_ANY || > - pls->pkt->flags & > AV_PKT_FLAG_KEY)) { > + tb.den, AV_ROUND_DOWN) - > + pls->seek_timestamp; only format change, maybe better to revert if you don't mean to do so :) > + /* If AVSEEK_FLAG_BACKWARD set and not > AVSEEK_FLAG_ANY, > + * we return the first keyframe encountered */ > + if ((pls->seek_flags & AVSEEK_FLAG_BACKWARD && > + !(pls->seek_flags & AVSEEK_FLAG_ANY) && > + pls->pkt->flags & AV_PKT_FLAG_KEY) || > + (ts_diff >= 0 && (pls->seek_flags & > AVSEEK_FLAG_ANY || > + pls->pkt->flags & > AV_PKT_FLAG_KEY))) { pls->seek_timestamp = AV_NOPTS_VALUE; > break; > } Regards, Lingjiang Fang _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".