From 3cafe333e99f8ce77c742543a47f3700852b44ea Mon Sep 17 00:00:00 2001 From: Thong Thai Date: Fri, 6 Aug 2021 14:42:44 -0400 Subject: [PATCH] frontends/va/postproc: Keep track of deinterlacing method being used When transcoding a video, the context used by decode/postproc process might be different from that of the encoder, but we encoder needs to know if deinterlacing was used. Fixes: c5088b49729 ("gallium: Fix VAAPI postproc blit") Signed-off-by: Thong Thai Reviewed-by: Leo Liu Part-of: --- src/gallium/frontends/va/postproc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gallium/frontends/va/postproc.c b/src/gallium/frontends/va/postproc.c index 162994d..88d7d81 100644 --- a/src/gallium/frontends/va/postproc.c +++ b/src/gallium/frontends/va/postproc.c @@ -222,7 +222,7 @@ static VAStatus vlVaPostProcBlit(vlVaDriver *drv, vlVaContext *context, if (drv->pipe->screen->get_param(drv->pipe->screen, PIPE_CAP_PREFER_COMPUTE_FOR_MULTIMEDIA)) - util_compute_blit(drv->pipe, &blit, &context->blit_cs); + util_compute_blit(drv->pipe, &blit, &context->blit_cs, !drv->compositor.deinterlace); else drv->pipe->blit(drv->pipe, &blit); } @@ -281,7 +281,7 @@ vlVaApplyDeint(vlVaDriver *drv, vlVaContext *context, VAStatus vlVaHandleVAProcPipelineParameterBufferType(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) { - enum vl_compositor_deinterlace deinterlace = VL_COMPOSITOR_WEAVE; + enum vl_compositor_deinterlace deinterlace = VL_COMPOSITOR_NONE; VARectangle def_src_region, def_dst_region; const VARectangle *src_region, *dst_region; VAProcPipelineParameterBuffer *param; @@ -349,12 +349,13 @@ vlVaHandleVAProcPipelineParameterBufferType(vlVaDriver *drv, vlVaContext *contex case VAProcDeinterlacingMotionAdaptive: src = vlVaApplyDeint(drv, context, param, src, !!(deint->flags & VA_DEINTERLACING_BOTTOM_FIELD)); + deinterlace = VL_COMPOSITOR_MOTION_ADAPTIVE; break; default: return VA_STATUS_ERROR_UNIMPLEMENTED; } - + drv->compositor.deinterlace = deinterlace; break; } -- 2.7.4