Sunday, June 22, 2008

Post-Production Woes

When I set out to build a system for HD video editing, I was limited by a few factors:
  1. I needed to edit in 1080i (rather than 720p)
  2. I needed to be able to color correct accurately
  3. I needed to mix the sound up to broadcast standards
  4. I didn't want to use any more power than I absolutely needed
  5. I needed the computer parts to be no more than around $3000
So, like so many independent video folks do, I began my quest to build the perfect cheap HD editing system. At the price point, I couldn't afford the hardware to do uncompressed HD editing, and I wasn't about to get into the mess of natively editing HDV MPEG-2 files. This means that I would have to convert the HDV footage into some other compressed codec first before editing.

Since I needed to do accurate color correction, didn't have a $2,000+ broadcast-quality LCD monitor, and did have a professional NTSC video monitor, I opted for the Blackmagic Intensity Pro card, a $250 wonder that uses HDMI to input HD, then your captured/edited HD can be viewed over an HDMI-equipped HDTV/monitor or analog component video-equipped TV/monitor. Using the latter, it worked just fine, since my monitor can do pseudo-HD (Only 800 lines, but enough for color correction).

If you're wondering what any of that has to do with a codec, here's the catch: In order to use the video output features of the Intensity Pro, I would have to use one of the Blackmagic codecs to edit in. Two of the codecs were uncompressed (8-bit and 10-bit HD), so that left an MJPEG variant. The upside of "Online JPEG" (as they named it) was that the storage requirements (both disk space and throughput) are about 1/10th the size they would be for uncompressed 8-bit HD. The downside (I found out) is that it's a processor-intensive codec to use.

In order to get the most bang for my buck (remember, this is towards the start of 2008), I decided on an Intel Core 2 Quad 6600 CPU. All the video benchmarks I could find put it way ahead of equivalent (and even more expensive) CPUs in video encoding benchmarks. I didn't want to fork over the insane cash to get a Quad-core Xeon, or I would've used that.

To make a long story short, I use Premiere Pro CS3 to edit, and I started to notice that just playing back the footage on the editing timeline was eating up 40-60% of my total processing power. That's a little worrying, but it's nothing compared to trying to use more than one video layer unrendered. All of a sudden, attempting to play back a simple transition or still made the CPU jump to around 95% usage, which means frames were being dropped in playback. Sometimes it would crash Premiere Pro entirely. Add to this other problems, including Premiere Pro randomly refusing to render (or even pre-render) footage, and I began to realize I had a problem.

After checking out help files and forums, I upgraded the following programs/drivers (in more or less this order):

  • Premiere Pro CS3
  • Intensity Pro (including a new firmware)
  • NVIDIA Geforce 8800GT
In the case of the first two upgrades, this seemed to help things a little bit... for a while, but only with rendering/pre-rendering. CPU usage was still ridiculously high, and so what I've had to do for the stuff I've done so far (Trailers and a rough cut) is upconvert segments of edited DV footage, and use only minimal titles and transitions. The crazy multi-layered timelines I used to do (in DV) wouldn't work here, so it's looking more and more like I'll need to do all my still usage in After Effects somehow, either by rendering out cut sequences (messy and storage-intensive) or by importing the timelines into After Effects (messier - I have to re-create all my titles, filters, and audio level work).

Update - I finally found a way to design titles and put in pictures, as well as edit DV footage natively. I recieved some XDCAM EX footage, and in the process of converting/importing it, I noticed it ran smoothly and stable (as well as using about 1/3 the processor power). Then I had an idea. I took my existing MJPEG project and imported it into a new XDCAM EX project. The source files were still MJPEG, and I can't do too much preview rendering, but I can now work unrendered with everything. Even Magic Bullet doesn't crash the system unless I have too much open. So, problem solved, but man, what a stupid work-around.

Update 2 - Turns it this didn't solve the full problem after all. During rendering a whole rough cut, Premiere Pro kept crashing on the end credits. Turns out, the titler was doing most of the crashing. The solution? The Windows XP "/3GB" switch in boot.ini, which basically allows individual programs to access more of the total system memory. Now, the titler doesn't crash, and not even the multi-layer Magic Bullet "misfire" effects crash Premiere Pro. The downside? Slower overall file access. I can live with that, though.

I also tried re-importing my XDCAM edit of the project back into an MJPEG project, but unrendered stuff still wouldn't play back well (although it didn't crash), so I;m going to continue to work with the XDCAM project until I'm ready to release the final cut.

Update 3 - Looks like either the /3GB switch causes some sort of memory leak if you try to run several programs in succession, or I have some odd other problem. If I use the computer for an extended period of time (say over 6 hours) or use other programs in the background while Premiere Pro is open, it starts to getting buggier and less responsive, until it needs a forced reboot. I'm going to look into this some more.

No comments:

Which deinterlacing algorithm is the best? Part 1 - HD interlaced footage

Before I began, I'd like to give a special thanks to Aleksander Kozak for his help in testing and providing the HD footage used in this ...