FFmpeg 5.1.6
Data Structures | Macros | Enumerations | Functions
channel_layout.h File Reference

audio channel layout utility functions More...

#include <stdint.h>
#include <stdlib.h>
#include "version.h"
#include "attributes.h"

Go to the source code of this file.

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_CH_FRONT_LEFT   (1ULL << AV_CHAN_FRONT_LEFT )
 
#define AV_CH_FRONT_RIGHT   (1ULL << AV_CHAN_FRONT_RIGHT )
 
#define AV_CH_FRONT_CENTER   (1ULL << AV_CHAN_FRONT_CENTER )
 
#define AV_CH_LOW_FREQUENCY   (1ULL << AV_CHAN_LOW_FREQUENCY )
 
#define AV_CH_BACK_LEFT   (1ULL << AV_CHAN_BACK_LEFT )
 
#define AV_CH_BACK_RIGHT   (1ULL << AV_CHAN_BACK_RIGHT )
 
#define AV_CH_FRONT_LEFT_OF_CENTER   (1ULL << AV_CHAN_FRONT_LEFT_OF_CENTER )
 
#define AV_CH_FRONT_RIGHT_OF_CENTER   (1ULL << AV_CHAN_FRONT_RIGHT_OF_CENTER)
 
#define AV_CH_BACK_CENTER   (1ULL << AV_CHAN_BACK_CENTER )
 
#define AV_CH_SIDE_LEFT   (1ULL << AV_CHAN_SIDE_LEFT )
 
#define AV_CH_SIDE_RIGHT   (1ULL << AV_CHAN_SIDE_RIGHT )
 
#define AV_CH_TOP_CENTER   (1ULL << AV_CHAN_TOP_CENTER )
 
#define AV_CH_TOP_FRONT_LEFT   (1ULL << AV_CHAN_TOP_FRONT_LEFT )
 
#define AV_CH_TOP_FRONT_CENTER   (1ULL << AV_CHAN_TOP_FRONT_CENTER )
 
#define AV_CH_TOP_FRONT_RIGHT   (1ULL << AV_CHAN_TOP_FRONT_RIGHT )
 
#define AV_CH_TOP_BACK_LEFT   (1ULL << AV_CHAN_TOP_BACK_LEFT )
 
#define AV_CH_TOP_BACK_CENTER   (1ULL << AV_CHAN_TOP_BACK_CENTER )
 
#define AV_CH_TOP_BACK_RIGHT   (1ULL << AV_CHAN_TOP_BACK_RIGHT )
 
#define AV_CH_STEREO_LEFT   (1ULL << AV_CHAN_STEREO_LEFT )
 
#define AV_CH_STEREO_RIGHT   (1ULL << AV_CHAN_STEREO_RIGHT )
 
#define AV_CH_WIDE_LEFT   (1ULL << AV_CHAN_WIDE_LEFT )
 
#define AV_CH_WIDE_RIGHT   (1ULL << AV_CHAN_WIDE_RIGHT )
 
#define AV_CH_SURROUND_DIRECT_LEFT   (1ULL << AV_CHAN_SURROUND_DIRECT_LEFT )
 
#define AV_CH_SURROUND_DIRECT_RIGHT   (1ULL << AV_CHAN_SURROUND_DIRECT_RIGHT)
 
#define AV_CH_LOW_FREQUENCY_2   (1ULL << AV_CHAN_LOW_FREQUENCY_2 )
 
#define AV_CH_TOP_SIDE_LEFT   (1ULL << AV_CHAN_TOP_SIDE_LEFT )
 
#define AV_CH_TOP_SIDE_RIGHT   (1ULL << AV_CHAN_TOP_SIDE_RIGHT )
 
#define AV_CH_BOTTOM_FRONT_CENTER   (1ULL << AV_CHAN_BOTTOM_FRONT_CENTER )
 
#define AV_CH_BOTTOM_FRONT_LEFT   (1ULL << AV_CHAN_BOTTOM_FRONT_LEFT )
 
#define AV_CH_BOTTOM_FRONT_RIGHT   (1ULL << AV_CHAN_BOTTOM_FRONT_RIGHT )
 
#define AV_CH_LAYOUT_NATIVE   0x8000000000000000ULL
 Channel mask value used for AVCodecContext.request_channel_layout to indicate that the user requests the channel order of the decoder output to be the native codec channel order. More...
 
