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; } } }