mirror of https://git.ffmpeg.org/ffmpeg.git
avformat/av1dec: Flush BSF upon seeking
The av1_merge_frame BSF outputs its cached data when it sees the beginning of a new frame, i.e. when it sees a temporal delimiter OBU. Therefore it typically has a temporal delimiter OBU cached after outputting a packet. This implies that the OBU demuxer must flush its BSF upon seeking because otherwise the first frame returned after a seek consists of an old temporal delimiter OBU only. Reviewed-by: James Almer <jamrial@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
4d200342a7
commit
3f938cd46a
|
@ -390,6 +390,10 @@ static int obu_read_packet(AVFormatContext *s, AVPacket *pkt)
|
|||
AV1DemuxContext *const c = s->priv_data;
|
||||
int ret;
|
||||
|
||||
if (s->io_repositioned) {
|
||||
av_bsf_flush(c->bsf);
|
||||
s->io_repositioned = 0;
|
||||
}
|
||||
while (1) {
|
||||
ret = obu_get_packet(s, pkt);
|
||||
/* In case of AVERROR_EOF we need to flush the BSF. Conveniently
|
||||
|
|
Loading…
Reference in New Issue