#define AV_CH_LAYOUT_MONO   (AV_CH_FRONT_CENTER)
 
#define AV_CH_LAYOUT_STEREO   (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT)
 
#define AV_CH_LAYOUT_2POINT1   (AV_CH_LAYOUT_STEREO|AV_CH_LOW_FREQUENCY)
 
#define AV_CH_LAYOUT_2_1   (AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER)
 
#define AV_CH_LAYOUT_SURROUND   (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER)
 
#define AV_CH_LAYOUT_3POINT1   (AV_CH_LAYOUT_SURROUND|AV_CH_LOW_FREQUENCY)
 
#define AV_CH_LAYOUT_4POINT0   (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_CENTER)
 
#define AV_CH_LAYOUT_4POINT1   (AV_CH_LAYOUT_4POINT0|AV_CH_LOW_FREQUENCY)
 
#define AV_CH_LAYOUT_2_2   (AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT)
 
#define AV_CH_LAYOUT_QUAD   (AV_CH_LAYOUT_STEREO|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
 
#define AV_CH_LAYOUT_5POINT0   (AV_CH_LAYOUT_SURROUND|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT)
 
#define AV_CH_LAYOUT_5POINT1   (AV_CH_LAYOUT_5POINT0|AV_CH_LOW_FREQUENCY)
 
#define AV_CH_LAYOUT_5POINT0_BACK   (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
 
#define AV_CH_LAYOUT_5POINT1_BACK   (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_LOW_FREQUENCY)
 
#define AV_CH_LAYOUT_6POINT0   (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_CENTER)
 
#define AV_CH_LAYOUT_6POINT0_FRONT   (AV_CH_LAYOUT_2_2|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER)
 
#define AV_CH_LAYOUT_HEXAGONAL   (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_BACK_CENTER)
 
#define AV_CH_LAYOUT_6POINT1   (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_CENTER)
 
#define AV_CH_LAYOUT_6POINT1_BACK   (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_BACK_CENTER)
 
#define AV_CH_LAYOUT_6POINT1_FRONT   (AV_CH_LAYOUT_6POINT0_FRONT|AV_CH_LOW_FREQUENCY)
 
#define AV_CH_LAYOUT_7POINT0   (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
 
#define AV_CH_LAYOUT_7POINT0_FRONT   (AV_CH_LAYOUT_5POINT0|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER)
 
#define AV_CH_LAYOUT_7POINT1   (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
 
#define AV_CH_LAYOUT_7POINT1_WIDE   (AV_CH_LAYOUT_5POINT1|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER)
 
#define AV_CH_LAYOUT_7POINT1_WIDE_BACK   (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER)
 
#define AV_CH_LAYOUT_OCTAGONAL   (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_CENTER|AV_CH_BACK_RIGHT)
 
#define AV_CH_LAYOUT_HEXADECAGONAL   (AV_CH_LAYOUT_OCTAGONAL|AV_CH_WIDE_LEFT|AV_CH_WIDE_RIGHT|AV_CH_TOP_BACK_LEFT|AV_CH_TOP_BACK_RIGHT|AV_CH_TOP_BACK_CENTER|AV_CH_TOP_FRONT_CENTER|AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT)
 
#define AV_CH_LAYOUT_STEREO_DOWNMIX   (AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT)
 
#define AV_CH_LAYOUT_22POINT2   (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER|AV_CH_BACK_CENTER|AV_CH_LOW_FREQUENCY_2|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT|AV_CH_TOP_FRONT_CENTER|AV_CH_TOP_CENTER|AV_CH_TOP_BACK_LEFT|AV_CH_TOP_BACK_RIGHT|AV_CH_TOP_SIDE_LEFT|AV_CH_TOP_SIDE_RIGHT|AV_CH_TOP_BACK_CENTER|AV_CH_BOTTOM_FRONT_CENTER|AV_CH_BOTTOM_FRONT_LEFT|AV_CH_BOTTOM_FRONT_RIGHT)
 
#define AV_CHANNEL_LAYOUT_MASK(nb, m)    { .order = AV_CHANNEL_ORDER_NATIVE, .nb_channels = (nb), .u = { .mask = (m) }}
 
#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_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_OCTAGONAL   AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_OCTAGONAL)
 
