From 4ee616761678f1f76bc02cfdc5956cd04cbe3178 Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Thu, 5 Nov 2020 18:09:06 -0500 Subject: [PATCH] h264dec: Fix POC calculation for type 0 This is mostly for future use as it only fixes the caclulation for interlaced cases, the case of frame seemed correct already. Part-of: --- gst-libs/gst/codecs/gsth264decoder.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/gst-libs/gst/codecs/gsth264decoder.c b/gst-libs/gst/codecs/gsth264decoder.c index 353fc5d52a..9fdca7cab3 100644 --- a/gst-libs/gst/codecs/gsth264decoder.c +++ b/gst-libs/gst/codecs/gsth264decoder.c @@ -1229,15 +1229,21 @@ gst_h264_decoder_calculate_poc (GstH264Decoder * self, GstH264Picture * picture) picture->pic_order_cnt_msb + picture->pic_order_cnt_lsb; } - if (picture->field != GST_H264_PICTURE_FIELD_TOP_FIELD) { - if (GST_H264_PICTURE_IS_FRAME (picture)) { - picture->bottom_field_order_cnt = - picture->top_field_order_cnt + + switch (picture->field) { + case GST_H264_PICTURE_FIELD_FRAME: + picture->top_field_order_cnt = picture->pic_order_cnt_msb + + picture->pic_order_cnt_lsb; + picture->bottom_field_order_cnt = picture->top_field_order_cnt + picture->delta_pic_order_cnt_bottom; - } else { - picture->bottom_field_order_cnt = - picture->pic_order_cnt_msb + picture->pic_order_cnt_lsb; - } + break; + case GST_H264_PICTURE_FIELD_TOP_FIELD: + picture->top_field_order_cnt = picture->pic_order_cnt_msb + + picture->pic_order_cnt_lsb; + break; + case GST_H264_PICTURE_FIELD_BOTTOM_FIELD: + picture->bottom_field_order_cnt = picture->pic_order_cnt_msb + + picture->pic_order_cnt_lsb; + break; } break; }