From 26f895f4a833535f8dee16e2a556fb93cd504883 Mon Sep 17 00:00:00 2001 From: Sreerenj Balachandran Date: Mon, 16 Nov 2015 18:22:14 +0200 Subject: decoder: vp9: Fix ref picture update while doing repeat frame Don't try to do frame decoding and reference picture update while receiving a vp9 frame having show_existing_frame flag set as TRUE. --- gst-libs/gst/vaapi/gstvaapidecoder_vp9.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_vp9.c b/gst-libs/gst/vaapi/gstvaapidecoder_vp9.c index 5309c490..b97487a5 100644 --- a/gst-libs/gst/vaapi/gstvaapidecoder_vp9.c +++ b/gst-libs/gst/vaapi/gstvaapidecoder_vp9.c @@ -422,8 +422,12 @@ decode_picture (GstVaapiDecoderVp9 * decoder, const guchar * buf, GST_ERROR ("Failed to create clone picture"); return GST_VAAPI_DECODER_STATUS_ERROR_ALLOCATION_FAILED; } - is_clone_pic = TRUE; + + /* for cloned picture we should always unset the skip flag since + * the previously decoded frame might be decode-only but repeat-frame + * should make it ready for display */ + GST_VAAPI_PICTURE_FLAG_UNSET (picture, GST_VAAPI_PICTURE_FLAG_SKIPPED); } else { /* Create new picture */ picture = GST_VAAPI_PICTURE_NEW (VP9, decoder); @@ -472,16 +476,21 @@ decode_current_picture (GstVaapiDecoderVp9 * decoder) if (!picture) return GST_VAAPI_DECODER_STATUS_SUCCESS; + if (frame_hdr->show_existing_frame) + goto ret; + if (!gst_vaapi_picture_decode (picture)) goto error; update_ref_frames (decoder); +ret: if (frame_hdr->show_frame) if (!gst_vaapi_picture_output (picture)) goto error; gst_vaapi_picture_replace (&priv->current_picture, NULL); + return GST_VAAPI_DECODER_STATUS_SUCCESS; error: -- cgit v1.2.1