#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_AMBISONIC_FIRST_ORDER    { .order = AV_CHANNEL_ORDER_AMBISONIC, .nb_channels = 4, .u = { .mask = 0 }}
 

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_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 }
 
enum  AVMatrixEncoding {
  AV_MATRIX_ENCODING_NONE , AV_MATRIX_ENCODING_DOLBY , AV_MATRIX_ENCODING_DPLII , AV_MATRIX_ENCODING_DPLIIX ,
  AV_MATRIX_ENCODING_DPLIIZ , AV_MATRIX_ENCODING_DOLBYEX , AV_MATRIX_ENCODING_DOLBYHEADPHONE , AV_MATRIX_ENCODING_NB
}
 

Functions

attribute_deprecated uint64_t av_get_channel_layout (const char *name)
 Return a channel layout id that matches name, or 0 if no match is found. More...
 
attribute_deprecated int av_get_extended_channel_layout (const char *name, uint64_t *channel_layout, int *nb_channels)
 Return a channel layout and the number of channels based on the specified name. More...
 
attribute_deprecated void av_get_channel_layout_string (char *buf, int buf_size, int nb_channels, uint64_t channel_layout)
 Return a description of a channel layout. More...
 
attribute_deprecated void av_bprint_channel_layout (struct AVBPrint *bp, int nb_channels, uint64_t channel_layout)
 Append a description of a channel layout to a bprint buffer. More...
 
attribute_deprecated int av_get_channel_layout_nb_channels (uint64_t channel_layout)
 Return the number of channels in the channel layout. More...
 
attribute_deprecated int64_t av_get_default_channel_layout (int nb_channels)
 Return default channel layout for a given number of channels. More...
 
attribute_deprecated int av_get_channel_layout_channel_index (uint64_t channel_layout, uint64_t channel)
 Get the index of a channel in channel_layout. More...
 
attribute_deprecated uint64_t av_channel_layout_extract_channel (uint64_t channel_layout, int index)
 Get the channel with the given index in channel_layout. More...
 
attribute_deprecated const char * av_get_channel_name (uint64_t channel)
 Get the name of a given channel. More...
 
attribute_deprecated const char * av_get_channel_description (uint64_t channel)
 Get the description of a given channel. More...
 
attribute_deprecated int av_get_standard_channel_layout (unsigned index, uint64_t *layout, const char **name)
 Get the value and name of a standard channel layout. More...
 
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. More...
 
void av_channel_name_bprint (struct AVBPrint *bp, enum AVChannel channel_id)
 bprint variant of av_channel_name(). More...
 
int av_channel_description (char *buf, size_t buf_size, enum AVChannel channel)
 Get a human readable string describing a given channel. More...
 
void av_channel_description_bprint (struct AVBPrint *bp, enum AVChannel channel_id)
 bprint variant of av_channel_description(). More...
 
enum AVChannel av_channel_from_string (const char *name)
 This is the inverse function of av_channel_name(). More...
 
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. More...
 
int av_channel_layout_from_string (AVChannelLayout *channel_layout, const char *str)
 Initialize a channel layout from a given string description. More...
 
void av_channel_layout_default (AVChannelLayout *ch_layout, int nb_channels)
 Get the default channel layout for a given number of channels. More...
 
const AVChannelLayoutav_channel_layout_standard (void **opaque)
 Iterate over all standard channel layouts. More...
 
void av_channel_layout_uninit (AVChannelLayout *channel_layout)
 Free any allocated data in the channel layout and reset the channel count to 0. More...
 
int av_channel_layout_copy (AVChannelLayout *dst, const AVChannelLayout *src)
 Make a copy of a channel layout. More...
 
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. More...
 
int av_channel_layout_describe_bprint (const AVChannelLayout *channel_layout, struct AVBPrint *bp)
 bprint variant of av_channel_layout_describe(). More...
 
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. More...
 
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. More...
 
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. More...
 
enum AVChannel av_channel_layout_channel_from_string (const AVChannelLayout *channel_layout, const char *name)
 Get a channel described by the given string. More...
 
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. More...
 
int av_channel_layout_check (const AVChannelLayout *channel_layout)
 Check whether a channel layout is valid, i.e. More...
 
int av_channel_layout_compare (const AVChannelLayout *chl, const AVChannelLayout *chl1)
 Check whether two channel layouts are semantically the same, i.e. More...
 

Detailed Description

audio channel layout utility functions

Definition in file channel_layout.h.