vavp9dec: Always chain to parent class negotiate vmethod
When the base videodecoder class re-attempts a negotiation after flush, the vabasedec `need_negotiation` flag isn't necessarily set to TRUE, because in that situation the input state hasn't changed. By always chaining up we are sure that buffer pool negotiation will always be attempted. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9457>
This commit is contained in:
parent
eab8abad8c
commit
009192bde4
@ -555,9 +555,12 @@ gst_va_vp9_dec_negotiate (GstVideoDecoder * decoder)
|
|||||||
GstVaVp9Dec *self = GST_VA_VP9_DEC (decoder);
|
GstVaVp9Dec *self = GST_VA_VP9_DEC (decoder);
|
||||||
gboolean need_open;
|
gboolean need_open;
|
||||||
|
|
||||||
/* Ignore downstream renegotiation request. */
|
/* Do not (re-)open the decoder in case the input state hasn't changed. */
|
||||||
if (!base->need_negotiation)
|
if (!base->need_negotiation) {
|
||||||
return TRUE;
|
GST_DEBUG_OBJECT (decoder,
|
||||||
|
"Input state hasn't changed, no need to (re-)open the decoder");
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
base->need_negotiation = FALSE;
|
base->need_negotiation = FALSE;
|
||||||
|
|
||||||
@ -601,6 +604,7 @@ gst_va_vp9_dec_negotiate (GstVideoDecoder * decoder)
|
|||||||
if (!gst_va_base_dec_set_output_state (base))
|
if (!gst_va_base_dec_set_output_state (base))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
done:
|
||||||
return GST_VIDEO_DECODER_CLASS (parent_class)->negotiate (decoder);
|
return GST_VIDEO_DECODER_CLASS (parent_class)->negotiate (decoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user