PulseAudio  16.0
channelmap.h File Reference

Constants and routines for channel mapping handling. More...

Go to the source code of this file.

Data Structures

struct  pa_channel_map
 A channel map which can be used to attach labels to specific channels of a stream. More...
 

Macros

#define PA_CHANNEL_POSITION_MASK(f)   ((pa_channel_position_mask_t) (1ULL << (f)))
 Makes a bit mask from a channel position. More...
 
#define PA_CHANNEL_MAP_SNPRINT_MAX   336
 The maximum length of strings returned by pa_channel_map_snprint(). More...
 

Typedefs

typedef enum pa_channel_position pa_channel_position_t
 A list of channel labels. More...
 
typedef uint64_t pa_channel_position_mask_t
 A mask of channel positions. More...
 
typedef enum pa_channel_map_def pa_channel_map_def_t
 A list of channel mapping definitions for pa_channel_map_init_auto() More...
 
typedef struct pa_channel_map pa_channel_map
 A channel map which can be used to attach labels to specific channels of a stream. More...
 

Enumerations

enum  pa_channel_position {
  PA_CHANNEL_POSITION_INVALID = -1 ,
  PA_CHANNEL_POSITION_MONO = 0 ,
  PA_CHANNEL_POSITION_FRONT_LEFT ,
  PA_CHANNEL_POSITION_FRONT_RIGHT ,
  PA_CHANNEL_POSITION_FRONT_CENTER ,
  PA_CHANNEL_POSITION_REAR_CENTER ,
  PA_CHANNEL_POSITION_REAR_LEFT ,
  PA_CHANNEL_POSITION_REAR_RIGHT ,
  PA_CHANNEL_POSITION_LFE ,
  PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER ,
  PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER ,
  PA_CHANNEL_POSITION_SIDE_LEFT ,
  PA_CHANNEL_POSITION_SIDE_RIGHT ,
  PA_CHANNEL_POSITION_AUX0 ,
  PA_CHANNEL_POSITION_AUX1 ,
  PA_CHANNEL_POSITION_AUX2 ,
  PA_CHANNEL_POSITION_AUX3 ,
  PA_CHANNEL_POSITION_AUX4 ,
  PA_CHANNEL_POSITION_AUX5 ,
  PA_CHANNEL_POSITION_AUX6 ,
  PA_CHANNEL_POSITION_AUX7 ,
  PA_CHANNEL_POSITION_AUX8 ,
  PA_CHANNEL_POSITION_AUX9 ,
  PA_CHANNEL_POSITION_AUX10 ,
  PA_CHANNEL_POSITION_AUX11 ,
  PA_CHANNEL_POSITION_AUX12 ,
  PA_CHANNEL_POSITION_AUX13 ,
  PA_CHANNEL_POSITION_AUX14 ,
  PA_CHANNEL_POSITION_AUX15 ,
  PA_CHANNEL_POSITION_AUX16 ,
  PA_CHANNEL_POSITION_AUX17 ,
  PA_CHANNEL_POSITION_AUX18 ,
  PA_CHANNEL_POSITION_AUX19 ,
  PA_CHANNEL_POSITION_AUX20 ,
  PA_CHANNEL_POSITION_AUX21 ,
  PA_CHANNEL_POSITION_AUX22 ,
  PA_CHANNEL_POSITION_AUX23 ,
  PA_CHANNEL_POSITION_AUX24 ,
  PA_CHANNEL_POSITION_AUX25 ,
  PA_CHANNEL_POSITION_AUX26 ,
  PA_CHANNEL_POSITION_AUX27 ,
  PA_CHANNEL_POSITION_AUX28 ,
  PA_CHANNEL_POSITION_AUX29 ,
  PA_CHANNEL_POSITION_AUX30 ,
  PA_CHANNEL_POSITION_AUX31 ,
  PA_CHANNEL_POSITION_TOP_CENTER ,
  PA_CHANNEL_POSITION_TOP_FRONT_LEFT ,
  PA_CHANNEL_POSITION_TOP_FRONT_RIGHT ,
  PA_CHANNEL_POSITION_TOP_FRONT_CENTER ,
  PA_CHANNEL_POSITION_TOP_REAR_LEFT ,
  PA_CHANNEL_POSITION_TOP_REAR_RIGHT ,
  PA_CHANNEL_POSITION_TOP_REAR_CENTER ,
  PA_CHANNEL_POSITION_MAX
}
 A list of channel labels. More...
 
