Loading...
Searching...
No Matches
Audio channels
libavutil » Audio related

Audio channel layout utility functions. More...

## Modules

| Audio channel masks
| A channel layout is a 64-bits integer with a bit set for every channel.
| Audio channel layouts

## Files

file | channel_layout.h
| Public libavutil channel layout APIs header.

## Data Structures

struct | AVChannelCustom
| An AVChannelCustom defines a single channel within a custom order layout. More...
struct | AVChannelLayout
| An AVChannelLayout holds information about the channel layout of audio data. More...

## Macros

#define | AV_CHANNEL_LAYOUT_MASK(nb, m)
| Macro to define native channel layouts.
#define | AV_CHANNEL_LAYOUT_RETYPE_FLAG_LOSSLESS (1 << 0)
| The conversion must be lossless.
#define | AV_CHANNEL_LAYOUT_RETYPE_FLAG_CANONICAL (1 << 1)
| The specified retype target order is ignored and the simplest possible (canonical) order is used for which the input layout can be losslessy represented.

## Enumerations

enum

AVChannel {
AV_CHAN_NONE = -1 , AV_CHAN_FRONT_LEFT , AV_CHAN_FRONT_RIGHT , AV_CHAN_FRONT_CENTER ,
AV_CHAN_LOW_FREQUENCY , AV_CHAN_BACK_LEFT , AV_CHAN_BACK_RIGHT , AV_CHAN_FRONT_LEFT_OF_CENTER ,
AV_CHAN_FRONT_RIGHT_OF_CENTER , AV_CHAN_BACK_CENTER , AV_CHAN_SIDE_LEFT , AV_CHAN_SIDE_RIGHT ,
AV_CHAN_TOP_CENTER , AV_CHAN_TOP_FRONT_LEFT , AV_CHAN_TOP_FRONT_CENTER , AV_CHAN_TOP_FRONT_RIGHT ,
AV_CHAN_TOP_BACK_LEFT , AV_CHAN_TOP_BACK_CENTER , AV_CHAN_TOP_BACK_RIGHT , AV_CHAN_STEREO_LEFT = 29 ,
AV_CHAN_STEREO_RIGHT , AV_CHAN_WIDE_LEFT , AV_CHAN_WIDE_RIGHT , AV_CHAN_SURROUND_DIRECT_LEFT ,
AV_CHAN_SURROUND_DIRECT_RIGHT , AV_CHAN_LOW_FREQUENCY_2 , AV_CHAN_TOP_SIDE_LEFT , AV_CHAN_TOP_SIDE_RIGHT ,
AV_CHAN_BOTTOM_FRONT_CENTER , AV_CHAN_BOTTOM_FRONT_LEFT , AV_CHAN_BOTTOM_FRONT_RIGHT , AV_CHAN_SIDE_SURROUND_LEFT ,
AV_CHAN_SIDE_SURROUND_RIGHT , AV_CHAN_TOP_SURROUND_LEFT , AV_CHAN_TOP_SURROUND_RIGHT , AV_CHAN_UNUSED = 0x200 ,
AV_CHAN_UNKNOWN = 0x300 , AV_CHAN_AMBISONIC_BASE = 0x400 , AV_CHAN_AMBISONIC_END = 0x7ff
}

enum | AVChannelOrder { AV_CHANNEL_ORDER_UNSPEC , AV_CHANNEL_ORDER_NATIVE , AV_CHANNEL_ORDER_CUSTOM , AV_CHANNEL_ORDER_AMBISONIC , FF_CHANNEL_ORDER_NB }

## Functions

