From 08b4aaa7fa821d163d5f35aead668be8053686b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Manuel=20J=C3=A1quez=20Leal?= Date: Mon, 19 Oct 2020 13:42:53 +0200 Subject: libs: decoder: vp9: avoid reference rewriting The removed code set all the reference frames to the current frame it is a key one, but later, all the reference frames were rewritten with the decoded picture buffers or VA_INVALID_SURFACE if they were not available. Basically, all this time the first reference frame assignment has been ignored, and it's not described by the spec, and this patch removes that code. Part-of: --- gst-libs/gst/vaapi/gstvaapidecoder_vp9.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_vp9.c b/gst-libs/gst/vaapi/gstvaapidecoder_vp9.c index 0f6a300f..134a0317 100644 --- a/gst-libs/gst/vaapi/gstvaapidecoder_vp9.c +++ b/gst-libs/gst/vaapi/gstvaapidecoder_vp9.c @@ -303,11 +303,7 @@ vaapi_fill_ref_frames (GstVaapiDecoderVp9 * decoder, GstVaapiPicture * picture, GstVaapiDecoderVp9Private *const priv = &decoder->priv; guint i; - if (frame_hdr->frame_type == GST_VP9_KEY_FRAME) { - for (i = 0; i < G_N_ELEMENTS (priv->ref_frames); i++) - pic_param->reference_frames[i] = picture->surface_id; - - } else { + if (frame_hdr->frame_type != GST_VP9_KEY_FRAME) { pic_param->pic_fields.bits.last_ref_frame = frame_hdr->ref_frame_indices[GST_VP9_REF_FRAME_LAST - 1]; pic_param->pic_fields.bits.last_ref_frame_sign_bias = @@ -321,6 +317,7 @@ vaapi_fill_ref_frames (GstVaapiDecoderVp9 * decoder, GstVaapiPicture * picture, pic_param->pic_fields.bits.alt_ref_frame_sign_bias = frame_hdr->ref_frame_sign_bias[GST_VP9_REF_FRAME_ALTREF - 1]; } + for (i = 0; i < G_N_ELEMENTS (priv->ref_frames); i++) { pic_param->reference_frames[i] = priv->ref_frames[i] ? priv->ref_frames[i]->surface_id : VA_INVALID_SURFACE; -- cgit v1.2.1