From 98b852cd07a80fa42336031f089bdac6e7c617d3 Mon Sep 17 00:00:00 2001 From: Julien Isorce Date: Wed, 8 May 2019 12:40:50 -0700 Subject: [PATCH] st/va: set the visible image dimensions in vlVaDeriveImage MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This fixes video being rendered incorrectly. User wants height of 360 but internally pipe_video_buffer 's height is 368 in the test below. Test: GST_GL_PLATFORM=egl gst-launch-1.0 videotestsrc ! video/x-raw, width=868, height=360, format=NV12 ! vaapipostproc ! glimagesink Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110443 Signed-off-by: Julien Isorce Reviewed-by: Marek Olšák Reviewed-by: Leo Liu --- src/gallium/state_trackers/va/image.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gallium/state_trackers/va/image.c b/src/gallium/state_trackers/va/image.c index d4b9ce5596d..9e3a49f1996 100644 --- a/src/gallium/state_trackers/va/image.c +++ b/src/gallium/state_trackers/va/image.c @@ -236,10 +236,12 @@ vlVaDeriveImage(VADriverContextP ctx, VASurfaceID surface, VAImage *image) img->format.fourcc = PipeFormatToVaFourcc(surf->buffer->buffer_format); img->buf = VA_INVALID_ID; - img->width = surf->buffer->width; - img->height = surf->buffer->height; + /* Use the visible dimensions. */ + img->width = surf->templat.width; + img->height = surf->templat.height; img->num_palette_entries = 0; img->entry_bytes = 0; + /* Image data size is computed using internal dimensions. */ w = align(surf->buffer->width, 2); h = align(surf->buffer->height, 2); -- 2.30.2