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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev




_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to