From 82ff9204abab5267f82a9ce73f9dca1541ef5ee6 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Tue, 27 Feb 2024 10:41:49 +0100 Subject: [PATCH] frontends/va: Only set VP9 segmentation fields when segmentation is enabled Workaround for ffmpeg setting segmentation_update_map to 1 with segmentation_enabled == 0. Fixes decoding sample from https://github.com/mpv-player/mpv/issues/13533 Cc: mesa-stable Reviewed-by: Leo Liu Part-of: --- src/gallium/frontends/va/picture_vp9.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gallium/frontends/va/picture_vp9.c b/src/gallium/frontends/va/picture_vp9.c index ff3da929f0b..f08b019fac1 100644 --- a/src/gallium/frontends/va/picture_vp9.c +++ b/src/gallium/frontends/va/picture_vp9.c @@ -56,8 +56,10 @@ void vlVaHandlePictureParameterBufferVP9(vlVaDriver *drv, vlVaContext *context, context->desc.vp9.picture_parameter.pic_fields.refresh_frame_context = vp9->pic_fields.bits.refresh_frame_context; context->desc.vp9.picture_parameter.pic_fields.frame_context_idx = vp9->pic_fields.bits.frame_context_idx; context->desc.vp9.picture_parameter.pic_fields.segmentation_enabled = vp9->pic_fields.bits.segmentation_enabled; - context->desc.vp9.picture_parameter.pic_fields.segmentation_temporal_update = vp9->pic_fields.bits.segmentation_temporal_update; - context->desc.vp9.picture_parameter.pic_fields.segmentation_update_map = vp9->pic_fields.bits.segmentation_update_map; + context->desc.vp9.picture_parameter.pic_fields.segmentation_temporal_update = + vp9->pic_fields.bits.segmentation_enabled && vp9->pic_fields.bits.segmentation_temporal_update; + context->desc.vp9.picture_parameter.pic_fields.segmentation_update_map = + vp9->pic_fields.bits.segmentation_enabled && vp9->pic_fields.bits.segmentation_update_map; context->desc.vp9.picture_parameter.pic_fields.last_ref_frame = vp9->pic_fields.bits.last_ref_frame; context->desc.vp9.picture_parameter.pic_fields.last_ref_frame_sign_bias = vp9->pic_fields.bits.last_ref_frame_sign_bias; context->desc.vp9.picture_parameter.pic_fields.golden_ref_frame = vp9->pic_fields.bits.golden_ref_frame;