For some non-standard clip which contains multiple display frame data in a ivf packet, drop the redundant frame can make the decode continuously with some warning message shown. Otherwise decode will interrupt with unexpected error.
Signed-off-by: Fei Wang <[email protected]> --- libavcodec/av1dec.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index db110c50c7..58d10672c1 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -916,6 +916,16 @@ static int set_output_frame(AVCodecContext *avctx, AVFrame *frame, av_log2(s->operating_point_idc >> 8) > s->cur_frame.spatial_id) return 0; + /** + * Drop redundant frame data if there already exist one. Return 0 will + * make sure all frames can be decoded and maintainers a correct reference + * list. + */ + if (*got_frame) { + av_log(avctx, AV_LOG_WARNING, "Redundant frame data dropped!\n"); + return 0; + } + ret = av_frame_ref(frame, srcframe); if (ret < 0) return ret; -- 2.25.1 _______________________________________________ ffmpeg-devel mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