int | av_channel_name (char *buf, size_t buf_size, enum AVChannel channel)
| Get a human readable string in an abbreviated form describing a given channel.
void | av_channel_name_bprint (struct AVBPrint *bp, enum AVChannel channel_id)
| bprint variant of av_channel_name().
int | av_channel_description (char *buf, size_t buf_size, enum AVChannel channel)
| Get a human readable string describing a given channel.
void | av_channel_description_bprint (struct AVBPrint *bp, enum AVChannel channel_id)
| bprint variant of av_channel_description().
enum AVChannel | av_channel_from_string (const char *name)
| This is the inverse function of av_channel_name().
int | av_channel_layout_custom_init (AVChannelLayout *channel_layout, int nb_channels)
| Initialize a custom channel layout with the specified number of channels.
int | av_channel_layout_from_mask (AVChannelLayout *channel_layout, uint64_t mask)
| Initialize a native channel layout from a bitmask indicating which channels are present.
int | av_channel_layout_from_string (AVChannelLayout *channel_layout, const char *str)
| Initialize a channel layout from a given string description.
void | av_channel_layout_default (AVChannelLayout *ch_layout, int nb_channels)
| Get the default channel layout for a given number of channels.
const AVChannelLayout * | av_channel_layout_standard (void **opaque)
| Iterate over all standard channel layouts.
void | av_channel_layout_uninit (AVChannelLayout *channel_layout)
| Free any allocated data in the channel layout and reset the channel count to 0.
int | av_channel_layout_copy (AVChannelLayout *dst, const AVChannelLayout *src)
| Make a copy of a channel layout.
int | av_channel_layout_describe (const AVChannelLayout *channel_layout, char *buf, size_t buf_size)
| Get a human-readable string describing the channel layout properties.
int | av_channel_layout_describe_bprint (const AVChannelLayout *channel_layout, struct AVBPrint *bp)
| bprint variant of av_channel_layout_describe().
enum AVChannel | av_channel_layout_channel_from_index (const AVChannelLayout *channel_layout, unsigned int idx)
| Get the channel with the given index in a channel layout.
int | av_channel_layout_index_from_channel (const AVChannelLayout *channel_layout, enum AVChannel channel)
| Get the index of a given channel in a channel layout.
int | av_channel_layout_index_from_string (const AVChannelLayout *channel_layout, const char *name)
| Get the index in a channel layout of a channel described by the given string.
enum AVChannel | av_channel_layout_channel_from_string (const AVChannelLayout *channel_layout, const char *name)
| Get a channel described by the given string.
uint64_t | av_channel_layout_subset (const AVChannelLayout *channel_layout, uint64_t mask)
| Find out what channels from a given set are present in a channel layout, without regard for their positions.
int | av_channel_layout_check (const AVChannelLayout *channel_layout)
| Check whether a channel layout is valid, i.e.
int | av_channel_layout_compare (const AVChannelLayout *chl, const AVChannelLayout *chl1)
| Check whether two channel layouts are semantically the same, i.e.
int | av_channel_layout_ambisonic_order (const AVChannelLayout *channel_layout)
| Return the order if the layout is n-th order standard-order ambisonic.
int | av_channel_layout_retype (AVChannelLayout *channel_layout, enum AVChannelOrder order, int flags)
| Change the AVChannelOrder of a channel layout.

## Common pre-defined channel layouts

