mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-20 07:16:55 +00:00
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.
This commit is contained in:
parent
247896884b
commit
26f895f4a8
1 changed files with 10 additions and 1 deletions
|
@ -422,8 +422,12 @@ decode_picture (GstVaapiDecoderVp9 * decoder, const guchar * buf,
|
||||||
GST_ERROR ("Failed to create clone picture");
|
GST_ERROR ("Failed to create clone picture");
|
||||||
return GST_VAAPI_DECODER_STATUS_ERROR_ALLOCATION_FAILED;
|
return GST_VAAPI_DECODER_STATUS_ERROR_ALLOCATION_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
is_clone_pic = TRUE;
|
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 {
|
} else {
|
||||||
/* Create new picture */
|
/* Create new picture */
|
||||||
picture = GST_VAAPI_PICTURE_NEW (VP9, decoder);
|
picture = GST_VAAPI_PICTURE_NEW (VP9, decoder);
|
||||||
|
@ -472,16 +476,21 @@ decode_current_picture (GstVaapiDecoderVp9 * decoder)
|
||||||
if (!picture)
|
if (!picture)
|
||||||
return GST_VAAPI_DECODER_STATUS_SUCCESS;
|
return GST_VAAPI_DECODER_STATUS_SUCCESS;
|
||||||
|
|
||||||
|
if (frame_hdr->show_existing_frame)
|
||||||
|
goto ret;
|
||||||
|
|
||||||
if (!gst_vaapi_picture_decode (picture))
|
if (!gst_vaapi_picture_decode (picture))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
update_ref_frames (decoder);
|
update_ref_frames (decoder);
|
||||||
|
|
||||||
|
ret:
|
||||||
if (frame_hdr->show_frame)
|
if (frame_hdr->show_frame)
|
||||||
if (!gst_vaapi_picture_output (picture))
|
if (!gst_vaapi_picture_output (picture))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
gst_vaapi_picture_replace (&priv->current_picture, NULL);
|
gst_vaapi_picture_replace (&priv->current_picture, NULL);
|
||||||
|
|
||||||
return GST_VAAPI_DECODER_STATUS_SUCCESS;
|
return GST_VAAPI_DECODER_STATUS_SUCCESS;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
|
Loading…
Reference in a new issue