You are not logged in.
Hello everyone!
Here is a backend for VDPAU that uses VAAPI for video decoding and GL for everything other.
https://aur.archlinux.org/packages/libvdpau-va-gl/
For AMD, you need also https://aur.archlinux.org/packages/xvba-video/
To use it, just add
#!/bin/sh
export VDPAU_DRIVER=va_gl
into /etc/profile.d/vdpau_vaapi.sh and reboot or relogin
So now you can use VDPAU in mplayer2 or flash and it will decode video with VAAPI.
Have fun!
Last edited by ValdikSS (2013-07-12 12:20:49)
Offline
This info belongs to the wiki and not to some random forum post.
If you have the time please update a corresponding articles (Intel/Radeon/VAAPI/Mplayer). Thank you!
Offline
This info belongs to the wiki and not to some random forum post.
If you have the time please update a corresponding articles (Intel/Radeon/VAAPI/Mplayer). Thank you!
Already
Offline
So if a card supports VAAPI but not VDPAU, Flash will not try to accelerate decoding? And this will get Flash to co-operate by being a VDPAU driver that uses as much of your card's VAAPI support as possible?
That's a good idea.
6EA3 F3F3 B908 2632 A9CB E931 D53A 0445 B47A 0DAB
Great things come in tar.xz packages.
Offline
Holy sh**,
so this will finally make hardware acceleration for AMD APUs (f.e.) in flash possible?! I can't believe this news... are there any further steps I would have to take to accelerate flash videos? Like f.i. I'm thinking about the /etc/adobe/mms.cfg file where you yould, if you were a NVIDIA user, de/activate HW acceleration for Adobe's Flash plugin. And what if I want to keep using my mplayer-vaapi build for playing 1080p videos? Will setting up this driver break that?
Offline
Holy sh**,
so this will finally make hardware acceleration for AMD APUs (f.e.) in flash possible?!
yep!
I can't believe this news... are there any further steps I would have to take to accelerate flash videos? Like f.i. I'm thinking about the /etc/adobe/mms.cfg file where you yould, if you were a NVIDIA user, de/activate HW acceleration for Adobe's Flash plugin.
I have intel HD3000, so I just installed this thing, added string to profile, added this:
EnableLinuxHWVideoDecode=1
OverrideGPUValidation=1
to /etc/adobe/mms.cfg and everything works. For AMD you need to install xvba also.
And what if I want to keep using my mplayer-vaapi build for playing 1080p videos? Will setting up this driver break that?
No, it won't break it. You can even use mplayer2 with VDPAU. Or you can use mplayer2-vaapi.
Offline
Holy sh**,
so this will finally make hardware acceleration for AMD APUs (f.e.) in flash possible?!
I believe it was already possible. ati-dri contains VDPAU bindings for r300, r600 and radeonsi, for VAAPI there is a VDPAU backend.
My setup is the following:
packages: ati-dri , libvdpau, libva, libva-vdpau-driver. (all mesa packages in -git version for more formats)
Then in my .pam_environment I use these settings:
VDPAU_DRIVER=r600
LIBVA_DRIVER_NAME=vdpau
Result with my Mobility Radeon HD 5430/5450/5470:
$ vainfo
libva info: VA-API version 0.34.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'vdpau'
libva info: Trying to open /usr/lib/dri/vdpau_drv_video.so
libva info: Found init function __vaDriverInit_0_33
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.34 (libva 1.2.1)
vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileH264Baseline : VAEntrypointVLD
VAProfileH264Main : VAEntrypointVLD
VAProfileH264High : VAEntrypointVLD
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
Inconsistency detected by ld.so: dl-close.c: 765: _dl_close: Assertion `map->l_init_called' failed!
$ vdpauinfo
display: :0.0 screen: 0
API version: 1
Information string: G3DVL VDPAU Driver Shared Library version 1.0
Video surface:
name width height types
-------------------------------------------
420 16384 16384 NV12
422 16384 16384 NV12
444 16384 16384 NV12
Decoder capabilities:
name level macbs width height
-------------------------------------------
MPEG1 16 9216 2048 1152
MPEG2_SIMPLE 16 9216 2048 1152
MPEG2_MAIN 16 9216 2048 1152
H264_BASELINE 16 9216 2048 1152
H264_MAIN 16 9216 2048 1152
H264_HIGH 16 9216 2048 1152
VC1_SIMPLE 16 9216 2048 1152
VC1_MAIN 16 9216 2048 1152
VC1_ADVANCED 16 9216 2048 1152
Output surface:
name width height nat types
----------------------------------------------------
B8G8R8A8 16384 16384 y NV12
R8G8B8A8 16384 16384 y NV12
R10G10B10A2 16384 16384 y NV12
B10G10R10A2 16384 16384 y NV12
Bitmap surface:
name width height
------------------------------
B8G8R8A8 16384 16384
R8G8B8A8 16384 16384
R10G10B10A2 16384 16384
B10G10R10A2 16384 16384
A8 16384 16384
Video mixer:
feature name sup
------------------------------------
DEINTERLACE_TEMPORAL -
DEINTERLACE_TEMPORAL_SPATIAL -
INVERSE_TELECINE -
NOISE_REDUCTION y
SHARPNESS y
LUMA_KEY -
HIGH QUALITY SCALING - L1 -
HIGH QUALITY SCALING - L2 -
HIGH QUALITY SCALING - L3 -
HIGH QUALITY SCALING - L4 -
HIGH QUALITY SCALING - L5 -
HIGH QUALITY SCALING - L6 -
HIGH QUALITY SCALING - L7 -
HIGH QUALITY SCALING - L8 -
HIGH QUALITY SCALING - L9 -
parameter name sup min max
-----------------------------------------------------
VIDEO_SURFACE_WIDTH y 48 2048
VIDEO_SURFACE_HEIGHT y 48 1152
CHROMA_TYPE y
LAYERS y 0 4
attribute name sup min max
-----------------------------------------------------
BACKGROUND_COLOR y
CSC_MATRIX y
NOISE_REDUCTION_LEVEL y 0.00 1.00
SHARPNESS_LEVEL y -1.00 1.00
LUMA_KEY_MIN_LUMA y
LUMA_KEY_MAX_LUMA y
Inconsistency detected by ld.so: dl-close.c: 765: _dl_close: Assertion `map->l_init_called' failed!
| alias CUTF='LANG=en_XX.UTF-8@POSIX ' |
Offline
I believe it was already possible. ati-dri contains VDPAU bindings for r300, r600 and radeonsi, for VAAPI there is a VDPAU backend.
My setup is the following:packages: ati-dri , libvdpau, libva, libva-vdpau-driver. (all mesa packages in -git version for more formats)
Then in my .pam_environment I use these settings:VDPAU_DRIVER=r600 LIBVA_DRIVER_NAME=vdpau
Are you refering to this section? I assume you using the open source driver as you have ati-dri (which has xf86-video-ati as a dependency) installed. Is that correct?
Result with my Mobility Radeon HD 5430/5450/5470:
$ vainfo libva info: VA-API version 0.34.0 libva info: va_getDriverName() returns 0 libva info: User requested driver 'vdpau' libva info: Trying to open /usr/lib/dri/vdpau_drv_video.so libva info: Found init function __vaDriverInit_0_33 libva info: va_openDriver() returns 0 vainfo: VA-API version: 0.34 (libva 1.2.1) vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4 vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointVLD VAProfileH264Baseline : VAEntrypointVLD VAProfileH264Main : VAEntrypointVLD VAProfileH264High : VAEntrypointVLD VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD Inconsistency detected by ld.so: dl-close.c: 765: _dl_close: Assertion `map->l_init_called' failed! $ vdpauinfo display: :0.0 screen: 0 API version: 1 Information string: G3DVL VDPAU Driver Shared Library version 1.0 Video surface: name width height types ------------------------------------------- 420 16384 16384 NV12 422 16384 16384 NV12 444 16384 16384 NV12 Decoder capabilities: name level macbs width height ------------------------------------------- MPEG1 16 9216 2048 1152 MPEG2_SIMPLE 16 9216 2048 1152 MPEG2_MAIN 16 9216 2048 1152 H264_BASELINE 16 9216 2048 1152 H264_MAIN 16 9216 2048 1152 H264_HIGH 16 9216 2048 1152 VC1_SIMPLE 16 9216 2048 1152 VC1_MAIN 16 9216 2048 1152 VC1_ADVANCED 16 9216 2048 1152 Output surface: name width height nat types ---------------------------------------------------- B8G8R8A8 16384 16384 y NV12 R8G8B8A8 16384 16384 y NV12 R10G10B10A2 16384 16384 y NV12 B10G10R10A2 16384 16384 y NV12 Bitmap surface: name width height ------------------------------ B8G8R8A8 16384 16384 R8G8B8A8 16384 16384 R10G10B10A2 16384 16384 B10G10R10A2 16384 16384 A8 16384 16384 Video mixer: feature name sup ------------------------------------ DEINTERLACE_TEMPORAL - DEINTERLACE_TEMPORAL_SPATIAL - INVERSE_TELECINE - NOISE_REDUCTION y SHARPNESS y LUMA_KEY - HIGH QUALITY SCALING - L1 - HIGH QUALITY SCALING - L2 - HIGH QUALITY SCALING - L3 - HIGH QUALITY SCALING - L4 - HIGH QUALITY SCALING - L5 - HIGH QUALITY SCALING - L6 - HIGH QUALITY SCALING - L7 - HIGH QUALITY SCALING - L8 - HIGH QUALITY SCALING - L9 - parameter name sup min max ----------------------------------------------------- VIDEO_SURFACE_WIDTH y 48 2048 VIDEO_SURFACE_HEIGHT y 48 1152 CHROMA_TYPE y LAYERS y 0 4 attribute name sup min max ----------------------------------------------------- BACKGROUND_COLOR y CSC_MATRIX y NOISE_REDUCTION_LEVEL y 0.00 1.00 SHARPNESS_LEVEL y -1.00 1.00 LUMA_KEY_MIN_LUMA y LUMA_KEY_MAX_LUMA y Inconsistency detected by ld.so: dl-close.c: 765: _dl_close: Assertion `map->l_init_called' failed!
Your results indeed look very promising. Nevertheless I am not quite sure if this would work with my AMD E-450 APU which has a built-in HD6320 (which, by all means, is actually a HD 4xxx; I have to use the legacy driver aswell). As far as I know, HW acceleration with those APUs is only possible using the proprietary driver. But correct me if I should be wrong.
Offline
But correct me if I should be wrong.
Consider yourself corrected
With kernel 3.10 and mesa 9.2 (not released yet), you have full VDPAU support on your APU with the open source driver. And note, you don't need the library discussed here for that. The open source driver has direct VDPAU support, this library is needed for drivers that don't (intel and catalyst).
Offline
Yes, I use the open source driver.
As far as I know, HW acceleration with those APUs is only possible using the proprietary driver. But correct me if I should be wrong.
I believe it should be possible. I read somewhere that the architecture of the HD6320 is similar to the HD5430, just without the graphics memory. Try it if you want to know for sure
Last edited by progandy (2013-07-16 12:37:46)
| alias CUTF='LANG=en_XX.UTF-8@POSIX ' |
Offline
blablubb1234 wrote:But correct me if I should be wrong.
Consider yourself corrected
With kernel 3.10 and mesa 9.2 (not released yet), you have full VDPAU support on your APU with the open source driver. And note, you don't need the library discussed here for that. The open source driver has direct VDPAU support, this library is needed for drivers that don't (intel and catalyst).
I'm really looking forward to abandonning that fuc**** Catalyst driver, seriously If I will then have full HW decoding for 1080p and flash videos, there is (at least for me) absolutely no more reason to stick with that proprietary driver.
Is there a date (approximately) known, when kernel 3.10 and mesa 9.2 are being released?
Offline
I also have the E-450 APU and with mesa-git from AUR hardware accelleration does indeed work. No need for Catalyst anymore, yay!
Offline
Would it be possible to use this with proprietary nvidia drivers while mantaining hw decoding?
I tried with mplayer:
# VDPAU_DRIVER=va_gl mplayer /mnt/nas.crypt/Film/WALL-E.2008.720p.BluRay.DTS-ES.x264-ESiR/Pixar.Short.Burn-E.2008.720p.BluRay.x264-ESiR/Pixar.Short.Burn-E.2008.720p.BluRay.x264-ESiR.mkv -vo vdpau -vc ffh264vdpau
MPlayer SVN-r36285-4.8.0 (C) 2000-2013 MPlayer Team
Cannot test OS support for SSE, disabling to be safe.
205 audio & 424 video codecs
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.
Playing /mnt/nas.crypt/Film/WALL-E.2008.720p.BluRay.DTS-ES.x264-ESiR/Pixar.Short.Burn-E.2008.720p.BluRay.x264-ESiR/Pixar.Short.Burn-E.2008.720p.BluRay.x264-ESiR.mkv.
libavformat version 55.7.100 (internal)
libavformat file format detected.
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (ac3), -aid 0, -alang eng
[lavf] stream 2: subtitle (ssa), -sid 0, -slang eng
VIDEO: [H264] 1280x536 0bpp 23.976 fps 0.0 kbps ( 0.0 kbyte/s)
Clip info:
title: Pixar Short Burn-E 2008
creation_time: 2008-11-12 21:25:10
Load subtitles in /mnt/nas.crypt/Film/WALL-E.2008.720p.BluRay.DTS-ES.x264-ESiR/Pixar.Short.Burn-E.2008.720p.BluRay.x264-ESiR/
[VS] Software VDPAU backend library initialized
libva info: VA-API version 0.34.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_0_33
...and it stops here, even if i add -vc ffh264vdpau
adding the quirk: AvoidVA works but without -vc ffh264vdpau, so no hw decoding.
I'm interested in this because of stability problems i have when using real vdpau surfaces.
Help me to improve ssh-rdp !
Retroarch User? Try my koko-aio shader !
Offline
Would it be possible to use this with proprietary nvidia drivers while mantaining hw decoding?
You don't need it for the proprietary nvidia driver. This driver already has vdpau support.
| alias CUTF='LANG=en_XX.UTF-8@POSIX ' |
Offline
Thanks for answering, but as i said:
I'm interested in this because of stability problems i have when using real vdpau surfaces.
For stability problems i mean the desktop freezing when switching from fullscreen to window to fullscreen...randomly.
And as far as i know, standard mplayer doesn't support the rendering of the pixmap to a GL surface when using vdpau, nor the flash player does.
Yes, one could usenthe bitmap path by disabling the overlay vdpau surface, but that often produces tearing to me.
There is also mplayer-vaapi that can do VDPAU->opengl but it leaves a little vertical black band on the right side of the video and flash is still left out.
...So i thought that i could use this library to do it in place of the nvidia one.
Help me to improve ssh-rdp !
Retroarch User? Try my koko-aio shader !
Offline
So i thought that i could use this library to do it in place of the nvidia one.
You have vdpau-va-driver installed, together they form circular dependency and load each other indefinitely. To break the chain, set VDPAU_DRIVER to "nvidia" inside libvdpau-va-gl. Following patch should do the trick:
--- a/vdpau-entry.c
+++ b/vdpau-entry.c
@@ -144,6 +144,7 @@ library_constructor(void)
}
free(value_lc);
}
+ setenv("VDPAU_DRIVER", "nvidia", 1);
}
__attribute__((destructor))
Offline
Maybe to save some people some time.
With flash 11.2 it seems to work. With flash 11.8 (chromium-pepper-flash) it doesn't. Seems to be a known problem but a quick google search didn't find a solution.
If it doesn't work for you: Make sure (in intel's case) that you have libva and libva-intel-driver installed and not some outdated git version.
Make sure you don't use mplayer-vaapi.
mplayer seems to use only vdpau presentation (and ffh264 instead of ffh264vdpau) by default.
~/.mplayer/config, add:
vo=vdpau
vc=ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau,ffh264vdpau,ffodivxvdpau,
(I think comma at the end means that it will try others if none of them apply)
Edit: ffodivxvdpau is not supported by Intel I think, so maybe remove that from the list
qvdpautest-git doesn't work, basically every test fails and it segfaults.
Last edited by Cdh (2013-07-17 10:16:59)
฿ 18PRsqbZCrwPUrVnJe1BZvza7bwSDbpxZz
Offline
kokoko3k wrote:So i thought that i could use this library to do it in place of the nvidia one.
You have vdpau-va-driver installed, together they form circular dependency and load each other indefinitely. To break the chain, set VDPAU_DRIVER to "nvidia" inside libvdpau-va-gl. Following patch should do the trick:
--- a/vdpau-entry.c +++ b/vdpau-entry.c @@ -144,6 +144,7 @@ library_constructor(void) } free(value_lc); } + setenv("VDPAU_DRIVER", "nvidia", 1); } __attribute__((destructor))
Thank you very much, i'll try.
-EDIT
I patched it, but still mplayer stops at
libva info: Found init function __vaDriverInit_0_33
and after ctrl-c:
MPlayer interrupted by signal 2 in module: preinit_libvo
xbmc freezes as well:
# VDPAU_DRIVER=va_gl xbmc
libpng warning: iCCP: known incorrect sRGB profile
[VS] Software VDPAU backend library initialized
libva info: VA-API version 0.34.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_0_33
Last edited by kokoko3k (2013-07-17 11:14:20)
Help me to improve ssh-rdp !
Retroarch User? Try my koko-aio shader !
Offline
I patched it, but still mplayer stops
Hmm, libvdpau loads driver only once, then caches it. This will force it to load each time:
diff -ur libvdpau-0.6/src/vdpau_wrapper.c libvdpau-0.6-new/src/vdpau_wrapper.c
--- libvdpau-0.6/src/vdpau_wrapper.c 2013-07-17 18:38:40.000000000 +0400
+++ libvdpau-0.6-new/src/vdpau_wrapper.c 2013-07-17 18:38:21.363915693 +0400
@@ -394,6 +394,7 @@
init_fixes();
+ _vdp_imp_device_create_x11_proc = NULL;
if (!_vdp_imp_device_create_x11_proc) {
status = _vdp_open_driver(display, screen);
if (status != VDP_STATUS_OK) {
Note: it's for libvdpau this time, not libvdpau-va-gl. And I don't know if it will cause handle leaks.
Offline
still no luck, i'll follow your project on github; this thread was born for different things
Help me to improve ssh-rdp !
Retroarch User? Try my koko-aio shader !
Offline
still no luck, i'll follow your project on github; this thread was born for different things
It looks like it does right thing on my system and stops with "can't find libvdpau_nvidia.so" error. But I don't have an nVidia adapter to actually test it.
Sorry to disappoint you, but I don't have plans to add VDPAU backend support to libvdpau-va-gl. At least in observable future. There are too many more crucial stuff to implement. And I still can't make myself to implement them.
Offline
Sorry to disappoint you, but I don't have plans to add VDPAU backend support to libvdpau-va-gl. At least in observable future. There are too many more crucial stuff to implement. And I still can't make myself to implement them.
I think this would result in duplicating a lot of libvdpau. First libvdpau loads libvdpau_vd_gl, then vd_gl loads the requested vdpau driver and uses it or gl if something is not supported. A fork of libvdpau might be better in this case I guess.
Last edited by progandy (2013-07-17 15:46:58)
| alias CUTF='LANG=en_XX.UTF-8@POSIX ' |
Offline
There's no video decoding unit on the 3150 (it's basically a GMA950 aka crap), all you have is software decoding. You should be able to play 720p with xv though. This means no flash, just dedicated players (mplayer, vlc, ...).
Offline
I have intel HD3000, so I just installed this thing, added string to profile, added this:
EnableLinuxHWVideoDecode=1
OverrideGPUValidation=1
to /etc/adobe/mms.cfg and everything works. For AMD you need to install xvba also.
Awesome, I can now again play fullscreen youtube videos on my Core i3 thanks to this! (It worked fine two years ago and then started being jerky, don’t know why…)
Last edited by stqn (2013-07-20 16:00:32)
Offline
Awesome, I can now again play fullscreen youtube videos on my Core i3 thanks to this!
Offline