#define | AV_CHANNEL_LAYOUT_MONO AV_CHANNEL_LAYOUT_MASK(1, AV_CH_LAYOUT_MONO)
#define | AV_CHANNEL_LAYOUT_STEREO AV_CHANNEL_LAYOUT_MASK(2, AV_CH_LAYOUT_STEREO)
#define | AV_CHANNEL_LAYOUT_2POINT1 AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_2POINT1)
#define | AV_CHANNEL_LAYOUT_2_1 AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_2_1)
#define | AV_CHANNEL_LAYOUT_SURROUND AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_SURROUND)
#define | AV_CHANNEL_LAYOUT_3POINT1 AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_3POINT1)
#define | AV_CHANNEL_LAYOUT_4POINT0 AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_4POINT0)
#define | AV_CHANNEL_LAYOUT_4POINT1 AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_4POINT1)
#define | AV_CHANNEL_LAYOUT_2_2 AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_2_2)
#define | AV_CHANNEL_LAYOUT_QUAD AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_QUAD)
#define | AV_CHANNEL_LAYOUT_5POINT0 AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_5POINT0)
#define | AV_CHANNEL_LAYOUT_5POINT1 AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_5POINT1)
#define | AV_CHANNEL_LAYOUT_5POINT0_BACK AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_5POINT0_BACK)
#define | AV_CHANNEL_LAYOUT_5POINT1_BACK AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_5POINT1_BACK)
#define | AV_CHANNEL_LAYOUT_6POINT0 AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_6POINT0)
#define | AV_CHANNEL_LAYOUT_6POINT0_FRONT AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_6POINT0_FRONT)
#define | AV_CHANNEL_LAYOUT_3POINT1POINT2 AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_3POINT1POINT2)
#define | AV_CHANNEL_LAYOUT_HEXAGONAL AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_HEXAGONAL)
#define | AV_CHANNEL_LAYOUT_6POINT1 AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1)
#define | AV_CHANNEL_LAYOUT_6POINT1_BACK AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1_BACK)
#define | AV_CHANNEL_LAYOUT_6POINT1_FRONT AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1_FRONT)
#define | AV_CHANNEL_LAYOUT_7POINT0 AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_7POINT0)
#define | AV_CHANNEL_LAYOUT_7POINT0_FRONT AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_7POINT0_FRONT)
#define | AV_CHANNEL_LAYOUT_7POINT1 AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1)
#define | AV_CHANNEL_LAYOUT_7POINT1_WIDE AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1_WIDE)
#define | AV_CHANNEL_LAYOUT_7POINT1_WIDE_BACK AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1_WIDE_BACK)
#define | AV_CHANNEL_LAYOUT_5POINT1POINT2_BACK AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_5POINT1POINT2_BACK)
#define | AV_CHANNEL_LAYOUT_OCTAGONAL AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_OCTAGONAL)
#define | AV_CHANNEL_LAYOUT_CUBE AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_CUBE)
#define | AV_CHANNEL_LAYOUT_5POINT1POINT4_BACK AV_CHANNEL_LAYOUT_MASK(10, AV_CH_LAYOUT_5POINT1POINT4_BACK)
#define | AV_CHANNEL_LAYOUT_7POINT1POINT2 AV_CHANNEL_LAYOUT_MASK(10, AV_CH_LAYOUT_7POINT1POINT2)
#define | AV_CHANNEL_LAYOUT_7POINT1POINT4_BACK AV_CHANNEL_LAYOUT_MASK(12, AV_CH_LAYOUT_7POINT1POINT4_BACK)
#define | AV_CHANNEL_LAYOUT_7POINT2POINT3 AV_CHANNEL_LAYOUT_MASK(12, AV_CH_LAYOUT_7POINT2POINT3)
#define | AV_CHANNEL_LAYOUT_9POINT1POINT4_BACK AV_CHANNEL_LAYOUT_MASK(14, AV_CH_LAYOUT_9POINT1POINT4_BACK)
#define | AV_CHANNEL_LAYOUT_HEXADECAGONAL AV_CHANNEL_LAYOUT_MASK(16, AV_CH_LAYOUT_HEXADECAGONAL)
#define | AV_CHANNEL_LAYOUT_STEREO_DOWNMIX AV_CHANNEL_LAYOUT_MASK(2, AV_CH_LAYOUT_STEREO_DOWNMIX)
#define | AV_CHANNEL_LAYOUT_22POINT2 AV_CHANNEL_LAYOUT_MASK(24, AV_CH_LAYOUT_22POINT2)
#define | AV_CHANNEL_LAYOUT_7POINT1_TOP_BACK AV_CHANNEL_LAYOUT_5POINT1POINT2_BACK
#define | AV_CHANNEL_LAYOUT_AMBISONIC_FIRST_ORDER

## Detailed Description

Audio channel layout utility functions.

## Macro Definition Documentation

## AV_CHANNEL_LAYOUT_MASK

#define AV_CHANNEL_LAYOUT_MASK | ( |  | nb,
|  |  | m
| ) |  |

Value:
{ /* .order */ AV_CHANNEL_ORDER_NATIVE, \
/* .nb_channels */ (nb), \
/* .u.mask */ { m }, \
/* .opaque */ NULL }
AV_CHANNEL_ORDER_NATIVE
@ AV_CHANNEL_ORDER_NATIVE
The native channel order, i.e.
Definition channel_layout.h:122

Macro to define native channel layouts.

Note
  This doesn't use designated initializers for compatibility with C++ 17 and older.

Definition at line 376 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_MONO

#define AV_CHANNEL_LAYOUT_MONO AV_CHANNEL_LAYOUT_MASK(1, AV_CH_LAYOUT_MONO)

Definition at line 386 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_STEREO

#define AV_CHANNEL_LAYOUT_STEREO AV_CHANNEL_LAYOUT_MASK(2, AV_CH_LAYOUT_STEREO)

Examples
  encode_audio.c, mux.c, and resample_audio.c.

Definition at line 387 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_2POINT1

#define AV_CHANNEL_LAYOUT_2POINT1 AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_2POINT1)

Definition at line 388 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_2_1

#define AV_CHANNEL_LAYOUT_2_1 AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_2_1)

Definition at line 389 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_SURROUND

#define AV_CHANNEL_LAYOUT_SURROUND AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_SURROUND)

Examples
  resample_audio.c.

Definition at line 390 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_3POINT1

#define AV_CHANNEL_LAYOUT_3POINT1 AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_3POINT1)

Definition at line 391 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_4POINT0

#define AV_CHANNEL_LAYOUT_4POINT0 AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_4POINT0)

Definition at line 392 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_4POINT1

#define AV_CHANNEL_LAYOUT_4POINT1 AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_4POINT1)

Definition at line 393 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_2_2

#define AV_CHANNEL_LAYOUT_2_2 AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_2_2)

