QuickTime Graphics explained

QuickTime Graphics is a lossy video compression and decompression algorithm (codec) developed by Apple Inc. and first released as part of QuickTime 1.x in the early 1990s.[1] The codec is also known by the name Apple Graphics and its FourCC SMC.[2] [1] The codec operates on 8-bit palettized RGB data.[1] The bit-stream format of QuickTime Graphics has been reverse-engineered and a decoder has been implemented in the projects XAnim and libavcodec.[3] [2]

Technical Details

The input video that the codec operates on is in an 8-bit palettized RGB colorspace. Compression is achieved by conditional replenishment and by reducing the palette from 256 colors to a per-4×4 block adaptive palette of 1-16 colors. Because Apple Video operates in the image domain without motion compensation, decoding is much faster than MPEG-style codecs which use motion compensation and perform coding in a transform domain. As a tradeoff, the compression performance of Apple Graphics is lower. The decoding complexity is approximately 50% that of the QuickTime Animation codec.[4]

Each frame is segmented into 4×4 blocks in raster-scan order. Each block can be coded in one of the following coding modes: skip mode, single color, 2-, 4-, and 8 color palette modes, two repeat modes, and PCM.

Skip mode

The skip mode realizes conditional replenishment. If a block is coded in skip mode, the content of the block at same location in the previous frame is copied to the current frame.[1] Runs of skip blocks are coded in a run-length encoding scheme, enabling a high compression ratio in static areas of the picture.[1]

Single color

In single color mode, the entire 4×4 block is painted with a single color.[1] This mode can also be considered as a 1-color palette mode.

Palette (2, 4, or 8-color) modes

In the palette modes, each 4×4 block is coded with a 2, 4, or 8-color palette.[1] To select one of the colors from the palette, 1, 2, or 3 bits per pixel are used, respectively. The palette can be written to the bitstream either explicitly or as a reference to an entry in the palette cache.[1] The palette cache is a set of three circular buffers which store the 256 most recently used palettes, one each for of the 2, 4, and 8-color modes.[1]

Interpreted as vector quantization, three-dimensional vectors with components red, green, and blue are quantized using a forward adaptive codebook with between 1 and 8 entries.

Repeat modes

There are two different repeat modes.[1] In the single block repeat mode, the previous block is repeated a specified number of times.[1] In the two block repeat mode, the previous two blocks are repeated a specified number of times.[1]

PCM (16 color) mode

In 16-color mode, the color of each pixel in a block is explicitly written to the bit-stream.[1] This mode is lossless and equivalent to raw PCM without any compression.

See also

External links

Notes and References

  1. Web site: Apple SMC . 26 April 2011 . MultimediaWiki . 4 May 2013 . 15 May 2013 . https://web.archive.org/web/20130515163022/http://wiki.multimedia.cx/index.php?title=Apple_SMC . live .
  2. Web site: FFmpeg Documentation . . FFmpeg . 4 May 2013 . 29 June 2014 . https://web.archive.org/web/20140629194528/http://ffmpeg.org/general.html . live .
  3. Web site: xanim.2.70.6.4.2 README . Mark Podlipec . 10 December 1997 . XAnim . 4 May 2013 . 28 December 2015 . https://web.archive.org/web/20151228114941/http://www.math.unl.edu/~rdieter1/OpenStep/X11/xanim.2.70.6.4.2.README . dead .
  4. Web site: QuickTime Compression and Decompression Guide . Apple Computer, Inc. . 10 January 2006 . 4 May 2013.