enum  pa_channel_map_def {
  PA_CHANNEL_MAP_AIFF ,
  PA_CHANNEL_MAP_AUX ,
  PA_CHANNEL_MAP_WAVEEX ,
  PA_CHANNEL_MAP_DEF_MAX ,
  PA_CHANNEL_MAP_DEFAULT = PA_CHANNEL_MAP_AIFF
}
 A list of channel mapping definitions for pa_channel_map_init_auto() More...
 

Functions

pa_channel_mappa_channel_map_init (pa_channel_map *m)
 Initialize the specified channel map and return a pointer to it. More...
 
pa_channel_mappa_channel_map_init_mono (pa_channel_map *m)
 Initialize the specified channel map for monaural audio and return a pointer to it. More...
 
pa_channel_mappa_channel_map_init_stereo (pa_channel_map *m)
 Initialize the specified channel map for stereophonic audio and return a pointer to it. More...
 
pa_channel_mappa_channel_map_init_auto (pa_channel_map *m, unsigned channels, pa_channel_map_def_t def)
 Initialize the specified channel map for the specified number of channels using default labels and return a pointer to it. More...
 
pa_channel_mappa_channel_map_init_extend (pa_channel_map *m, unsigned channels, pa_channel_map_def_t def)
 Similar to pa_channel_map_init_auto() but instead of failing if no default mapping is known with the specified parameters it will synthesize a mapping based on a known mapping with fewer channels and fill up the rest with AUX0...AUX31 channels. More...
 
const char * pa_channel_position_to_string (pa_channel_position_t pos) PA_GCC_PURE
 Return a text label for the specified channel position. More...
 
pa_channel_position_t pa_channel_position_from_string (const char *s) PA_GCC_PURE
 The inverse of pa_channel_position_to_string(). More...
 
const char * pa_channel_position_to_pretty_string (pa_channel_position_t pos)
 Return a human readable text label for the specified channel position. More...
 
char * pa_channel_map_snprint (char *s, size_t l, const pa_channel_map *map)
 Make a human readable string from the specified channel map. More...
 
pa_channel_mappa_channel_map_parse (pa_channel_map *map, const char *s)
 Parse a channel position list or well-known mapping name into a channel map structure. More...
 
int pa_channel_map_equal (const pa_channel_map *a, const pa_channel_map *b) PA_GCC_PURE
 Compare two channel maps. More...
 
int pa_channel_map_valid (const pa_channel_map *map) PA_GCC_PURE
 Return non-zero if the specified channel map is considered valid. More...
 
int pa_channel_map_compatible (const pa_channel_map *map, const pa_sample_spec *ss) PA_GCC_PURE
 Return non-zero if the specified channel map is compatible with the specified sample spec. More...
 
int pa_channel_map_superset (const pa_channel_map *a, const pa_channel_map *b) PA_GCC_PURE
 Returns non-zero if every channel defined in b is also defined in a. More...
 
int pa_channel_map_can_balance (const pa_channel_map *map) PA_GCC_PURE
 Returns non-zero if it makes sense to apply a volume 'balance' with this mapping, i.e. if there are left/right channels available. More...
 
int pa_channel_map_can_fade (const pa_channel_map *map) PA_GCC_PURE
 Returns non-zero if it makes sense to apply a volume 'fade' (i.e. 'balance' between front and rear) with this mapping, i.e. if there are front/rear channels available. More...
 
int pa_channel_map_can_lfe_balance (const pa_channel_map *map) PA_GCC_PURE
 Returns non-zero if it makes sense to apply a volume 'lfe balance' (i.e. 'balance' between LFE and non-LFE channels) with this mapping, i.e. if there are LFE and non-LFE channels available. More...
 
