st/va: use new vl_compositor_yuv_deint_full() to deint
authorLeo Liu <leo.liu@amd.com>
Mon, 11 Sep 2017 16:57:22 +0000 (12:57 -0400)
committerLeo Liu <leo.liu@amd.com>
Mon, 25 Sep 2017 13:42:13 +0000 (09:42 -0400)
We also set src rectangle explicitly just in case of the mismatch
of size between interlaced buffer and progressive buffer

Acked-by: Christian König <christian.koenig@amd.com>
src/gallium/state_trackers/va/picture.c

index 19df52cb83e3e318b56de960b735d03f3430b6a0..81bd196ce002123a467f8e44d6559c0281f5ae82 100644 (file)
@@ -668,9 +668,17 @@ vlVaEndPicture(VADriverContextP ctx, VAContextID context_id)
       }
 
       if (context->decoder->entrypoint == PIPE_VIDEO_ENTRYPOINT_ENCODE) {
-         if (old_buf->interlaced)
-            vl_compositor_yuv_deint(&drv->cstate, &drv->compositor, old_buf, surf->buffer);
-         else
+         if (old_buf->interlaced) {
+            struct u_rect src_rect;
+
+            src_rect.x0 = 0;
+            src_rect.y0 = 0;
+            src_rect.x1 = surf->templat.width;
+            src_rect.y1 = surf->templat.height;
+            vl_compositor_yuv_deint_full(&drv->cstate, &drv->compositor,
+                                         old_buf, surf->buffer,
+                                         &src_rect, NULL, VL_COMPOSITOR_WEAVE);
+         } else
             /* Can't convert from progressive to interlaced yet */
             return VA_STATUS_ERROR_INVALID_SURFACE;
       }