Apple Video is alossy video compression and decompression algorithm (codec) developed byApple Inc. and first released as part ofQuickTime 1.0 in 1991.[1] The codec is also known asQuickTime Video, by itsFourCCRPZA and the nameRoad Pizza.[2][3] (The codename "Road Pizza" is a reference to the idea that "when you run over an animal, you're basically compressing it on the freeway".[4]) When used in theAVIcontainer, the FourCCAZPR is also used.[3]
The bit-stream format of Apple Video has been reverse-engineered and a decoder has been implemented in the projects XAnim andLibavcodec.[2][5]
The codec operates on 4×4 blocks of pixels in theRGB colorspace. Each frame is segmented into 4×4 blocks in raster-scan order. Each block is coded in one of four coding modes: skip, single color, four color, or 16 color.[3] Colors are represented by 16 bits with abit-depth of 5 bit for each of the three components red, green, and blue, a format known asRGB555.[3] Because Apple Video operates in the image domain without motion compensation, decoding is much faster thanMPEG-style codecs which usemotion compensation and perform coding in atransform domain. As a tradeoff, the compression performance of Apple Video is lower.
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.[3] Runs of skip blocks are coded in arun-length encoding scheme, enabling a high compression ratio in static areas of the picture.[3]
In single color mode, all pixels in a block are decoded in the same color.[3] This can be interpreted as apalette with a single color.
In four color mode, each pixel in a block is decoded as one of four colors which are specified in a palette.[3] To select one of the four entries, 2 bits per pixel are written to the bit-stream. The same palette is used for a run of length between one and 32 blocks.[3] Of the four colors, two are explicitly written to the bit-stream, while the other two are calculated at the decoder bylinear interpolation in the RGB colorspace using the following equations:
where color0 and color3 are the two colors which are written in the bit-stream.[3] The four colors can be interpreted as lying equidistantly spaced on a line segment in the three-dimensional vector space with the three components red, green, and blue. The end-points of this line are written in the bit-stream. A similar color-interpolation scheme is used inS3 Texture Compression.
Interpreted asvector quantization, a three-dimensional vector with the components red, green, and blue isquantized using a codebook with four entries.
In 16-color mode, the color of each pixel in a block is explicitly written in the bit-stream.[3] This mode is lossless and equivalent to rawPCM without any compression.