From 8799a8044d0f0dae1c8f61310990b1222d1d5366 Mon Sep 17 00:00:00 2001 From: Sreerenj Balachandran Date: Fri, 4 Sep 2015 22:02:55 +0300 Subject: [PATCH] decoder: hevc: Fix the picture addition in dpb() based on spec H265 v3 (04/2015) This fix is based on the V3 vesion of spec which was missing in older versions. When the current picture has PicOutputFlag equal to 1, for each picture in the DPB that is marked as "needed for output" and follows the current picture in output order, the associated variable PicLatencyCount is set equal to PicLatencyCount + 1 (C.5.2.3). https://bugzilla.gnome.org/show_bug.cgi?id=754010 --- gst-libs/gst/vaapi/gstvaapidecoder_h265.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_h265.c b/gst-libs/gst/vaapi/gstvaapidecoder_h265.c index 4bd947e0d1..ba2ab395dd 100644 --- a/gst-libs/gst/vaapi/gstvaapidecoder_h265.c +++ b/gst-libs/gst/vaapi/gstvaapidecoder_h265.c @@ -816,12 +816,14 @@ dpb_add (GstVaapiDecoderH265 * decoder, GstVaapiPictureH265 * picture) guint i = 0; /* C.5.2.3 */ - while (i < priv->dpb_count) { - GstVaapiFrameStore *const fs = priv->dpb[i]; - tmp_pic = fs->buffer; - if (tmp_pic->output_needed) - tmp_pic->pic_latency_cnt += 1; - i++; + if (picture->output_flag) { + while (i < priv->dpb_count) { + GstVaapiFrameStore *const fs = priv->dpb[i]; + tmp_pic = fs->buffer; + if (tmp_pic->output_needed) + tmp_pic->pic_latency_cnt += 1; + i++; + } } if (picture->output_flag) { -- 2.34.1