Oke, i've done a little bit of "research" to see why UVD works so neat on windows and so bad on Linux. Turns out that UVD works in windows by using DXVA : DirectX Video Acceleration and through that anyone can make some app to have accelerated video decoding fun. And since gallium already has native Direct3D support it must already be possible (perhaps though wine since that can read dll files) to make an implementation of the DXVA 2.0 specs :
http://download.microsoft.com/downlo.../DXVA_H264.pdf then somehow use the catalyst DXVA dll to make calls to UVD.. Then you can make a va-api wrapper that uses the DXVA lib and from there on plain linux can be used.
Yes, i know this is quite a detour to get it working, but think of it this way. Windows catalyst drivers will always be in a better shape then their linux counter parts (foss and closed drivers) and with this detour you always use the windows driver thus your always "on par" with windows regarding video decoding.
I agree that a opensource UVD driver and specification is far better, but sadly not likely to happen anytime soon.
Now there are a few things to do here and i sadly can't do any of them. Sadly no time nor knowledge to do it.
- Create a DXVA 2.0 linux implementation
- Somehow use the windows catalyst UVD (or DXVA) driver in wine
- Create a VA API wrapper
This can perhaps be made a little easier by ATI by providing the DXVA driver as a separate dll file (don't know where it is now.. can't find it in my windows installation.. perhaps it's already a seperate dll file)
Seriously think about this with for example the gallium r600g driver. If that's made with direct3d support enabled then it should be possible to implement the DXVA 2.0 spec in linux and once that is done it should be possible to use wine to load the DXVA 2.0 ATI windows library followed by making a VA API wrapper, then you have in fact "through wine" hardware accelerated video decoding! It actually doesn't seem like a bad idea to me.. just a lot of work and requires wine to play accelerated video.
Note: VLC already has a self made dxva2api.h file :
http://download.videolan.org/pub/vid...rib/dxva2api.h which might be fairly easy to port to Linux when the r600g driver is used..?
Let me know what you guys think,
Mark