Robert X. Cringely speculates in his latest column that Apple may soon be adding H.264 hardware decoding and encoding to its Macintosh line. Cringely is wrong more often than he is right so the truth of this rumor is unknown. I’m sure someone at Apple is at least studying the idea. More interesting to me than whether or not Apple is shipping a $50 chip in all Macs to do H.264 is his talk about why no one has done this before. He hints at a conspiracy of sorts to keep video-accelerating hardware away from the public. I worked on DVD playback at Microsoft from nearly the inception. There are good reasons you don’t have hardware decoders in your system right now. Let me explain.
Cringely says, “Maybe the reason is economic (save the $7) or maybe it is political (Microsoft or maybe Apple are for some reason opposed to hardware decoding). But like a lot of real reasons, I think it probably comes down to hubris and the simple fact that by decoding video in software, road warriors have another incentive to buy a more expensive — and more powerful — computer.” The truth is, Microsoft did work back in 1997 to enable hardware decoding in Windows. The support shipped in the form of DirectX Media around Thanksgiving of that year. I think it was in version 5.2 of the SDK. This functionality first shipped with Windows in Windows 98. Several vendors took advantage of this support. Toshiba had an early system which shipped with DVD decoding in hardware. I still have one of their full-length PCI boards hanging in my office. IBM shipped the Thinkpad with hardware decoding for several years. Dell offered an upgrade to a Luxsonor decoder card. Creative shipped the DXR2 and DXR3 at retail.
Despite these many offerings, the market for hardware decoders never grew very big. Why not? Because software could do the job and it was substantially cheaper. Whereas a hardware decoder might cost $10-$50 in COGS (just a guess), a software decoder could be had for something like $1 in volume. Even on early PCs, the CPU was fast enough to decode the MPEG2 streams for DVD. A Pentium 2 – 266 could almost keep up and a 333 had plenty of horsepower. Today’s operating systems and background processes sap a lot more power than did Windows 98 but there’s still plenty of power there.
Rarely, however, does DVD play on a computer though without some sort of hardware assistance. As early as the ATI Rage II+, display cards included special hardware designed to accelerate MPEG2 decoding. On Windows 95 and its variants, this hardware was accessed in a propreitary fashion. With Windows 2000, Microsoft created a standard called DirectX Video Acceleration (DXVA) which is used today by all DVD decoders to utilize this hardware. Depending on the display chip, you may get more or less acceleration but the software is always offloading at least a portion of the work to the GPU.
In June of 2005 Microsoft shipped DXVA support for WMV-9. With Windows Vista, we also support accelerating VC-1 (the variant of WMV used in HD-DVD and BluRay) and H.264 via DXVA.
So, is there a conspiracy to get you to buy more expensive PCs just to play video? No. It saves money to decode video without a specialized device just for video. It is for economic reasons that there are not dedicated hardware decoders. It’s cheaper (and just as effective) to decode video in software with a hardware boost than to ship a chip to do just decoding.
So why then is Apple possibly considering a video acceleration chip in the Mac? There are two possible reasons. The first is that H.264 is really, really hard to decode. It is a lot harder to decode than MPEG-2, DIVX, or even WMV9/VC-1. Support for H.264 acceleration on graphics chips is also behind the support for other codecs. Probably the more likely reason is for encoding. Encoding is a lot harder than decoding (because it requires a full decode in addition to the encode portions). If Apple wants to do something like timeshifting in H.264, it will need hardware to do it. Media Center (now included in Vista Home Premium) usually uses dedicated MPEG-2 encoding chips for the TV functionality.