st/va: set the visible image dimensions in vlVaDeriveImage

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 <jisorce@oblong.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
This commit is contained in:
Julien Isorce
2019-05-08 12:40:50 -07:00
committed by Julien Isorce
parent 292187afcc
commit 98b852cd07
+4 -2
View File
@@ -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);