const char * pa_channel_map_to_name (const pa_channel_map *map) PA_GCC_PURE
 Tries to find a well-known channel mapping name for this channel mapping, i.e. "stereo", "surround-71" and so on. More...
 
const char * pa_channel_map_to_pretty_name (const pa_channel_map *map) PA_GCC_PURE
 Tries to find a human readable text label for this channel mapping, i.e. "Stereo", "Surround 7.1" and so on. More...
 
int pa_channel_map_has_position (const pa_channel_map *map, pa_channel_position_t p) PA_GCC_PURE
 Returns non-zero if the specified channel position is available at least once in the channel map. More...
 
pa_channel_position_mask_t pa_channel_map_mask (const pa_channel_map *map) PA_GCC_PURE
 Generates a bit mask from a channel map. More...
 

Detailed Description

Constants and routines for channel mapping handling.

See also Channel Maps

Macro Definition Documentation

◆ PA_CHANNEL_MAP_SNPRINT_MAX

#define PA_CHANNEL_MAP_SNPRINT_MAX   336

The maximum length of strings returned by pa_channel_map_snprint().

Please note that this value can change with any release without warning and without being considered API or ABI breakage. You should not use this definition anywhere where it might become part of an ABI.

◆ PA_CHANNEL_POSITION_MASK

#define PA_CHANNEL_POSITION_MASK (   f)    ((pa_channel_position_mask_t) (1ULL << (f)))

Makes a bit mask from a channel position.

Since
0.9.16

Typedef Documentation

◆ pa_channel_map

A channel map which can be used to attach labels to specific channels of a stream.

These values are relevant for conversion and mixing of streams

◆ pa_channel_map_def_t

A list of channel mapping definitions for pa_channel_map_init_auto()

◆ pa_channel_position_mask_t

typedef uint64_t pa_channel_position_mask_t

A mask of channel positions.

Since
0.9.16

◆ pa_channel_position_t

A list of channel labels.

Enumeration Type Documentation

◆ pa_channel_map_def

A list of channel mapping definitions for pa_channel_map_init_auto()

Enumerator
PA_CHANNEL_MAP_AIFF 

The mapping from RFC3551, which is based on AIFF-C.

PA_CHANNEL_MAP_AUX 

Only aux channels.

PA_CHANNEL_MAP_WAVEEX 

Microsoft's WAVEFORMATEXTENSIBLE mapping.

This mapping works as if all LSBs of dwChannelMask are set.

PA_CHANNEL_MAP_DEF_MAX 

Upper limit of valid channel mapping definitions.

PA_CHANNEL_MAP_DEFAULT 

The default channel map.

◆ pa_channel_position

A list of channel labels.

Enumerator
PA_CHANNEL_POSITION_INVALID 
PA_CHANNEL_POSITION_MONO 
PA_CHANNEL_POSITION_FRONT_LEFT 

Apple, Dolby call this 'Left'.

PA_CHANNEL_POSITION_FRONT_RIGHT 

Apple, Dolby call this 'Right'.

PA_CHANNEL_POSITION_FRONT_CENTER 

Apple, Dolby call this 'Center'.

PA_CHANNEL_POSITION_REAR_CENTER 

Microsoft calls this 'Back Center', Apple calls this 'Center Surround', Dolby calls this 'Surround Rear Center'.

PA_CHANNEL_POSITION_REAR_LEFT 

Microsoft calls this 'Back Left', Apple calls this 'Left Surround' (!), Dolby calls this 'Surround Rear Left'

PA_CHANNEL_POSITION_REAR_RIGHT 

Microsoft calls this 'Back Right', Apple calls this 'Right Surround' (!), Dolby calls this 'Surround Rear Right'

PA_CHANNEL_POSITION_LFE 

Microsoft calls this 'Low Frequency', Apple calls this 'LFEScreen'.

PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER 

Apple, Dolby call this 'Left Center'.

PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER 

Apple, Dolby call this 'Right Center.

