From e56b906df964e2fbc198584bfb397d1bd1a0bb97 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Thu, 6 Mar 2025 17:04:44 +0100 Subject: [PATCH] frontends/vdpau: Fix creating deinterlace filter for interleaved buffers Cc: mesa-stable Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12755 Reviewed-by: Ruijing Dong Part-of: --- src/gallium/frontends/vdpau/mixer.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gallium/frontends/vdpau/mixer.c b/src/gallium/frontends/vdpau/mixer.c index 480ee61f43b..ccdd34fb0c0 100644 --- a/src/gallium/frontends/vdpau/mixer.c +++ b/src/gallium/frontends/vdpau/mixer.c @@ -475,12 +475,17 @@ vlVdpVideoMixerUpdateDeinterlaceFilter(vlVdpVideoMixer *vmixer) /* create a new filter if requested */ if (vmixer->deint.enabled && vmixer->chroma_format == PIPE_VIDEO_CHROMA_FORMAT_420) { + bool interlaced = pipe->screen->get_video_param(pipe->screen, + PIPE_VIDEO_PROFILE_UNKNOWN, + PIPE_VIDEO_ENTRYPOINT_BITSTREAM, + PIPE_VIDEO_CAP_PREFERS_INTERLACED); vmixer->deint.filter = MALLOC(sizeof(struct vl_deint_filter)); vmixer->deint.enabled = vl_deint_filter_init(vmixer->deint.filter, pipe, vmixer->video_width, vmixer->video_height, - vmixer->skip_chroma_deint, vmixer->deint.spatial, false); + vmixer->skip_chroma_deint, vmixer->deint.spatial, !interlaced); if (!vmixer->deint.enabled) { FREE(vmixer->deint.filter); + vmixer->deint.filter = NULL; } } }