Definition at line 394 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_QUAD

#define AV_CHANNEL_LAYOUT_QUAD AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_QUAD)

Definition at line 395 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_5POINT0

#define AV_CHANNEL_LAYOUT_5POINT0 AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_5POINT0)

Definition at line 396 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_5POINT1

#define AV_CHANNEL_LAYOUT_5POINT1 AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_5POINT1)

Definition at line 397 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_5POINT0_BACK

#define AV_CHANNEL_LAYOUT_5POINT0_BACK AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_5POINT0_BACK)

Definition at line 398 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_5POINT1_BACK

#define AV_CHANNEL_LAYOUT_5POINT1_BACK AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_5POINT1_BACK)

Definition at line 399 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_6POINT0

#define AV_CHANNEL_LAYOUT_6POINT0 AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_6POINT0)

Definition at line 400 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_6POINT0_FRONT

#define AV_CHANNEL_LAYOUT_6POINT0_FRONT AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_6POINT0_FRONT)

Definition at line 401 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_3POINT1POINT2

#define AV_CHANNEL_LAYOUT_3POINT1POINT2 AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_3POINT1POINT2)

Definition at line 402 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_HEXAGONAL

#define AV_CHANNEL_LAYOUT_HEXAGONAL AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_HEXAGONAL)

Definition at line 403 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_6POINT1

#define AV_CHANNEL_LAYOUT_6POINT1 AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1)

Definition at line 404 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_6POINT1_BACK

#define AV_CHANNEL_LAYOUT_6POINT1_BACK AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1_BACK)

Definition at line 405 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_6POINT1_FRONT

#define AV_CHANNEL_LAYOUT_6POINT1_FRONT AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1_FRONT)

Definition at line 406 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_7POINT0

#define AV_CHANNEL_LAYOUT_7POINT0 AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_7POINT0)

Definition at line 407 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_7POINT0_FRONT

#define AV_CHANNEL_LAYOUT_7POINT0_FRONT AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_7POINT0_FRONT)

Definition at line 408 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_7POINT1

#define AV_CHANNEL_LAYOUT_7POINT1 AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1)

Definition at line 409 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_7POINT1_WIDE

#define AV_CHANNEL_LAYOUT_7POINT1_WIDE AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1_WIDE)

Definition at line 410 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_7POINT1_WIDE_BACK

#define AV_CHANNEL_LAYOUT_7POINT1_WIDE_BACK AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1_WIDE_BACK)

Definition at line 411 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_5POINT1POINT2_BACK

#define AV_CHANNEL_LAYOUT_5POINT1POINT2_BACK AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_5POINT1POINT2_BACK)

Definition at line 412 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_OCTAGONAL

#define AV_CHANNEL_LAYOUT_OCTAGONAL AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_OCTAGONAL)

Definition at line 413 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_CUBE

#define AV_CHANNEL_LAYOUT_CUBE AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_CUBE)

Definition at line 414 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_5POINT1POINT4_BACK

#define AV_CHANNEL_LAYOUT_5POINT1POINT4_BACK AV_CHANNEL_LAYOUT_MASK(10, AV_CH_LAYOUT_5POINT1POINT4_BACK)

Definition at line 415 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_7POINT1POINT2

#define AV_CHANNEL_LAYOUT_7POINT1POINT2 AV_CHANNEL_LAYOUT_MASK(10, AV_CH_LAYOUT_7POINT1POINT2)

Definition at line 416 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_7POINT1POINT4_BACK

#define AV_CHANNEL_LAYOUT_7POINT1POINT4_BACK AV_CHANNEL_LAYOUT_MASK(12, AV_CH_LAYOUT_7POINT1POINT4_BACK)

Definition at line 417 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_7POINT2POINT3

#define AV_CHANNEL_LAYOUT_7POINT2POINT3 AV_CHANNEL_LAYOUT_MASK(12, AV_CH_LAYOUT_7POINT2POINT3)

Definition at line 418 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_9POINT1POINT4_BACK

#define AV_CHANNEL_LAYOUT_9POINT1POINT4_BACK AV_CHANNEL_LAYOUT_MASK(14, AV_CH_LAYOUT_9POINT1POINT4_BACK)

Definition at line 419 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_HEXADECAGONAL

#define AV_CHANNEL_LAYOUT_HEXADECAGONAL AV_CHANNEL_LAYOUT_MASK(16, AV_CH_LAYOUT_HEXADECAGONAL)

Definition at line 420 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_STEREO_DOWNMIX

#define AV_CHANNEL_LAYOUT_STEREO_DOWNMIX AV_CHANNEL_LAYOUT_MASK(2, AV_CH_LAYOUT_STEREO_DOWNMIX)

