mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-01 22:21:13 +00:00
d3d11: d3d11vp9dec: Fix use_prev_in_find_mv_refs value setting
"last_show_frame" should be updated based on GstVp9FrameHeader::show_frame, not show_existing_frame Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1021>
This commit is contained in:
parent
571aad3980
commit
6a756b9f46
1 changed files with 8 additions and 10 deletions
|
@ -420,13 +420,9 @@ gst_d3d11_vp9_dec_duplicate_picture (GstVp9Decoder * decoder,
|
||||||
GstVideoCodecFrame * frame, GstVp9Picture * picture)
|
GstVideoCodecFrame * frame, GstVp9Picture * picture)
|
||||||
{
|
{
|
||||||
GstD3D11Vp9Dec *self = GST_D3D11_VP9_DEC (decoder);
|
GstD3D11Vp9Dec *self = GST_D3D11_VP9_DEC (decoder);
|
||||||
GstD3D11Vp9DecInner *inner = self->inner;
|
|
||||||
GstBuffer *view_buffer;
|
GstBuffer *view_buffer;
|
||||||
GstVp9Picture *new_picture;
|
GstVp9Picture *new_picture;
|
||||||
|
|
||||||
/* This method is called when show_frame == FALSE */
|
|
||||||
inner->last_show_frame = FALSE;
|
|
||||||
|
|
||||||
view_buffer = (GstBuffer *) gst_vp9_picture_get_user_data (picture);
|
view_buffer = (GstBuffer *) gst_vp9_picture_get_user_data (picture);
|
||||||
|
|
||||||
if (!view_buffer) {
|
if (!view_buffer) {
|
||||||
|
@ -578,11 +574,13 @@ gst_d3d11_vp9_dec_copy_loop_filter_params (GstD3D11Vp9Dec * self,
|
||||||
params->mode_ref_delta_enabled = lfp->loop_filter_delta_enabled;
|
params->mode_ref_delta_enabled = lfp->loop_filter_delta_enabled;
|
||||||
params->mode_ref_delta_update = lfp->loop_filter_delta_update;
|
params->mode_ref_delta_update = lfp->loop_filter_delta_update;
|
||||||
params->use_prev_in_find_mv_refs =
|
params->use_prev_in_find_mv_refs =
|
||||||
inner->last_show_frame &&
|
inner->last_show_frame && !frame_hdr->error_resilient_mode;
|
||||||
frame_hdr->width == inner->last_frame_width &&
|
|
||||||
frame_hdr->height == inner->last_frame_height &&
|
if (frame_hdr->frame_type != GST_VP9_KEY_FRAME && !frame_hdr->intra_only) {
|
||||||
!frame_hdr->error_resilient_mode &&
|
params->use_prev_in_find_mv_refs &=
|
||||||
!(frame_hdr->frame_type == GST_VP9_KEY_FRAME || frame_hdr->intra_only);
|
(frame_hdr->width == inner->last_frame_width &&
|
||||||
|
frame_hdr->height == inner->last_frame_height);
|
||||||
|
}
|
||||||
|
|
||||||
G_STATIC_ASSERT (G_N_ELEMENTS (params->ref_deltas) ==
|
G_STATIC_ASSERT (G_N_ELEMENTS (params->ref_deltas) ==
|
||||||
G_N_ELEMENTS (lfp->loop_filter_ref_deltas));
|
G_N_ELEMENTS (lfp->loop_filter_ref_deltas));
|
||||||
|
@ -700,7 +698,7 @@ gst_d3d11_vp9_dec_decode_picture (GstVp9Decoder * decoder,
|
||||||
|
|
||||||
inner->last_frame_width = pic_params->width;
|
inner->last_frame_width = pic_params->width;
|
||||||
inner->last_frame_height = pic_params->height;
|
inner->last_frame_height = pic_params->height;
|
||||||
inner->last_show_frame = TRUE;
|
inner->last_show_frame = pic_params->show_frame;
|
||||||
|
|
||||||
return GST_FLOW_OK;
|
return GST_FLOW_OK;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue