# Codec information

The following concerns all the codecs built into the library.

# DIVX

This encodes video in MPEG-4 using the OpenDivx codec. This is the preferred compressed format although it probably won't be supported by Microsoft or Apple any time soon. It takes the following parameters:

`divx_bitrate (int)
divx_rc_period (int)
divx_rc_reaction_ratio (int)
divx_rc_reaction_period (int)
divx_max_key_interval (int)
divx_max_quantizer (int)
divx_min_quantizer (int)
divx_quantizer (int)
divx_quality (int)
divx_fix_bitrate (int)
`

# DV

DV is supported for full decoding but only for black and white encoding on IA-32 platforms/architectures. Secondly, only NTSC 25 Mbit/sec 4:1:1 DV data has ever been tested. There are two derivatives of DV: DVC and DVCP. Only DVC is currently supported.

# IMA4

The IMA4 compressor reduces 16 bit audio data to 1/4 size, with very good quality. For many years IMA4 was the best compressed audio format in Quicktime. The first Starwars trailer in 1998 was encoded using IMA4 audio.

# JPEG

JPEG is preferred for compressed video. This format writes a seperate JPEG photo for every frame in YUV 4:2:0.

JPEG supports the following parameters, which can be set after quicktime_set_video.

`jpeg_quality (int)
jpeg_usefloat (int)
`

These take a quality factor from 1 - 100 and a booleen flag to determine whether floating point operations should be used to slow it down.

# MJPA

MJPA stores each frame as two JPEGs interlaced and in YUV 4:2:2. The real advantage is that it can split compression and decompression across 2 processors and it supports higher color sampling than JPEG Photo. To enable dualized MJPA processing call:

`quicktime_set_cpus(quicktime_t *file, int cpus);`

immediately after the quicktime_init call. Cpus should contain the number of CPUs to devote to compression.

After specifying MJPA in quicktime_set_video you need to call quicktime_set_jpeg as described previously.

# PNG

This consists of one PNG image for every frame. Like RAW this codec supports 32 bit depths.

# RAW

RAW identifies both a video and an audio codec. When you specify RAW for an audio track you invoke unsigned 8 bit encoding so you'll probably never use it.

When you specify RAW for a video track you get RGB packed frames. RAW video supports alpha channels. To get RGBA packed frames you can then issue

`int quicktime_set_depth(quicktime_t *file, int depth, int track);`

specifying a depth of 32.

# TWOS

Twos is the preferred encoding for uncompressed audio. It stores 8, 16, and 24 bit audio, interleaved for multiple channels. The 8 bit mode is signed. The 16 and 24 bit modes are big endian signed.

# Vorbis

This is the preferred encoding for compressed audio although it probably won't be supported by Microsoft or Apple any time soon. It takes the following parameters:

`vorbis_bitrate (int)
vorbis_max_bitrate (int)
vorbis_min_bitrate (int)
`

Units are bits per second.