Definition at line 421 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_22POINT2

#define AV_CHANNEL_LAYOUT_22POINT2 AV_CHANNEL_LAYOUT_MASK(24, AV_CH_LAYOUT_22POINT2)

Definition at line 422 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_7POINT1_TOP_BACK

#define AV_CHANNEL_LAYOUT_7POINT1_TOP_BACK AV_CHANNEL_LAYOUT_5POINT1POINT2_BACK

Definition at line 424 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_AMBISONIC_FIRST_ORDER

#define AV_CHANNEL_LAYOUT_AMBISONIC_FIRST_ORDER

Value:
{ /* .order */ AV_CHANNEL_ORDER_AMBISONIC, \
/* .nb_channels */ 4, \
/* .u.mask */ { 0 }, \
/* .opaque */ NULL }
AV_CHANNEL_ORDER_AMBISONIC
@ AV_CHANNEL_ORDER_AMBISONIC
The audio is represented as the decomposition of the sound field into spherical harmonics.
Definition channel_layout.h:152

Definition at line 426 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_RETYPE_FLAG_LOSSLESS

#define AV_CHANNEL_LAYOUT_RETYPE_FLAG_LOSSLESS (1 << 0)

The conversion must be lossless.

Definition at line 703 of file channel_layout.h.

## AV_CHANNEL_LAYOUT_RETYPE_FLAG_CANONICAL

#define AV_CHANNEL_LAYOUT_RETYPE_FLAG_CANONICAL (1 << 1)

The specified retype target order is ignored and the simplest possible (canonical) order is used for which the input layout can be losslessy represented.

Definition at line 710 of file channel_layout.h.

## Enumeration Type Documentation

## AVChannel

enum AVChannel

Enumerator
AV_CHAN_NONE | Invalid channel index.
AV_CHAN_FRONT_LEFT |
AV_CHAN_FRONT_RIGHT |
AV_CHAN_FRONT_CENTER |
AV_CHAN_LOW_FREQUENCY |
AV_CHAN_BACK_LEFT |
AV_CHAN_BACK_RIGHT |
AV_CHAN_FRONT_LEFT_OF_CENTER |
AV_CHAN_FRONT_RIGHT_OF_CENTER |
AV_CHAN_BACK_CENTER |
AV_CHAN_SIDE_LEFT |
AV_CHAN_SIDE_RIGHT |
AV_CHAN_TOP_CENTER |
AV_CHAN_TOP_FRONT_LEFT |
AV_CHAN_TOP_FRONT_CENTER |
AV_CHAN_TOP_FRONT_RIGHT |
AV_CHAN_TOP_BACK_LEFT |
AV_CHAN_TOP_BACK_CENTER |
AV_CHAN_TOP_BACK_RIGHT |
AV_CHAN_STEREO_LEFT | Stereo downmix.
AV_CHAN_STEREO_RIGHT | See above.
AV_CHAN_WIDE_LEFT |
AV_CHAN_WIDE_RIGHT |
AV_CHAN_SURROUND_DIRECT_LEFT |
AV_CHAN_SURROUND_DIRECT_RIGHT |
AV_CHAN_LOW_FREQUENCY_2 |
AV_CHAN_TOP_SIDE_LEFT |
AV_CHAN_TOP_SIDE_RIGHT |
AV_CHAN_BOTTOM_FRONT_CENTER |
AV_CHAN_BOTTOM_FRONT_LEFT |
AV_CHAN_BOTTOM_FRONT_RIGHT |
AV_CHAN_SIDE_SURROUND_LEFT | +90 degrees, Lss, SiL
AV_CHAN_SIDE_SURROUND_RIGHT | -90 degrees, Rss, SiR
AV_CHAN_TOP_SURROUND_LEFT | +110 degrees, Lvs, TpLS
AV_CHAN_TOP_SURROUND_RIGHT | -110 degrees, Rvs, TpRS
AV_CHAN_UNUSED | Channel is empty can be safely skipped.
AV_CHAN_UNKNOWN | Channel contains data, but its position is unknown.

AV_CHAN_AMBISONIC_BASE

Range of channels between AV_CHAN_AMBISONIC_BASE and AV_CHAN_AMBISONIC_END represent Ambisonic components using the ACN system.

Given a channel id `<i>` between AV_CHAN_AMBISONIC_BASE and AV_CHAN_AMBISONIC_END (inclusive), the ACN index of the channel `<n>` is `<n> = <i> - AV_CHAN_AMBISONIC_BASE`.

