mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-10 03:19:40 +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");
|
||||
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:
|
||||
|
|
Loading…
Reference in a new issue