Codec information

The following concerns all the codecs built into the library.


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 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.


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 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 takes a quality factor from 1 - 100 and a booleen flag to determine whether floating point operations should be used to slow it down.


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.


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


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 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.


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.