[FFmpeg-devel] [PATCH] libavcodec/h264_refs.c: respect ref_frame_count when adding short term refs after a frame num gap
Scott Theisen
scott.the.elm at gmail.com
Thu Nov 14 06:59:13 EET 2024
From: Janne Grunau <jgrunau at mythtv.org>
this silences the "number of reference frames exceeds max
(probably corrupt input), discarding one" message
in the uninteresting cases, i.e. after seeking, playback start
originally from:
https://github.com/MythTV/mythtv/commit/53257097eb6c1fd4259d20bc92f8820a023ec953
referencing:
https://code.mythtv.org/trac/ticket/6729
https://code.mythtv.org/trac/ticket/8367
---
libavcodec/h264_refs.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/libavcodec/h264_refs.c b/libavcodec/h264_refs.c
index 5eb2855065..63ad617268 100644
--- a/libavcodec/h264_refs.c
+++ b/libavcodec/h264_refs.c
@@ -759,6 +759,12 @@ int ff_h264_execute_ref_pic_marking(H264Context *h)
h->short_ref[0] = h->cur_pic_ptr;
h->short_ref_count++;
h->cur_pic_ptr->reference |= h->picture_structure;
+
+ // do not add more reference frames than allowed after seeing frame num gap
+ if (!mmco_count && h->short_ref_count > h->ps.sps->ref_frame_count) {
+ pic = h->short_ref[h->short_ref_count - 1];
+ remove_short(h, pic->frame_num, 0);
+ }
}
}
--
2.43.0
More information about the ffmpeg-devel
mailing list