Den fre 14 maj 2021 21:42Gustav Grusell <gustav.grus...@gmail.com> skrev:
> 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; > + /* 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; > } > Did anyone find time to look at this? Any comments? Cheers, Gustav > _______________________________________________ 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".