[Mesa-dev] [PATCH] st/va: add dst rect to avoid scale on deint

Leo Liu leo.liu at amd.com
Fri Sep 29 10:55:04 UTC 2017



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.liu at 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;
>>
>



More information about the mesa-dev mailing list