We finally have tons of machines that come in these tiny little boxes, sometimes with pretty interfaces, that hook straight up to our TVs. We’ve been asking for this for years and we finally have it. They’re even downright affordable. In order to make them affordable, they use cheap hardware. In particular, slow CPUs. they’re not that bad. Definitely fast enough to browse a bunch of movies or TV shows, but generally too slow to play back high definition video.

Pine Trail, a great little platform, uses very little power, it just can't play 1080p video

NVIDIA built an entire platform out of addressing this deficiency. It’s called ION, and it mates a fast-enough-for-most-things CPU with a GPU capable of decoding 1080p video. Hooray for NVIDIA. Here’s the problem - ION is not retrofittable.

ION, it's a new system, not an upgrade

If you have a non-ION netbook, nettop, AppleTV, Mac Mini, or other impressively tiny device that you want to use to drive high definition video you can’t. And you can’t upgrade them to enable such support.

It’s not like buying a hard drive or more memory. Well, it wasn’t at least.

In one of my last articles on ION I talked about XBMC being one of the best applications for the platform. It delivers a better UI for watching downloaded content than Windows Media Center does, and the Linux version has full hardware acceleration support for ION. Oh, and it’s free.

And today it just got incredible. Thanks to the efforts of Scott Davilla, the XBMC developers and Broadcom there’s now full support for the Broadcom Crystal HD decoder (BCM970012) in all versions of XBMC. The code has been merged into XBMC as of this morning and will be available in the next release of the project.

The Crystal HD chip is currently available on mini PCIe cards, and is expected to make its way to ExpressCard and PCIe x1 cards in the future. This is huge because many netbooks, nettops and existing devices like the AppleTV or Mac Mini have at least one mini PCIe slot. A $69 mini PCIe card (or $25 on eBay) with the Crystal HD chip on it plus the next version of XBMC can enable full 1080p playback on any of these machines that would otherwise not be able to play high def video. Not to mention that you can get some of these devices second hand or refurbished for much less than the cost of a new ION system.

It’s extra sweet because the driver is open source, so we can expect to see it more than just XBMC. The next official release of XBMC is likely some time away, but support has already been added to the SVN release.

The full press release from XBMC is below.

Broadcom Crystal HD, It's Magic.

1080p HD content playback has always been the Holy Grail for any Media Center application but this has traditionally been difficult; playback using software decode alone requires a very hefty CPU and hardware decoding has only been made available recently using the nVidia's VPDAU technology, available only on Linux. Windows has its own platform specific solutions and poor old OSX has no public APIs available at all. There really is nothing around with a common API that enables hardware accelerated 1080p HD content playback that can also be used under all three major platforms (OSX, Linux, and Windows). Well, that situation is about to change.

Through hard work and the joint efforts of several TeamXBMC/Redhat developers and the Broadcom Media PC Group, cross-platform hardware decoding of mpeg2, h.264 and VC1 video content up to 1080p will be coming to XBMC on OSX, Linux, and Windows via the Broadcom Crystal HD Hardware Decoder (BCM970012). The Broadcom Crystal HD is available now in a mini-PCIE card with ExpressCard and 1X PCIE form factors to follow. This means that the AppleTV and all those lovely new netbooks, Eee Boxes and older Intel Mac Minis have exciting new potential.

This solution has a common programming API, so many 3rd party developers and applications will be able to leverage hardware accelerated video content playback across OSX, Linux, and Windows platforms with minimal source code changes. Best of all, this is an open source solution with full source code for driver and library available for OSX and Linux under a GPL/LGPL license. Wow, this indeed is the Holy Grail and a major score for the open source community as this means no more tainted Linux kernels! Support has already been added to XBMC under the svn trunk. Other media projects such as FFmpeg, MythTV and Xine will soon follow as their developers add support.

The Nvidia 8400 GS is available in PCI and supports VDPAU in Linux. Contrary to what the other guy says, this does work well to decode 1080p. In fact, resolution doesn't dictate the bandwidth - the bitrate of the video does. Reply

I use a passive-heatsink only Sparkle 8400GS 512MB PCI card. Sometimes they go on sale for $30-35 USD @ Newegg.com with free shipping. It's been well tested for complete GPU-offload via VDPAU on 1080p/1080i/720p (H264/VC1/MPEG2) in XBMC & MythTV 0.22 in Linux. Reply

You are correct, since you're sending the compressed video to be decompressed to the final device that will display the uncompressed video. So all you need to get to the 8400 GS, via PCI, is the MPEG/H264/VC-1 data which is relatively low bit-rate.

However, the Crystal HD is a decoder only. It is not the device which displays the final video. Once the video stream is uncompressed, you need to send it to the GPU for display. That's where PCI bandwidth limitations come into play; you need to send uncompressed video to the GPU.

That's where PCIe x1 (i.e. miniPCIe x1) works because even v1.0 of the PCI-Express specifications supports 250MB/s of bandwidth (or 4GB/s in a x16 lane configuration) before it hits the hub to send to a PCIe GPU. Reply

PCI bandwidth is limited (and shared with many other devices). For 1080p content, you need to send about 6 MB per frame (1920 by 1080, times 24 bits per pixel). This makes for about 180 MB per second, well above the 133 MB per second of the PCI (33 MHz times 32 bits). Reply

Should require slightly less bandwidth. Video is yuv, so 16bit per pixel (every graphic chip since about just forever should handle this, so there's no need to convert that to RGB with the decoder chip), so that's only 4MB per frame, and at the typical 24fps that's "only" ~100MB per second - together with the compressed bits possibly still too much to really work in practice with pci. Reply