On 2017-09-29 06:04 AM, Andy Furniss wrote:
Leo Liu wrote:
For 1080p video transcode, the height will be scaled to 1088 when deint
to progressive buffer. Set dst rect to make sure no scale.
Fixes: 3ad8687 "st/va: use new vl_compositor_yuv_deint_full() to deint"
Probably my test cases are lacking, but I can't see and difference
with this. Do you have an example?
something like below, only transcode without postproc case.
`ffmpeg -y -vaapi_device /dev/dri/card0 -i 1080_in.mp4 -frames 100 -an
-vf 'format=nv12|vaapi,hwupload' -c:v h264_vaapi -profile:v 578 -bf 0
1080_out.mkv`
Regards,
Leo
Signed-off-by: Leo Liu <leo....@amd.com>
---
src/gallium/state_trackers/va/picture.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/gallium/state_trackers/va/picture.c
b/src/gallium/state_trackers/va/picture.c
index 5e794652a6..7427b98688 100644
--- a/src/gallium/state_trackers/va/picture.c
+++ b/src/gallium/state_trackers/va/picture.c
@@ -669,15 +669,15 @@ vlVaEndPicture(VADriverContextP ctx,
VAContextID context_id)
if (context->decoder->entrypoint ==
PIPE_VIDEO_ENTRYPOINT_ENCODE) {
if (old_buf->interlaced) {
- struct u_rect src_rect;
+ struct u_rect src_rect, dst_rect;
- src_rect.x0 = 0;
- src_rect.y0 = 0;
- src_rect.x1 = surf->templat.width;
- src_rect.y1 = surf->templat.height;
+ dst_rect.x0 = src_rect.x0 = 0;
+ dst_rect.y0 = src_rect.y0 = 0;
+ dst_rect.x1 = src_rect.x1 = surf->templat.width;
+ dst_rect.y1 = 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);
+ &src_rect, &dst_rect,
VL_COMPOSITOR_WEAVE);
} else
/* Can't convert from progressive to interlaced yet */
return VA_STATUS_ERROR_INVALID_SURFACE;
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev