[FFmpeg-cvslog] avcodec/h264: fix reference reordering
averne
git at videolan.org
Tue Apr 8 16:05:50 EEST 2025
ffmpeg | branch: master | averne <averne381 at gmail.com> | Sun Mar 23 21:15:18 2025 +0100| [02eda84bf2fcf0db7793872204b0f564a6557232] | committer: Zhao Zhili
avcodec/h264: fix reference reordering
Fixes hardware decoders depending on long_term_pic_idx.
Relevant ITU conformance test vectors: MR6_BT_B, MR8_BT_B
Signed-off-by: Zhao Zhili <zhilizhao at tencent.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=02eda84bf2fcf0db7793872204b0f564a6557232
---
libavcodec/h264_refs.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/libavcodec/h264_refs.c b/libavcodec/h264_refs.c
index 050ca92292..74840e5909 100644
--- a/libavcodec/h264_refs.c
+++ b/libavcodec/h264_refs.c
@@ -337,7 +337,7 @@ int ff_h264_build_ref_list(H264Context *h, H264SliceContext *sl)
break;
}
if (i >= 0)
- ref->pic_id = pred;
+ pic_id = pred;
break;
}
case 2: {
@@ -354,7 +354,6 @@ int ff_h264_build_ref_list(H264Context *h, H264SliceContext *sl)
ref = h->long_ref[long_idx];
assert(!(ref && !ref->reference));
if (ref && (ref->reference & pic_structure)) {
- ref->pic_id = pic_id;
assert(ref->long_ref);
i = 0;
} else {
@@ -376,7 +375,7 @@ int ff_h264_build_ref_list(H264Context *h, H264SliceContext *sl)
for (i = index; i + 1 < sl->ref_count[list]; i++) {
if (sl->ref_list[list][i].parent &&
ref->long_ref == sl->ref_list[list][i].parent->long_ref &&
- ref->pic_id == sl->ref_list[list][i].pic_id)
+ pic_id == sl->ref_list[list][i].pic_id)
break;
}
for (; i > index; i--) {
More information about the ffmpeg-cvslog
mailing list