PA_CHANNEL_POSITION_SIDE_LEFT 

Apple calls this 'Left Surround Direct', Dolby calls this 'Surround Left' (!)

PA_CHANNEL_POSITION_SIDE_RIGHT 

Apple calls this 'Right Surround Direct', Dolby calls this 'Surround Right' (!)

PA_CHANNEL_POSITION_AUX0 
PA_CHANNEL_POSITION_AUX1 
PA_CHANNEL_POSITION_AUX2 
PA_CHANNEL_POSITION_AUX3 
PA_CHANNEL_POSITION_AUX4 
PA_CHANNEL_POSITION_AUX5 
PA_CHANNEL_POSITION_AUX6 
PA_CHANNEL_POSITION_AUX7 
PA_CHANNEL_POSITION_AUX8 
PA_CHANNEL_POSITION_AUX9 
PA_CHANNEL_POSITION_AUX10 
PA_CHANNEL_POSITION_AUX11 
PA_CHANNEL_POSITION_AUX12 
PA_CHANNEL_POSITION_AUX13 
PA_CHANNEL_POSITION_AUX14 
PA_CHANNEL_POSITION_AUX15 
PA_CHANNEL_POSITION_AUX16 
PA_CHANNEL_POSITION_AUX17 
PA_CHANNEL_POSITION_AUX18 
PA_CHANNEL_POSITION_AUX19 
PA_CHANNEL_POSITION_AUX20 
PA_CHANNEL_POSITION_AUX21 
PA_CHANNEL_POSITION_AUX22 
PA_CHANNEL_POSITION_AUX23 
PA_CHANNEL_POSITION_AUX24 
PA_CHANNEL_POSITION_AUX25 
PA_CHANNEL_POSITION_AUX26 
PA_CHANNEL_POSITION_AUX27 
PA_CHANNEL_POSITION_AUX28 
PA_CHANNEL_POSITION_AUX29 
PA_CHANNEL_POSITION_AUX30 
PA_CHANNEL_POSITION_AUX31 
PA_CHANNEL_POSITION_TOP_CENTER 

Apple calls this 'Top Center Surround'.

PA_CHANNEL_POSITION_TOP_FRONT_LEFT 

Apple calls this 'Vertical Height Left'.

PA_CHANNEL_POSITION_TOP_FRONT_RIGHT 

Apple calls this 'Vertical Height Right'.

PA_CHANNEL_POSITION_TOP_FRONT_CENTER 

Apple calls this 'Vertical Height Center'.

PA_CHANNEL_POSITION_TOP_REAR_LEFT 

Microsoft and Apple call this 'Top Back Left'.

PA_CHANNEL_POSITION_TOP_REAR_RIGHT 

Microsoft and Apple call this 'Top Back Right'.

PA_CHANNEL_POSITION_TOP_REAR_CENTER 

Microsoft and Apple call this 'Top Back Center'.

PA_CHANNEL_POSITION_MAX 

Function Documentation

◆ pa_channel_map_can_balance()

int pa_channel_map_can_balance ( const pa_channel_map map)

Returns non-zero if it makes sense to apply a volume 'balance' with this mapping, i.e. if there are left/right channels available.

Since
0.9.15

◆ pa_channel_map_can_fade()

int pa_channel_map_can_fade ( const pa_channel_map map)

Returns non-zero if it makes sense to apply a volume 'fade' (i.e. 'balance' between front and rear) with this mapping, i.e. if there are front/rear channels available.

Since
0.9.15

◆ pa_channel_map_can_lfe_balance()

int pa_channel_map_can_lfe_balance ( const pa_channel_map map)

Returns non-zero if it makes sense to apply a volume 'lfe balance' (i.e. 'balance' between LFE and non-LFE channels) with this mapping, i.e. if there are LFE and non-LFE channels available.

Since
8.0

◆ pa_channel_map_compatible()

int pa_channel_map_compatible ( const pa_channel_map map,
const pa_sample_spec ss 
)

Return non-zero if the specified channel map is compatible with the specified sample spec.

Since
0.9.12

