Chapter 8. Porting Cosmo Compress Applications to Indigo2 IMPACT Compression

Before software that utilizes the Cosmo Compress option board can run on the Indigo2 IMPACT Compression option, it must be ported. This chapter is designed for those porting software from Cosmo Compression to Indigo2 IMPACT Compression. This chapter explains

Hardware Differences

Indigo2 IMPACT Compression is mostly a superset of the functionality provided by the Cosmo Compress option board. This section describes changes between the two options, including additional functionality and restricted functionality.

One of the major design goals of Indigo2 IMPACT Compression was to build an enhanced Cosmo Compress. Other goals were maintaining compatibility with Cosmo Compress-created data and making it simple to enable Cosmo Compress applications to work on Indigo2 IMPACT Compression.

Data created with Indigo2 IMPACT Compression is compatible with Cosmo Compress, with these caveats:

  • Movies created with low compression ratios (greater than approximately 7:1) do not play in real time on Cosmo Compress hardware.

  • Images larger than 768 x 300 pixels cannot be decompressed with Cosmo Compress.

The following points summarize hardware differences between the two compression options:

  • Two independent JPEG codecs

    Indigo2 IMPACT Compression adds a second identical and independent JPEG codec circuit. This circuit allows two applications to process JPEG compressed data independently, or allows one application to achieve both JPEG compression and decompression concurrently.Bbuilt-in video hardware

    Instead of depending upon a separate video option board for video input and output, Indigo2 IMPACT Compression adds built-in analog video support. The option can also be installed with Indigo2 IMPACT Video for I/O of digital component video formats; the two boards can operate together.

    Indigo2 IMPACT Compression includes one analog input, which is accessible by both codecs simultaneously, and one analog output, which is accessible by only one codec at a time. Analog genlock capability is included.

    Analog formats supported are standard NTSC and PAL, and non-square pixel format NTSC (CCIR 525) and PAL (CCIR 625).

  • Maximum image size

    The Cosmo Compress option required all images to transit the field buffer memories, even in memory-to-memory modes. Indigo2 IMPACT Compression removes this limitation, and supports image sizes up to 4080 pixels wide by 4088 lines high in memory-to-memory modes.

    Indigo2 IMPACT Compression does not process images larger than video size (768 x 576 at 50 fields/second) in real time.

Indigo2 IMPACT Compression has the following capabilities not found in Cosmo Compress:

  • Compression ratios as low as one output byte for each two input bytes (2:1) in real time (for video-sized images)

  • Hardware-implemented approximate target bit-rate control

  • Enhanced management of access and transactions on the GIO bus (the Silicon Graphics proprietary option bus used in the Indigo2 and Indy® workstations):

    • real-time memory-to-memory transfers (of images up to 768 x 576 at 50 fields/second)

    • uncompressed data transfers in top-down, bottom-up, or interleaved (both odd or even) patterns

  • Scaler and color-space conversion on each codec subsystem for video-sized images with a maximum size of 1000 x 1000 pixels during memory-to-memory decompression operations; larger images scaled and converted on the host CPU by a thread that the CL creates

    • shrinking of video-sized images

    • YCrCb 4:2:2-to-RGBX color-space conversion

Software Differences

Indigo2 IMPACT Compression CL software uses the same programming paradigms as Cosmo Compress, with differences necessary to enable the added capabilities of the hardware. The most pervasive change is in the way that the Compression Library and the Video Library interact. Indigo2 IMPACT Compression is treated as a combination VL and CL device, with synchronization between the two libraries being handled at the device driver level.

Indigo2 IMPACT Compression does not have a predefined value for its compression scheme. Instead, applications use the clQuerySchemeFromName() routine to query the CL for the current scheme value for the name impact. See the example “Memory-to-Memory Compression”.

Since Indigo2 IMPACT Compression has two JPEG codecs, an application that processes data to a CL_EXTERNAL_DEVICE needs some way of telling the VL which VL_CODEC node to open. (There is a one-to-one correspondence between the two VL_CODEC nodes and the two JPEG codecs.)

See “Compressing and Decompressing Video Through External Connections” for a discussion and example.

For Cosmo Compress, the application sets CL parameters to control the video capture rate. Indigo2 IMPACT Compression controls the rate with the control VL_RATE on the VL_CODEC node that is the source or drain of the VL path.