A Small Production System - Current Status
We're doing more and more video work in my team, the latest being some of the videos used for our Expression 3/Silverlight 3 launch in San Francisco last week. You'll be able to see some of these on www.seethelight.com soon.
Because one of the standout features of Silverlight 3 is Smooth Streaming, our adaptive streaming technology, I want to do what I can to ensure that video content we produce is of high-quality.
Since most of our cameras are HD capable, shooting in HD is expected even if it isn't always warranted - just because it is HD doesn't mean it is going to look great - but we do what is expected, so HD it is. Sometimes, this has useful side effects. For example, the SF launch was professionally recorded and "live compositing" was performed on-site targeting 720p. The additional horizontal real estate on the screen, enabled us to have a nice large window for the slides or demo, and a decent size window of the camera feed (see below). We wouldn't have been able to do that in a 4:3 frame size. Now in this instance, the camera feed wasn't actually SD, but the output was recorded in an HD format.
But that's material for another time. This blog post is about putting together a meaty enough system for doing live capture and editing.
For a while, I've been using a combination of a MacBook Pro running Windows 7 RC or Mac OS 10.5 depending on the situation, and a quad-core AMD machine. I wanted to have hardware capture capability in order to both capture uncompressed video sources for testing and also to capture computer generated video at full frame rates. This type of capturing eats up disk space like nothing else. I also need to deal with the material once it has been captured - both editing and compression. So I'm gradually building up something that will meet these needs. Before launch, I was working with a "Frankenrig" PC that I cobbled together out of parts. The most significant additions proved to be an external 2TB drive setup as RAID 0 and an Intel Q9550 quad-core processor. The 2TB drive is a bargain basement SimpleTech from Fry's (which cost the princely sum of $199 if you can believe that), yet it has USB 2.0, Firewire 400, Firewire 800 and most importantly eSATA.
The video capture card is a Blackmagic Intensity Pro, which features an HDMI input, an HDMI output and an impressive D connector pigtail of analogue connections for audio and video. Its more expensive siblings, the Decklink series, feature SDI, which seemed to be overkill for my needs. Now I've had success with the Blackmagic cards before for video capture, but audio has always been problematic being plagued with sync issues. The jury is still out, but my hope is that with a more capable system that I outline below, I'll be setup for success.
I wanted a compact case that could be transported (and shipped) easily. At the same time, I wanted something that would have enough internal bays for a system drive and two drives for an internal RAID 0 array. Why the preoccupation with RAID 0? I need the speed, or rather HD video does. I settled on an Apevia X-Qpack2, which is for a Micro ATX motherboard and features a 500W power supply, two hard drive bays, one 3.5" external bay and two 5.25" external bays. This accommodates my storage requirements well.
I have had good experience with Intel motherboards, and I chose a DG45ID, which is a recent board based on the G45 chipset and includes on-board video. This seems to be a popular board amongst HTPC builders since it features both HDMI and DVI outputs. I paired the board with 4GB of RAM and an Intel Q9550 quad-core CPU running at 2.83GHz.
I re-used a 300GB SATA drive for the system (I like to keep the system and ideally the apps on separate physical drives, and the data on an array) and a couple of old 160GB SATA drives for the RAID 0 array for testing. I hooked up everything to the motherboard and set the RAID option in the BIOS and started installing Windows 7 RC. Here's a nice twist: I did this from a USB flash drive, which makes the installation process much quicker than from optical media or the network. Instructions for how to take an ISO and put it onto the USB flash drive can be found in many places, but I used the procedure outline here. Yet again, Windows 7 blew me away with recognising pretty much everything on the board and downloading updated chipset drivers from Windows Update. Great stuff! The only thing it didn't find was a PCI Simple Communications Controller, which was banged in Device Manager. There may be other solutions, but I downloaded the Intel Management Engine driver from Intel's site. The only trick is to run it in compatibility mode for Vista, otherwise it will fail claiming "wrong OS". I also had to download and install the Intel Matrix Storage Manager, which let me see and configure the RAID array from within Windows. The last step was to download and install the Blackmagic Intensity Pro drivers.
Blackmagic ships a useful Speed Test utlity, which is installed with the driver. It will run without a Blackmagic card in the system, and is useful for determining whether your machine is fast enough to handle video capture. I also used Passmark's PerformanceTest to evaluate raw disk benchmarks. The initial results were not at all promising. The Blackmagic Speed Test was telling me that I could get a 63 frames per second capturing 720p video in 8-bit 4:2:2 uncompressed. If I went the compressed MJPEG route, I could get better results but they caution that there's overhead that isn't reflected in those results, so it didn't look good for capturing a 720p60 source. I got slightly better results with the eSATA 2TB drive, but nothing to write home about. The disk write performance was about 80MB/s.
As an experiment I took the external drive apart and used its two drives directly as internal drives in the computer. These were much more recent drives (Hitachi Deskstars with a 32MB buffer) and they basically doubled the performance, so that's looking good.
As another experiment, I used a Highpoint Technologies RocketRAID 2642 hardware RAID controller, which uses a Marvell 88SE6445 accelerator and seems to be well received. Unfortunately, I saw no noticeable difference - in fact performance was slightly worse. Using another (more expensive) controller like an Adaptec or a 3ware may yield better results, but I do not have the ability to test this at the moment. So the Highpoint went back to Fry's and I'll stick with the stock Intel chipset for now.
A couple of notes, which may be useful to others considering a build like this. First of all, if you even think you're going to go for a motherboard-based RAID implementation at some point, select RAID in the BIOS before installing the OS. It will make your life easier down the road. Second, while BIOS updates are generally a good thing, I found that having gone a fully setup RAID system with an initial release to the latest BIOS caused the system to become non-bootable and I had to reinstall everything. Finally, the Highpoint RocketRAID card was not happy with the on-board controller set to RAID, which meant another reinstall of the OS. Thankfully installing from the USB flash drive and not having anything on the computer made it relatively painless...
I'm going to put Windows 7 64-bit on the machine since everything seems to have a 64-bit driver and we'll see how everything looks when I start capturing video. Stay tuned...