[Mesa-dev] [PATCH 0/2] Implement lanczos interpolation filter

Andy Furniss adf.lists at gmail.com
Thu Sep 22 14:23:28 UTC 2016


Christian König wrote:
> Am 21.09.2016 um 16:38 schrieb Andy Furniss:
>> Andy Furniss wrote:
>>> Andy Furniss wrote:
>>>> Andy Furniss wrote:
>>>>
>>>>> bz2 compressed vid showing the issue -
>>>>>
>>>>> https://drive.google.com/open?id=0BxP5-S1t9VEEUE5sbUFBV20zSms
>>>>
>>>> To be clear this is just the test rez vid I used so you can
>>>> possibly recreate the issue your self.
>>>
>>> Hmm, interesting, with bicubic, hqscaling=1 this vid behaves
>>> differently with mplayer compared to mpv, the latter looks like
>>> it's scaling a bit, maybe there's an off by one somewhere in mpv
>>> code.
>>
>> I don't know if it's the cause, but looking for differences between
>> mplayer and mpv it seems that mpv sets video mixer height so it's
>> divisible by 32 but mplayer doesn't. For this 720p sample it uses 736
>> and mplayer uses 720.
>>
>> vdp_video_mixer_create(1, 1, {11}, 3, {0, 1, 2}, {1280, 736, 0}, -)
>>
>> for output surfaces and render calls it uses 720.
>>
>> So does the bicubic code see/use this 736 somewhere?
>
> Well that would clearly explain some differences. Are the video input
> buffers rounded up to 32 as well?

It would seem so VDPAU_TRACE=1 shows mpv asks for (with lots snipped) -

vdp_output_surface_create(1, 0, 1280, 720, -)

vdp_video_surface_create(1, 0, 1280, 720, -)

then later does

vdp_video_surface_get_parameters(9, -, -, -)
     -> 0, 0, 1280, 736

and next creates the mixer -

vdp_video_mixer_create(1, 0, {}, 3, {0, 1, 2}, {1280, 736, 0}, -)
     -> 0, 10


vdp_video_mixer_set_attribute_values(10, 1, {1}, {{{1.164384, 0.000000, 
1.792741, -0.972945}, {1.164384, -0.213249, -0.532909, 0.301483}, 
{1.164384, 2.112402, 0.000000, -1.133402}}})
     -> 0
vdp_video_mixer_render(10, 4294967295, NULL, 2, 2, {4294967295, 
4294967295}, 9, 2, {4294967295, 4294967295}, {0, 0, 1280, 720}, 6, NULL, 
{0, 0, 1280, 720}, 0, NULL)


> If not then mpv is clearly not using the interface correctly here:
>> #define VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_HEIGHT
>>
>> The exact height of input video surfaces.

Hmm, so maybe it is right?

Seems it's not mpv that rounds up the surface size.

>>
>> This parameter's type is uint32_t.
>>
>> This parameter defaults to 0 if not specified, which entails that it
>> must be specified.
>>
>> The application may query this parameter's supported range.
>>
>> #define VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_WIDTH
>>
>> The exact width of input video surfaces.
>>
>> This parameter's type is uint32_t.
>>
>> This parameter defaults to 0 if not specified, which entails that it
>> must be specified.
>>
>> The application may query this parameter's supported range.
>>
>
> Maybe we should make the checks done during rending more strict?
>
> Regards,
> Christian.
>
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
>
>



More information about the mesa-dev mailing list