From ae7c20a6edba33d24f7dced9f55c8f7c192c07b2 Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Sun, 10 Jan 2021 23:16:55 +0900 Subject: [PATCH] codecs: h264picture: Count only complete complementary field pair for dpb fullness decision Our DPB implementation was designed as such that allowing temporary DPB overflow in the middle of field picture decoding and incomplete field pair should not trigger DPB bumping. Part-of: --- gst-libs/gst/codecs/gsth264picture.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gst-libs/gst/codecs/gsth264picture.c b/gst-libs/gst/codecs/gsth264picture.c index be5013d20e..90fa1c3469 100644 --- a/gst-libs/gst/codecs/gsth264picture.c +++ b/gst-libs/gst/codecs/gsth264picture.c @@ -596,7 +596,7 @@ gst_h264_dpb_has_empty_frame_buffer (GstH264Dpb * dpb) } else { gint i; gint count = 0; - /* Count pictures without second fields */ + /* Count the number of complementary field pairs */ for (i = 0; i < dpb->pic_list->len; i++) { GstH264Picture *picture = g_array_index (dpb->pic_list, GstH264Picture *, i); @@ -604,7 +604,8 @@ gst_h264_dpb_has_empty_frame_buffer (GstH264Dpb * dpb) if (picture->second_field) continue; - count++; + if (GST_H264_PICTURE_IS_FRAME (picture) || picture->other_field) + count++; } if (count <= dpb->max_num_frames)