What takes 4.7 million lines of code, partner teams from all over Microsoft, and millions of dollars to create? The Xbox 360 system software? Nope. This is just the HD DVD player.
The Xbox platform team (us) is experiencing its own emergence day as of late; we’ve been hard at work for the past 8 months straight bringing the fall system update to fruition. I haven’t even posted since August. Daryl’s already gone over a lot of the features and changes that are in this release. I’ve personally been working on the Xbox 360 HD DVD player (which, by the way, reached the #1 best seller slot on Amazon.com’s video games category) and I thought I’d go over some of the technical difficulties it takes to bring HD DVD to market.
There’s a perception that HD DVD is just DVD with HD content, but once you look at things more closely, it’s clear that HD DVD is a different beast altogether. The Xbox platform team became serious about HD DVD last year, when Microsoft as a company threw its endorsement behind the standard.
The Xbox 360 HD DVD Player, for the most part, is an entirely software based implementation. Other players on the market have specialized chips (called DSPs) that decode things like H.264, MPEG, VC1, DTS, Dolby Digital, and other codecs. Much like how backwards compatibility for Xbox 1 works on Xbox 360, the heavy parts of HD DVD are all done on Xbox 360’s triple-core CPU.
If DVD is an audio/video pipeline with some navigation data (go to the menu, start playing, etc.), HD DVD can be considered a runtime environment where audio/video playback is just one major feature. So let’s break down that 4.7 million lines of code. I don’t have the numbers for each component, but each of these is a very significant chunk:
- Video Codecs: H.264, MPEG-2, VC1
- Audio Codecs: Dolby Digital+, DTS, TrueHD, LPCM, MPEG
- HDi: The HD DVD runtime engine.
- GDI: Drawing stuff like menus
- AACS: Cryptography/DRM stuff
- MF: Audio/Video pipeline
That’s a lot of stuff. Some of the acronyms may not be recognizable. GDI is the Graphics Device Interface, which has been a mainstay of the Windows operating system for many years, providing facilities to draw stuff on screens. MF is Media Foundation – a framework for audio/video pipelines that was being built for Windows Vista. The Windows teams in charge of the above components all pitched in to make them work on Xbox 360 while continuing to work on other Windows projects (Vista, CE, etc.) – quite a task.
A lot of the codecs existed in code at Microsoft before the Xbox 360 HD DVD Player was being built. However, it was all code that was optimized for PC platforms (windows/x86) and not Xbox 360’s PPC core. This meant doing a lot of optimization. In this regard, the Xbox 360 implementation of H.264 can be considered a crowning achievement. For this computationally expensive codec, a hybrid approach was taken. Since GPUs are very good at parallelized workloads, stuff that could be parallelized is computed there, while the stuff that can’t is better suited to the CPU and is done there.
Unlike DVD, where typical players pass the audio data from the disc through to your receiver, HD DVD requires that players mix sounds from menus and such in with the audio being played for the movie. The 360 player software decodes all the above codecs in software, mixes anything that needs to go together, re-encodes it into Dolby Digital and then sends that to your receiver. So, don’t be alarmed when your receiver still says “Dolby Digital” even if you’ve selected DTS in the menus.
All 6 of Xbox 360’s hardware threads are hard at work while playing back an HD DVD. At the moment, the player software pushes Xbox 360 harder than any other (save, perhaps, Gears of War during some particularly busy parts of the game).
If I’d have known how much work it was going to be bringing the 360 HD DVD Player out this year, I may not have signed up last year, but now that I can watch HD movies, it’s hard to go back to crummy old DVD 🙂