Note
  these values are only used for AV_CHANNEL_ORDER_CUSTOM channel orderings, the AV_CHANNEL_ORDER_AMBISONIC ordering orders the channels implicitly by their position in the stream.

AV_CHAN_AMBISONIC_END |

Definition at line 47 of file channel_layout.h.

## AVChannelOrder

enum AVChannelOrder

Enumerator
AV_CHANNEL_ORDER_UNSPEC | Only the channel count is specified, without any further information about the channel order.
AV_CHANNEL_ORDER_NATIVE | The native channel order, i.e. the channels are in the same order in which they are defined in the AVChannel enum. This supports up to 63 different channels.
AV_CHANNEL_ORDER_CUSTOM | The channel order does not correspond to any other predefined order and is stored as an explicit map. For example, this could be used to support layouts with 64 or more channels, or with empty/skipped (AV_CHAN_UNUSED) channels at arbitrary positions.

AV_CHANNEL_ORDER_AMBISONIC

The audio is represented as the decomposition of the sound field into spherical harmonics.

Each channel corresponds to a single expansion component. Channels are ordered according to ACN (Ambisonic Channel Number).

The channel with the index n in the stream contains the spherical harmonic of degree l and order m given by

l = floor(sqrt(n)),
m = n - l * (l + 1).

Conversely given a spherical harmonic of degree l and order m, the corresponding channel index n is given by

n = l * (l + 1) + m.

Normalization is assumed to be SN3D (Schmidt Semi-Normalization) as defined in AmbiX format $ 2.1.

FF_CHANNEL_ORDER_NB | Number of channel orders, not part of ABI/API.

Definition at line 111 of file channel_layout.h.

## Function Documentation

## av_channel_name()

int av_channel_name | ( | char * | buf,
|  | size_t | buf_size,
|  | enum AVChannel | channel
| ) |  |

Get a human readable string in an abbreviated form describing a given channel.

This is the inverse function of av_channel_from_string().

Parameters

  buf | pre-allocated buffer where to put the generated string
  buf_size | size in bytes of the buffer.
  channel | the AVChannel whose name to get

Returns
  amount of bytes needed to hold the output string, or a negative AVERROR on failure. If the returned value is bigger than buf_size, then the string was truncated.

## av_channel_name_bprint()

void av_channel_name_bprint | ( | struct AVBPrint * | bp,
|  | enum AVChannel | channel_id
| ) |  |

bprint variant of av_channel_name().

Note
  the string will be appended to the bprint buffer.

## av_channel_description()

int av_channel_description | ( | char * | buf,
|  | size_t | buf_size,
|  | enum AVChannel | channel
| ) |  |

Get a human readable string describing a given channel.

Parameters

  buf | pre-allocated buffer where to put the generated string
  buf_size | size in bytes of the buffer.
  channel | the AVChannel whose description to get

Returns
  amount of bytes needed to hold the output string, or a negative AVERROR on failure. If the returned value is bigger than buf_size, then the string was truncated.

## av_channel_description_bprint()

void av_channel_description_bprint | ( | struct AVBPrint * | bp,
|  | enum AVChannel | channel_id
| ) |  |

bprint variant of av_channel_description().

Note
  the string will be appended to the bprint buffer.

## av_channel_from_string()

enum AVChannel av_channel_from_string | ( | const char * | name | ) |

This is the inverse function of av_channel_name().

Returns
  the channel with the given name AV_CHAN_NONE when name does not identify a known channel

## av_channel_layout_custom_init()

int av_channel_layout_custom_init | ( | AVChannelLayout * | channel_layout,
|  | int | nb_channels
| ) |  |

Initialize a custom channel layout with the specified number of channels.

The channel map will be allocated and the designation of all channels will be set to AV_CHAN_UNKNOWN.

This is only a convenience helper function, a custom channel layout can also be constructed without using this.

Parameters

  channel_layout | the layout structure to be initialized
  nb_channels | the number of channels

Returns
  0 on success AVERROR(EINVAL) if the number of channels <= 0 AVERROR(ENOMEM) if the channel map could not be allocated

## av_channel_layout_from_mask()

int av_channel_layout_from_mask | ( | AVChannelLayout * | channel_layout,
|  | uint64_t | mask
| ) |  |

Initialize a native channel layout from a bitmask indicating which channels are present.

Parameters

  channel_layout | the layout structure to be initialized
  mask | bitmask describing the channel layout

Returns
  0 on success AVERROR(EINVAL) for invalid mask values

## av_channel_layout_from_string()

int av_channel_layout_from_string | ( | AVChannelLayout * | channel_layout,
|  | const char * | str
| ) |  |