◆ pa_channel_map_equal()

int pa_channel_map_equal ( const pa_channel_map a,
const pa_channel_map b 
)

Compare two channel maps.

Return 1 if both match.

◆ pa_channel_map_has_position()

int pa_channel_map_has_position ( const pa_channel_map map,
pa_channel_position_t  p 
)

Returns non-zero if the specified channel position is available at least once in the channel map.

Since
0.9.16

◆ pa_channel_map_init()

pa_channel_map* pa_channel_map_init ( pa_channel_map m)

Initialize the specified channel map and return a pointer to it.

The channel map will have a defined state but pa_channel_map_valid() will fail for it.

◆ pa_channel_map_init_auto()

pa_channel_map* pa_channel_map_init_auto ( pa_channel_map m,
unsigned  channels,
pa_channel_map_def_t  def 
)

Initialize the specified channel map for the specified number of channels using default labels and return a pointer to it.

This call will fail (return NULL) if there is no default channel map known for this specific number of channels and mapping.

◆ pa_channel_map_init_extend()

pa_channel_map* pa_channel_map_init_extend ( pa_channel_map m,
unsigned  channels,
pa_channel_map_def_t  def 
)

Similar to pa_channel_map_init_auto() but instead of failing if no default mapping is known with the specified parameters it will synthesize a mapping based on a known mapping with fewer channels and fill up the rest with AUX0...AUX31 channels.

Since
0.9.11

◆ pa_channel_map_init_mono()

pa_channel_map* pa_channel_map_init_mono ( pa_channel_map m)

Initialize the specified channel map for monaural audio and return a pointer to it.

◆ pa_channel_map_init_stereo()

pa_channel_map* pa_channel_map_init_stereo ( pa_channel_map m)

Initialize the specified channel map for stereophonic audio and return a pointer to it.

◆ pa_channel_map_mask()

pa_channel_position_mask_t pa_channel_map_mask ( const pa_channel_map map)

Generates a bit mask from a channel map.

Since
0.9.16

◆ pa_channel_map_parse()

pa_channel_map* pa_channel_map_parse ( pa_channel_map map,
const char *  s 
)

Parse a channel position list or well-known mapping name into a channel map structure.

This turns the output of pa_channel_map_snprint() and pa_channel_map_to_name() back into a pa_channel_map

◆ pa_channel_map_snprint()

char* pa_channel_map_snprint ( char *  s,
size_t  l,
const pa_channel_map map 
)

Make a human readable string from the specified channel map.

Returns s.

◆ pa_channel_map_superset()

int pa_channel_map_superset ( const pa_channel_map a,
const pa_channel_map b 
)

Returns non-zero if every channel defined in b is also defined in a.

Since
0.9.15

◆ pa_channel_map_to_name()

const char* pa_channel_map_to_name ( const pa_channel_map map)

Tries to find a well-known channel mapping name for this channel mapping, i.e. "stereo", "surround-71" and so on.

If the channel mapping is unknown NULL will be returned. This name can be parsed with pa_channel_map_parse()

Since
0.9.15

◆ pa_channel_map_to_pretty_name()

const char* pa_channel_map_to_pretty_name ( const pa_channel_map map)

Tries to find a human readable text label for this channel mapping, i.e. "Stereo", "Surround 7.1" and so on.

If the channel mapping is unknown NULL will be returned.

Since
0.9.15

◆ pa_channel_map_valid()

int pa_channel_map_valid ( const pa_channel_map map)

Return non-zero if the specified channel map is considered valid.

◆ pa_channel_position_from_string()

pa_channel_position_t pa_channel_position_from_string ( const char *  s)

The inverse of pa_channel_position_to_string().

Since
0.9.16

◆ pa_channel_position_to_pretty_string()

const char* pa_channel_position_to_pretty_string ( pa_channel_position_t  pos)

Return a human readable text label for the specified channel position.

Since
0.9.7

◆ pa_channel_position_to_string()

const char* pa_channel_position_to_string ( pa_channel_position_t  pos)

Return a text label for the specified channel position.