libquicktime
Multichannel support

Enumerations

enum  lqt_channel_t {
  LQT_CHANNEL_UNKNOWN ,
  LQT_CHANNEL_FRONT_LEFT ,
  LQT_CHANNEL_FRONT_RIGHT ,
  LQT_CHANNEL_FRONT_CENTER ,
  LQT_CHANNEL_FRONT_CENTER_LEFT ,
  LQT_CHANNEL_FRONT_CENTER_RIGHT ,
  LQT_CHANNEL_BACK_CENTER ,
  LQT_CHANNEL_BACK_LEFT ,
  LQT_CHANNEL_BACK_RIGHT ,
  LQT_CHANNEL_SIDE_LEFT ,
  LQT_CHANNEL_SIDE_RIGHT ,
  LQT_CHANNEL_LFE ,
  LQT_CHANNEL_Ls ,
  LQT_CHANNEL_Rs ,
  LQT_CHANNEL_MONO ,
  LQT_CHANNEL_Lt ,
  LQT_CHANNEL_Rt
}
 Channel definitions. More...
 

Functions

const char * lqt_channel_to_string (lqt_channel_t ch)
 Convert a channel identifier to a human readnable string.
 
void lqt_set_channel_setup (quicktime_t *file, int track, lqt_channel_t *ch)
 Set a channel setup for an audio track.
 
const lqt_channel_tlqt_get_channel_setup (quicktime_t *file, int track)
 Get a channel setup from a file.
 

Detailed Description

This is an optional API extension, which allows multichannel configuration to be saved into a file. The mechanisms used are the quicktime chan atom as well as some codec specific multichannel setups.

When decoding, simply get the channel setup with lqt_get_channel_setup. It can happen, that this function returns NULL when no specific mapping is known.

When encoding, things are more complicated. Some codecs have fixed channel setups. After setting up an audio track, call lqt_get_channel_setup to check, if there is already a prefefined channel setup. If this is the case (i.e. if non NULL is returned), you MUST use this channel setup.

If there is no predefined setup (i.e. lqt_get_channel_setup returns NULL after creation of the audio track), call lqt_set_channel_setup to set your desired setup. It can happen, that libquicktime will reorder the channel setup. Thus you need a final call to lqt_get_channel_setup to know the whole truth.

Enumeration Type Documentation

◆ lqt_channel_t

Channel definitions.

These are the channel types defined in the public API. They should enable to support most channel configurations. Internally, many more channel types exist. They can be added to the public part on demand.

Function Documentation

◆ lqt_channel_to_string()

const char * lqt_channel_to_string ( lqt_channel_t ch)

Convert a channel identifier to a human readnable string.

Parameters
chA channel
Returns
A string describing the channel.

◆ lqt_set_channel_setup()

void lqt_set_channel_setup ( quicktime_t * file,
int track,
lqt_channel_t * ch )

Set a channel setup for an audio track.

Parameters
fileA quicktime handle
trackindex (starting with 0)
chChannel array

Set the desired channel setup for a file. Note, that libquicktime may reorder the channels. It is therefore necessary to call lqt_get_channel_setup after to know the final truth.

◆ lqt_get_channel_setup()

const lqt_channel_t * lqt_get_channel_setup ( quicktime_t * file,
int track )

Get a channel setup from a file.

Parameters
fileA quicktime handle
trackindex (starting with 0)
Returns
The channel array

Get the channel setup from a quicktime file. Works for en- and decoding. The return value is owned by libquicktime and must not be freed.