Initialize a channel layout from a given string description.

The input string can be represented by:

- the formal channel layout name (returned by av_channel_layout_describe())
- single or multiple channel names (returned by av_channel_name(), eg. "FL", or concatenated with "+", each optionally containing a custom name after a "@", eg. "FL@Left+FR@Right+LFE")
- a decimal or hexadecimal value of a native channel layout (eg. "4" or "0x4")
- the number of channels with default layout (eg. "4c")
- the number of unordered channels (eg. "4C" or "4 channels")
- the ambisonic order followed by optional non-diegetic channels (eg. "ambisonic 2+stereo") On error, the channel layout will remain uninitialized, but not necessarily untouched.

Parameters

  channel_layout | uninitialized channel layout for the result
  str | string describing the channel layout

Returns
  0 on success parsing the channel layout AVERROR(EINVAL) if an invalid channel layout string was provided AVERROR(ENOMEM) if there was not enough memory

## av_channel_layout_default()

void av_channel_layout_default | ( | AVChannelLayout * | ch_layout,
|  | int | nb_channels
| ) |  |

Get the default channel layout for a given number of channels.

Parameters

  ch_layout | the layout structure to be initialized
  nb_channels | number of channels

Examples
  decode_filter_audio.c, transcode.c, and transcode_aac.c.

Referenced by init_filter(), init_filters(), and open_output_file().

## av_channel_layout_standard()

const AVChannelLayout * av_channel_layout_standard | ( | void ** | opaque | ) |

Iterate over all standard channel layouts.

Parameters

  opaque | a pointer where libavutil will store the iteration state. Must point to NULL to start the iteration.

Returns
  the standard channel layout or NULL when the iteration is finished

## av_channel_layout_uninit()

void av_channel_layout_uninit | ( | AVChannelLayout * | channel_layout | ) |

Free any allocated data in the channel layout and reset the channel count to 0.

Parameters

  channel_layout | the layout structure to be uninitialized

## av_channel_layout_copy()

int av_channel_layout_copy | ( | AVChannelLayout * | dst,
|  | const AVChannelLayout * | src
| ) |  |

Make a copy of a channel layout.

This differs from just assigning src to dst in that it allocates and copies the map for AV_CHANNEL_ORDER_CUSTOM.

Note
  the destination channel_layout will be always uninitialized before copy.

Parameters

  dst | destination channel layout
  src | source channel layout

Returns
  0 on success, a negative AVERROR on error.

Examples
  encode_audio.c, filter_audio.c, mux.c, transcode.c, and transcode_aac.c.

Referenced by add_stream(), alloc_audio_frame(), get_input(), init_output_frame(), main(), open_output_file(), and select_channel_layout().

## av_channel_layout_describe()

int av_channel_layout_describe | ( | const AVChannelLayout * | channel_layout,
|  | char * | buf,
|  | size_t | buf_size
| ) |  |

Get a human-readable string describing the channel layout properties.

The string will be in the same format that is accepted by av_channel_layout_from_string(), allowing to rebuild the same channel layout, except for opaque pointers.

Parameters

  channel_layout | channel layout to be described
  buf | pre-allocated buffer where to put the generated string
  buf_size | size in bytes of the buffer.

Returns
  amount of bytes needed to hold the output string, or a negative AVERROR on failure. If the returned value is bigger than buf_size, then the string was truncated.

Examples
  decode_filter_audio.c, filter_audio.c, resample_audio.c, and transcode.c.

Referenced by init_filter(), init_filter_graph(), init_filters(), and main().

## av_channel_layout_describe_bprint()

int av_channel_layout_describe_bprint | ( | const AVChannelLayout * | channel_layout,
|  | struct AVBPrint * | bp
| ) |  |

bprint variant of av_channel_layout_describe().

Note
  the string will be appended to the bprint buffer.

Returns
  0 on success, or a negative AVERROR value on failure.

## av_channel_layout_channel_from_index()

enum AVChannel av_channel_layout_channel_from_index | ( | const AVChannelLayout * | channel_layout,
|  | unsigned int | idx
| ) |  |

Get the channel with the given index in a channel layout.

Parameters

  channel_layout | input channel layout
  idx | index of the channel

Returns
  channel with the index idx in channel_layout on success or AV_CHAN_NONE on failure (if idx is not valid or the channel order is unspecified)

## av_channel_layout_index_from_channel()

int av_channel_layout_index_from_channel | ( | const AVChannelLayout * | channel_layout,
|  | enum AVChannel | channel
| ) |  |

Get the index of a given channel in a channel layout.

