vaav1dec: 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:
Philippe Normand 2025-07-29 11:42:33 +01:00
parent 92931e2907
commit 8317dd5ef3

View File

@ -95,9 +95,12 @@ gst_va_av1_dec_negotiate (GstVideoDecoder * decoder)
GstVaAV1Dec *self = GST_VA_AV1_DEC (decoder);
GstVaBaseDec *base = GST_VA_BASE_DEC (decoder);
/* Ignore downstream renegotiation request. */
if (!base->need_negotiation)
return TRUE;
/* Do not (re-)open the decoder in case the input state hasn't changed. */
if (!base->need_negotiation) {
GST_DEBUG_OBJECT (decoder,
"Input state hasn't changed, no need to (re-)open the decoder");
goto done;
}
base->need_negotiation = FALSE;
@ -128,6 +131,7 @@ gst_va_av1_dec_negotiate (GstVideoDecoder * decoder)
}
self->preferred_format = GST_VIDEO_INFO_FORMAT (&base->output_state->info);
done:
return GST_VIDEO_DECODER_CLASS (parent_class)->negotiate (decoder);
}