Uncompressed Video Disk I/O: Introduction and Scope

This case study explores the topic of recording and playing back full-size, full-rate uncompressed video on disks attached to your SGI workstation. It assumes that the video passes through main memory as fields (VL_CAPTURE_NONINTERLEAVED) on its way between the video and disk subsystems. Many of the topics we will discuss also apply to other capture types.

These pages do not cover external video disk recorders such as those from Abekas or Accom. External video disk recorders record and play back video in real-time using their own video inputs and outputs. An attached computer issues play/stop/record/seek commands to the disk recorder, and can upload or download video data, typically in non-real-time, over a serial, ethernet, SCSI, or GIO link.

These pages do not yet cover recording and playing synchronized audio along with the video.

We will show you SGI Movie Library calls you can use to efficiently read and write uncompressed video in a QuickTime file.

Bandwidth Requirement

The lurker page How Big is Video? shows you how to determine the pixel rate of full-rate, full-size video with the 4 major video timings, and computes bytes per second values assuming 2 and 4 bytes per pixel. From this, you can see that the bandwidth requirement varies wildly depending on the pixel format used and whether one is capturing the active picture or the full-raster. The wimpiest format (NTSC active region at 2 bytes per pixels) comes out at 17.947Mb/sec, so clearly we're talking bandwidths that stretch the limits of low-end systems.

Applicable Video Devices

Of the video devices described in the lurker's guide (see What Are the SGI Video Devices? for a complete list and definitions), these devices can transfer full-size, full-rate uncompressed video to and from memory:

All the devices in this list support the 2-byte-per-pixel 4:2:2 VL_PACKING_YVYU_422_8 packing at full-rate. Many of them also have full-rate support for various RGBA and 4:2:2 and 4:4:4 YCrCb packings ranging from 2 to 8 bytes per pixel. The Pixel Rosetta Stone: Packings and Colorspaces discusses the packings in detail and indicates which are supported in real-time by which devices.

The vino (built-in Indy) device can bring video into memory at full-size and full-rate. This case study currently does not discuss uncompressed video disk i/o with this combination, though theoretically it is possible (since one can insert a GIO card to get the required disk bandwidth).