Closed shlomif closed 8 years ago
source video chroma type not supported
libvdpau-va-gl have only 4:2:0 chroma type implemented. If video has 4:2:2 or 4:4:4, it won't work.
Howerever, I've just tried to download video (link), and play it in VLC 2.2.4. It plays fine. Tracing shows that VDPAU code is actually used, for both decoding and rendering.
@i-rinat : it's strange that you can play it fine. What are your system specs (hardware, OS, distro, versions)? And how did you build VLC?
I'm testing on notebook with Intel i7-3632QM, it has embedded graphics named "HD Graphics 4000". Debian testing. VLC 2.2.4-4 from Debian repository.
Also try to run VLC with environment variable VDPAU_TRACE=1 enabled. As name suggests, it will enable VDPAU calls tracing.
@i-rinat - thanks for the VDPAU_TRACE tip - here is the output I got:
[00000000013e56f8] pulse audio output error: PulseAudio server connection failure: Connection refused
[0000000001312088] core libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
VDPAU capture: Enabled
vdp_imp_device_create_x11(0x7f2f88008e30, 0, -, -)
libva info: VA-API version 0.39.3
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
failed to open /usr/lib64/dri/hybrid_drv_video.so
Failed to wrapper hybrid_drv_video.so
libva info: va_openDriver() returns 0
-> 0, 493e1, 0x7f2f94bd7710
vdp_get_proc_address(300001, 0, -)
-> 0, 0x7f2f947b8320
vdp_get_proc_address(300001, 1, -)
-> 0, 0x7f2f947b83f0
vdp_get_proc_address(300001, 2, -)
-> 0, 0x7f2f947bb490
vdp_get_proc_address(300001, 3, -)
VDPAU capture: Not able to proxy function 3 -> 19
vdp_get_proc_address(300001, 4, -)
-> 0, 0x7f2f947bb360
vdp_get_proc_address(300001, 5, -)
-> 0, 0x7f2f947b8280
vdp_get_proc_address(300001, 6, -)
-> 0, 0x7f2f947be1a0
vdp_get_proc_address(300001, 7, -)
-> 0, 0x7f2f947bb160
vdp_get_proc_address(300001, 8, -)
-> 0, 0x7f2f947bb020
vdp_get_proc_address(300001, 9, -)
-> 0, 0x7f2f947baee0
vdp_get_proc_address(300001, 10, -)
-> 0, 0x7f2f947b81e0
vdp_get_proc_address(300001, 11, -)
-> 0, 0x7f2f947bace0
vdp_get_proc_address(300001, 12, -)
-> 0, 0x7f2f947beb70
vdp_get_proc_address(300001, 13, -)
-> 0, 0x7f2f947bed30
vdp_get_proc_address(300001, 14, -)
-> 0, 0x7f2f947baae0
vdp_get_proc_address(300001, 15, -)
-> 0, 0x7f2f947ba9c0
vdp_get_proc_address(300001, 16, -)
-> 0, 0x7f2f947ba880
vdp_get_proc_address(300001, 17, -)
-> 0, 0x7f2f947ba740
vdp_get_proc_address(300001, 18, -)
-> 0, 0x7f2f947ba600
vdp_get_proc_address(300001, 19, -)
-> 0, 0x7f2f947b8140
vdp_get_proc_address(300001, 20, -)
-> 0, 0x7f2f947ba400
vdp_get_proc_address(300001, 21, -)
-> 0, 0x7f2f947bef00
vdp_get_proc_address(300001, 22, -)
-> 0, 0x7f2f947bf0e0
vdp_get_proc_address(300001, 23, -)
-> 0, 0x7f2f947bf2b0
vdp_get_proc_address(300001, 24, -)
-> 0, 0x7f2f947bf590
vdp_get_proc_address(300001, 25, -)
-> 0, 0x7f2f947ba200
vdp_get_proc_address(300001, 26, -)
-> 0, 0x7f2f947ba0b0
vdp_get_proc_address(300001, 27, -)
-> 0, 0x7f2f947b80a0
vdp_get_proc_address(300001, 28, -)
-> 0, 0x7f2f947b9e50
vdp_get_proc_address(300001, 29, -)
-> 0, 0x7f2f947bf7b0
vdp_get_proc_address(300001, 30, -)
VDPAU capture: Not able to proxy function 30 -> 19
vdp_get_proc_address(300001, 31, -)
VDPAU capture: Not able to proxy function 31 -> 19
vdp_get_proc_address(300001, 32, -)
VDPAU capture: Not able to proxy function 32 -> 19
vdp_get_proc_address(300001, 33, -)
-> 0, 0x7f2f947be920
vdp_get_proc_address(300001, 34, -)
-> 0, 0x7f2f947be790
vdp_get_proc_address(300001, 35, -)
VDPAU capture: Not able to proxy function 35 -> 19
vdp_get_proc_address(300001, 36, -)
-> 0, 0x7f2f947b9b70
vdp_get_proc_address(300001, 37, -)
-> 0, 0x7f2f947b9a20
vdp_get_proc_address(300001, 38, -)
-> 0, 0x7f2f947b8000
vdp_get_proc_address(300001, 39, -)
-> 0, 0x7f2f947b9820
vdp_get_proc_address(300001, 40, -)
-> 0, 0x7f2f947bb590
vdp_get_proc_address(300001, 41, -)
-> 0, 0x7f2f947b9700
vdp_get_proc_address(300001, 42, -)
-> 0, 0x7f2f947b95e0
vdp_get_proc_address(300001, 43, -)
-> 0, 0x7f2f947b94c0
vdp_get_proc_address(300001, 44, -)
-> 0, 0x7f2f947bccc0
vdp_get_proc_address(300001, 45, -)
-> 0, 0x7f2f947bdd20
vdp_get_proc_address(300001, 46, -)
-> 0, 0x7f2f947bd610
vdp_get_proc_address(300001, 47, -)
-> 0, 0x7f2f947bd3e0
vdp_get_proc_address(300001, 48, -)
-> 0, 0x7f2f947be0a0
vdp_get_proc_address(300001, 49, -)
-> 0, 0x7f2f947bd7e0
vdp_get_proc_address(300001, 50, -)
-> 0, 0x7f2f947bd2a0
vdp_get_proc_address(300001, 51, -)
-> 0, 0x7f2f947bd4d0
vdp_get_proc_address(300001, 52, -)
-> 0, 0x7f2f947bdf50
vdp_get_proc_address(300001, 53, -)
-> 0, 0x7f2f947b7f60
vdp_get_proc_address(300001, 54, -)
-> 0, 0x7f2f947be3a0
vdp_get_proc_address(300001, 55, -)
-> 0, 0x7f2f947b7ec0
vdp_get_proc_address(300001, 56, -)
-> 0, 0x7f2f947b93a0
vdp_get_proc_address(300001, 57, -)
-> 0, 0x7f2f947b7e20
vdp_get_proc_address(300001, 58, -)
-> 0, 0x7f2f947bd960
vdp_get_proc_address(300001, 59, -)
-> 0, 0x7f2f947bda10
vdp_get_proc_address(300001, 60, -)
VDPAU capture: Not able to proxy function 60 -> 19
vdp_get_proc_address(300001, 61, -)
VDPAU capture: Not able to proxy function 61 -> 19
vdp_get_proc_address(300001, 62, -)
-> 0, 0x7f2f947b9280
vdp_get_proc_address(300001, 63, -)
-> 0, 0x7f2f947b7d50
vdp_get_proc_address(300001, 64, -)
-> 0, 0x7f2f947b9160
vdp_get_proc_address(300001, 65, -)
-> 0, 0x7f2f947b8fd0
vdp_get_proc_address(300001, 66, -)
-> 0, 0x7f2f947b7ca0
vdp_get_information_string(-)
-> 0, "OpenGL/VAAPI backend for VDPAU"
vdp_video_surface_query_capabilities(300001, 0, -, -, -)
-> 0, 1, 1920, 1080
[00007f2f88001268] vdpau_display vout display error: source video chroma type not supported
vdp_device_destroy(300001)
-> 0
[00007f2f900b52f8] core video output error: video output creation failed
[00007f2fa4c4f088] core decoder error: failed to create video output
VDPAU capture: Enabled
vdp_imp_device_create_x11(0x7f2fa00c61d0, 0, -, -)
libva info: VA-API version 0.39.3
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
failed to open /usr/lib64/dri/hybrid_drv_video.so
Failed to wrapper hybrid_drv_video.so
libva info: va_openDriver() returns 0
-> 0, 493e1, 0x7f2f8765c710
vdp_get_proc_address(300001, 0, -)
-> 0, 0x7f2f8723d320
vdp_get_proc_address(300001, 1, -)
-> 0, 0x7f2f8723d3f0
vdp_get_proc_address(300001, 2, -)
-> 0, 0x7f2f87240490
vdp_get_proc_address(300001, 3, -)
VDPAU capture: Not able to proxy function 3 -> 19
vdp_get_proc_address(300001, 4, -)
-> 0, 0x7f2f87240360
vdp_get_proc_address(300001, 5, -)
-> 0, 0x7f2f8723d280
vdp_get_proc_address(300001, 6, -)
-> 0, 0x7f2f872431a0
vdp_get_proc_address(300001, 7, -)
-> 0, 0x7f2f87240160
vdp_get_proc_address(300001, 8, -)
-> 0, 0x7f2f87240020
vdp_get_proc_address(300001, 9, -)
-> 0, 0x7f2f8723fee0
vdp_get_proc_address(300001, 10, -)
-> 0, 0x7f2f8723d1e0
vdp_get_proc_address(300001, 11, -)
-> 0, 0x7f2f8723fce0
vdp_get_proc_address(300001, 12, -)
-> 0, 0x7f2f87243b70
vdp_get_proc_address(300001, 13, -)
-> 0, 0x7f2f87243d30
vdp_get_proc_address(300001, 14, -)
-> 0, 0x7f2f8723fae0
vdp_get_proc_address(300001, 15, -)
-> 0, 0x7f2f8723f9c0
vdp_get_proc_address(300001, 16, -)
-> 0, 0x7f2f8723f880
vdp_get_proc_address(300001, 17, -)
-> 0, 0x7f2f8723f740
vdp_get_proc_address(300001, 18, -)
-> 0, 0x7f2f8723f600
vdp_get_proc_address(300001, 19, -)
-> 0, 0x7f2f8723d140
vdp_get_proc_address(300001, 20, -)
-> 0, 0x7f2f8723f400
vdp_get_proc_address(300001, 21, -)
-> 0, 0x7f2f87243f00
vdp_get_proc_address(300001, 22, -)
-> 0, 0x7f2f872440e0
vdp_get_proc_address(300001, 23, -)
-> 0, 0x7f2f872442b0
vdp_get_proc_address(300001, 24, -)
-> 0, 0x7f2f87244590
vdp_get_proc_address(300001, 25, -)
-> 0, 0x7f2f8723f200
vdp_get_proc_address(300001, 26, -)
-> 0, 0x7f2f8723f0b0
vdp_get_proc_address(300001, 27, -)
-> 0, 0x7f2f8723d0a0
vdp_get_proc_address(300001, 28, -)
-> 0, 0x7f2f8723ee50
vdp_get_proc_address(300001, 29, -)
-> 0, 0x7f2f872447b0
vdp_get_proc_address(300001, 30, -)
VDPAU capture: Not able to proxy function 30 -> 19
vdp_get_proc_address(300001, 31, -)
VDPAU capture: Not able to proxy function 31 -> 19
vdp_get_proc_address(300001, 32, -)
VDPAU capture: Not able to proxy function 32 -> 19
vdp_get_proc_address(300001, 33, -)
-> 0, 0x7f2f87243920
vdp_get_proc_address(300001, 34, -)
-> 0, 0x7f2f87243790
vdp_get_proc_address(300001, 35, -)
VDPAU capture: Not able to proxy function 35 -> 19
vdp_get_proc_address(300001, 36, -)
-> 0, 0x7f2f8723eb70
vdp_get_proc_address(300001, 37, -)
-> 0, 0x7f2f8723ea20
vdp_get_proc_address(300001, 38, -)
-> 0, 0x7f2f8723d000
vdp_get_proc_address(300001, 39, -)
-> 0, 0x7f2f8723e820
vdp_get_proc_address(300001, 40, -)
-> 0, 0x7f2f87240590
vdp_get_proc_address(300001, 41, -)
-> 0, 0x7f2f8723e700
vdp_get_proc_address(300001, 42, -)
-> 0, 0x7f2f8723e5e0
vdp_get_proc_address(300001, 43, -)
-> 0, 0x7f2f8723e4c0
vdp_get_proc_address(300001, 44, -)
-> 0, 0x7f2f87241cc0
vdp_get_proc_address(300001, 45, -)
-> 0, 0x7f2f87242d20
vdp_get_proc_address(300001, 46, -)
-> 0, 0x7f2f87242610
vdp_get_proc_address(300001, 47, -)
-> 0, 0x7f2f872423e0
vdp_get_proc_address(300001, 48, -)
-> 0, 0x7f2f872430a0
vdp_get_proc_address(300001, 49, -)
-> 0, 0x7f2f872427e0
vdp_get_proc_address(300001, 50, -)
-> 0, 0x7f2f872422a0
vdp_get_proc_address(300001, 51, -)
-> 0, 0x7f2f872424d0
vdp_get_proc_address(300001, 52, -)
-> 0, 0x7f2f87242f50
vdp_get_proc_address(300001, 53, -)
-> 0, 0x7f2f8723cf60
vdp_get_proc_address(300001, 54, -)
-> 0, 0x7f2f872433a0
vdp_get_proc_address(300001, 55, -)
-> 0, 0x7f2f8723cec0
vdp_get_proc_address(300001, 56, -)
-> 0, 0x7f2f8723e3a0
vdp_get_proc_address(300001, 57, -)
-> 0, 0x7f2f8723ce20
vdp_get_proc_address(300001, 58, -)
-> 0, 0x7f2f87242960
vdp_get_proc_address(300001, 59, -)
-> 0, 0x7f2f87242a10
vdp_get_proc_address(300001, 60, -)
VDPAU capture: Not able to proxy function 60 -> 19
vdp_get_proc_address(300001, 61, -)
VDPAU capture: Not able to proxy function 61 -> 19
vdp_get_proc_address(300001, 62, -)
-> 0, 0x7f2f8723e280
vdp_get_proc_address(300001, 63, -)
-> 0, 0x7f2f8723cd50
vdp_get_proc_address(300001, 64, -)
-> 0, 0x7f2f8723e160
vdp_get_proc_address(300001, 65, -)
-> 0, 0x7f2f8723dfd0
vdp_get_proc_address(300001, 66, -)
-> 0, 0x7f2f8723cca0
vdp_get_information_string(-)
-> 0, "OpenGL/VAAPI backend for VDPAU"
vdp_video_surface_query_capabilities(300001, 0, -, -, -)
-> 0, 1, 1920, 1080
[00007f2fa0007998] vdpau_display vout display error: source video chroma type not supported
vdp_device_destroy(300001)
-> 0
[00007f2f88c40538] core video output error: video output creation failed
[00007f2fa4c4f088] core decoder error: failed to create video output
QObject::~QObject: Timers cannot be stopped from another thread
I had 1920x1080 hardcoded as maximum resultion since the beginning. Actual detection wasn't implemented, but it was fine all the time.
Now, from looking into VLC source code I can tell that it not only checks for supported chroma type, but also checks whenever supported resolution is enough for the current video. If one of the checks fail, "chroma type" is considered unsupported.
Now when I think about it further, I realize, that 1920x1080 could be not sufficient. Video codecs often have restrictions on width and height of an encoded frame. Often dimensions should be multiple of a small number. 4, 8, or 16, for example. When video encoded, frame is enlarged to fit requirements. During decoding process remainders are cut, and resulting frames have the same resolution as input ones. So it could be that 1920x1080 video internally have a larger resolution, but that's hidden. If so, that check will fail. (But it didn't fail when I tested. I don't know what happens there.)
Anyway, I've changed resolution to 4096x4096 in 1dc6bdb7965dd09d6c706540a438ced442fa3d2c just to be sure.
Could you check whenever libvdpau-va-gl built from master branch is working with VLC now, please?
Hi @i-rinat,
On Tue, 27 Sep 2016 07:37:26 -0700 Rinat Ibragimov notifications@github.com wrote:
Anyway, I've changed resolution to 4096x4096 in 1dc6bdb7965dd09d6c706540a438ced442fa3d2c just to be sure.
Could you check whenever libvdpau-va-gl built from master branch is working with VLC now, please?
Yes, I'll check it soonish/nowish - stay tuned.
Shlomi Fish http://www.shlomifish.org/ My Photos - http://www.flickr.com/photos/shlomif/
We are men of action. Bullshit does not become us. — Shlomi Fish via http://en.wikiquote.org/wiki/The_Princess_Bride_%28film%29
Please reply to list if it's a mailing list post - http://shlom.in/reply .
@i-rinat : I've now compiled and checked it and with:
shlomif@telaviv1:~/Music/mp3s$ export LD_LIBRARY_PATH=/home/shlomif/apps/to-del-vdpau/lib/vdpau/ VDPAU_DRIVER_PATH=/home/shlomif/apps/to-del-vdpau/lib/vdpau/
$ strace -f -o ~/vlc.strace vlc --vout vdpau We\ Found\ Love\ -\ Rihanna\ \(Cover\ by\ Tiffany\ Alvord\ Feat\ Andy\ Lange\)-I2YzhhCXX2Y.mp4 2>&1 | tee ~/vlc.txt
seems to play the video fine, and I checked in /proc/pgrep vlc
/maps that the right vdpau-va-gl shard-lib was loaded. Thanks for the fix and I'm looking forward to a new release with it.
Doesn't look like that I'm going to do any other changes in the nearest future. So I've put v0.4.2 release tag.
@i-rinat: many thanks for the new release! I'll package it for Mageia v6. Thanks for all your help, and here is a link to a photo of a cute kitten in gratitude (Safe-for-work/SFW) - http://imgur.com/NmQOgTH .
The new release seems to be working fine, so I'm closing this issue as fixed. Thanks again!
With http://www.shlomifish.org/Files/files/video/We%20Found%20Love%20-%20Rihanna%20%28Cover%20by%20Tiffany%20Alvord%20Feat%20Andy%20Lange%29-I2YzhhCXX2Y.mp4 which was downloaded from https://www.youtube.com/watch?v=I2YzhhCXX2Y using youtube-dl , I am getting this:
and the video won't play. VLC XCB or mpv --vo vdpau seem to play it fine. I am using vlc-2.2.4-8.mga6 and lib64vdpau-va-gl1-0.4.1-1.mga6 on Mageia Linux x86-64 v6 on a Core i3 machine with Intel Graphics.