On Tue, May 12, 2009 at 11:25 AM, Rafał Miłecki
W dniu 12 maja 2009 17:13 użytkownik Alex Deucher
napisał: On Tue, May 12, 2009 at 11:08 AM, Rafał Miłecki
wrote: More problematic may be decoding. That can be in 4 ways: 1) Software (CPU) decoding 2) Software (CPU) multi-thread decoding 3) Hardware (GPU) decoding with special hardware engine (vendor specified) 4) Hardware (GPU) decoding with shaders (universal)
1) On modern CPUs you can succesfully decode most 720p movies.
2) Problem comes with 1080p, when one core (for example on my Intel C2D P8400) is often not enought. Then you have to use more cores but standard ffmpeg (used by MPlayer) can't do that. It's implemented in experimental ffmpeg-mt but it is not stable yet (and won't be soon).
3) Both AMD and NVidia has special hardware blocks to decode video (RS690 doesn't AFAIR). Unfortunately that won't become available in open source driver due to some legal issues. NVidia offers it in it's closed driver (VDPAU), AMD doesn't even in fglrx.
4) Nothing special available for now, read http://bitblitter.blogspot.com/
So it's really hard to play full HD material on ATI :( What's worse I don't see any solution coming soon. Personally I use ffmpeg-mt for playing 1080p materials. It sometimes crashes but it mostly happens on starting, stoping and seeking video. Almost never after you already started playback.
Video decode is mostly done on shaders (at least motion compensation) on that hardware. We've released the 3D engine information on these chips so this could be implemented now if anyone was so inclined.
Can you be more specific about this, please? I'm really intereseted
Do you mean "is mostly done" or rather "can be mostly done"? Is that implemented anywhere? Does that hardware mean RS690 or R5xx-R7xx, or...? If you mean shared-based decoding why do you mention 3D specs? I thought such a shaders decoding is quite universal, as shareds itself are universal. Don't really understand that, I really would love to hear something more on that.
There are several stages in the decode part of the pipeline. idct and mc are the main ones. On r1xx-r5xx (including rs6xx), we do the mc part for the decode using the 3D engine (shaders on r3xx+, special instructions on r1xx-r2xx). R6xx and r7xx chips have a special dedicated UVD block for video decode. We plan to review that block to see if we can release any of it, but no promises. Regardless, you could do mc on r6xx/r7xx using shaders as well. For MPEG1/2 you could implement an XvMC driver and implement mc using shaders. I believe intel does this. The problem is XvMC doesn't support newer formats like H.264 or whatever. Alex -- To unsubscribe, e-mail: radeonhd+unsubscribe@opensuse.org For additional commands, e-mail: radeonhd+help@opensuse.org