There can yet a lot be read about how nVIDIA outforms ATi when it comes to video decoding. I would like to take the opportunity to clarify a few things and add some personal statements on how I see things.
H.264 Level 5.1
By reading the H.264 specs, one may find out what Level 5.1 actually means. Resolutions of up to 1920x1080 at 120.5 fps and 4096x2048 at 30.0 fps, at bitrates of up to 300 Mbit/s for High Profile. Neither ATi UVD nor nVIDIA VP are up to this task and do not support Level 5.1 to a full extent. What nVIDIA does is extending the Level 4.1 specs a little bit when it comes to the maximum number of reference frames. Level 4.1 specifies a DPB (Decode Picture Buffer) size of 12288 KByte. The possible number of frames another frame can refer to when performing motion estimation/compensation is calculated as follows:
max. ref. frame count = DPB in Bytes / (width * height * 1.5)
For Level 4.1 @ 1080p this means:
max. ref. frame count = 12288 * 1024 / (1920 * 1080 * 1.5)
A maximum number of 4 reference frames is the result of this equation. All digital broadcasts and also the Blu-Ray specs adhere to the Level 4.1 limits. So why extending them? There have been times when those limits weren't quite clear. People thought it was a good idea to backup all their movies. For whatever reason, compression played an important role (I don't want to go into detail here, but the reason is certainly not only saving disc space ). So x264 came into play, giving the user a lot of freedom when dealing with the H.264 toolbox. To improve compressibility, people threw everything possible in there, mostly exceeding the Level 4.1 DPB limit.
Knowing that the VP was able to handle this "little" extension of Level 4.1, nVIDIA overcame the DPB limit, supporting up to 16 reference frames at 1080p. GPU's nowadays are accompanied by plenty of video memory. So this didn't seem to be a big deal.
I never really missed this feature with ATi GPU's. But I can still see quite a few people that went in favor of nVIDIA because of that.
Rumor has it that ATi's UVD would also be able to handle more than 4 reference frames for 1080p content. Several "dizzy hacks" exist that are supposed to unlock this "feature". I never tried one myself. It is said that these hacks do not work under all circumstances (depending on the OS and software/driver being used) and that UVD still won't handle the full 16 reference frames for progressive content. So it may still be a matter of luck whether a video plays fine or not.
H.264 Error Concealment
A problem however that I am dealing with on a regular basis is that with ATi's UVD being used, playback stumbles over little glitches within H.264 bitstreams and enters some kind of an inconsistent state. I don't want to go into detail here as I have already written a lengthy blog entry concerning this issue, see here. There are numerous discussions within several DVB communities. Live broadcasts via satellite are of course always more prone to errors which ATi does not take into account. To me it seems that they only see a market in Blu-Ray playback. But then again, they could have left out a 1080i temporal deinterlacer as well. nVIDIA developers on the other hand again have done their homework, seemingly performing a decent error concealment within their bitstream parser.
DXVA Profile Support
Starting with UVD2 and VP3, both, AMD/ATi and nVIDIA feature full bitstream support for all Blu-Ray video formats, including MPEG-2. Question is how can a decoder take advantage of that? DXVAChecker reveals what drivers provide to access the hardware decoders under Windows operating systems.
In case of ATi, there seems to be no standard interface to offload the whole MPEG-2 bitstream decoding to the UVD. DXVA decoders still use the iDCT profile, performing iQ, iDCT and motion compensation within shader and also CPU ALU's. Entropy decoding (VLD) is fully handled by the CPU. With GPU shader and CPU ALU's being general purpose nature, power consumption would come down quite a bit if all stages were decoded within ATi's UVD fixed function unit, especially for HD content.
nVIDIA ION and all GPU's with >= VP3 on the other hand provide 'ModeMPEG2_VLD' to DXVA decoders, see figure 2.
So again, ATi driver developers seem to have flunked a lesson.
Even 'Film Grain Technology' is supported by nVIDIA. I have no idea about the relevance of this feature in real life...
When it comes to supporting the video decoding fixed function units, nVIDIA drivers simply seem to be more complete. Quite some things to do for the AVIVO team in my opinion.
Video post processing is another story of course which is not covered here.