In case multiple channels are found, only the first match will be returned.

Parameters

  channel_layout | input channel layout
  channel | the channel whose index to obtain

Returns
  index of channel in channel_layout on success or a negative number if channel is not present in channel_layout.

## av_channel_layout_index_from_string()

int av_channel_layout_index_from_string | ( | const AVChannelLayout * | channel_layout,
|  | const char * | name
| ) |  |

Get the index in a channel layout of a channel described by the given string.

In case multiple channels are found, only the first match will be returned.

This function accepts channel names in the same format as av_channel_from_string().

Parameters

  channel_layout | input channel layout
  name | string describing the channel whose index to obtain

Returns
  a channel index described by the given string, or a negative AVERROR value.

## av_channel_layout_channel_from_string()

enum AVChannel av_channel_layout_channel_from_string | ( | const AVChannelLayout * | channel_layout,
|  | const char * | name
| ) |  |

Get a channel described by the given string.

This function accepts channel names in the same format as av_channel_from_string().

Parameters

  channel_layout | input channel layout
  name | string describing the channel to obtain

Returns
  a channel described by the given string in channel_layout on success or AV_CHAN_NONE on failure (if the string is not valid or the channel order is unspecified)

## av_channel_layout_subset()

uint64_t av_channel_layout_subset | ( | const AVChannelLayout * | channel_layout,
|  | uint64_t | mask
| ) |  |

Find out what channels from a given set are present in a channel layout, without regard for their positions.

Parameters

  channel_layout | input channel layout
  mask | a combination of AV_CH_* representing a set of channels

Returns
  a bitfield representing all the channels from mask that are present in channel_layout

## av_channel_layout_check()

int av_channel_layout_check | ( | const AVChannelLayout * | channel_layout | ) |

Check whether a channel layout is valid, i.e.

can possibly describe audio data.

Parameters

  channel_layout | input channel layout

Returns
  1 if channel_layout is valid, 0 otherwise.

## av_channel_layout_compare()

int av_channel_layout_compare | ( | const AVChannelLayout * | chl,
|  | const AVChannelLayout * | chl1
| ) |  |

Check whether two channel layouts are semantically the same, i.e.

the same channels are present on the same positions in both.

If one of the channel layouts is AV_CHANNEL_ORDER_UNSPEC, while the other is not, they are considered to be unequal. If both are AV_CHANNEL_ORDER_UNSPEC, they are considered equal iff the channel counts are the same in both.

Parameters

  chl | input channel layout
  chl1 | input channel layout

Returns
  0 if chl and chl1 are equal, 1 if they are not equal. A negative AVERROR code if one or both are invalid.

## av_channel_layout_ambisonic_order()

int av_channel_layout_ambisonic_order | ( | const AVChannelLayout * | channel_layout | ) |

Return the order if the layout is n-th order standard-order ambisonic.

The presence of optional extra non-diegetic channels at the end is not taken into account.

Parameters

  channel_layout | input channel layout

Returns
  the order of the layout, a negative error code otherwise.

## av_channel_layout_retype()

int av_channel_layout_retype | ( | AVChannelLayout * | channel_layout,
|  | enum AVChannelOrder | order,
|  | int | flags
| ) |  |

Change the AVChannelOrder of a channel layout.

Change of AVChannelOrder can be either lossless or lossy. In case of a lossless conversion all the channel designations and the associated channel names (if any) are kept. On a lossy conversion the channel names and channel designations might be lost depending on the capabilities of the desired AVChannelOrder. Note that some conversions are simply not possible in which case this function returns AVERROR(ENOSYS).

The following conversions are supported:

Any -> Custom : Always possible, always lossless. Any -> Unspecified: Always possible, lossless if channel designations are all unknown and channel names are not used, lossy otherwise. Custom -> Ambisonic : Possible if it contains ambisonic channels with optional non-diegetic channels in the end. Lossy if the channels have custom names, lossless otherwise. Custom -> Native : Possible if it contains native channels in native order. Lossy if the channels have custom names, lossless otherwise.

On error this function keeps the original channel layout untouched.

Parameters

  channel_layout | channel layout which will be changed
  order | the desired channel layout order
  flags | a combination of AV_CHANNEL_LAYOUT_RETYPE_FLAG_* constants

Returns
  0 if the conversion was successful and lossless or if the channel layout was already in the desired order >0 if the conversion was successful but lossy AVERROR(ENOSYS) if the conversion was not possible (or would be lossy and AV_CHANNEL_LAYOUT_RETYPE_FLAG_LOSSLESS was specified) AVERROR(EINVAL), AVERROR(ENOMEM) on error