FFmpeg
Data Structures | Macros | Functions | Variables
channel_layout.c File Reference
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "avassert.h"
#include "channel_layout.h"
#include "bprint.h"
#include "common.h"
#include "error.h"
#include "macros.h"
#include "opt.h"

Go to the source code of this file.

Data Structures

struct  channel_name
 
struct  channel_layout_name
 

Macros

#define CHAN_IS_AMBI(x)
 

Functions

void av_channel_name_bprint (AVBPrint *bp, enum AVChannel channel_id)
 bprint variant of av_channel_name(). More...
 
int av_channel_name (char *buf, size_t buf_size, enum AVChannel channel_id)
 Get a human readable string in an abbreviated form describing a given channel. More...
 
void av_channel_description_bprint (AVBPrint *bp, enum AVChannel channel_id)
 bprint variant of av_channel_description(). More...
 
int av_channel_description (char *buf, size_t buf_size, enum AVChannel channel_id)
 Get a human readable string describing a given channel. More...
 
enum AVChannel av_channel_from_string (const char *str)
 This is the inverse function of av_channel_name(). More...
 
int av_channel_layout_custom_init (AVChannelLayout *channel_layout, int nb_channels)
 Initialize a custom channel layout with the specified number of channels. 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...
 
static int parse_channel_list (AVChannelLayout *ch_layout, const char *str)
 
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_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...
 
static int64_t masked_description (const AVChannelLayout *channel_layout, int start_channel)
 
static int has_channel_names (const AVChannelLayout *channel_layout)
 
static int ambisonic_order (const AVChannelLayout *channel_layout)
 If the layout is n-th order standard-order ambisonic, with optional extra non-diegetic channels at the end, return the order. More...
 
static enum AVChannelOrder canonical_order (AVChannelLayout *channel_layout)
 
static int try_describe_ambisonic (AVBPrint *bp, const AVChannelLayout *channel_layout)
 If the custom layout is n-th order standard-order ambisonic, with optional extra non-diegetic channels at the end, write its string description in bp. More...
 
int av_channel_layout_describe_bprint (const AVChannelLayout *channel_layout, AVBPrint *bp)
 bprint variant of av_channel_layout_describe(). 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...
 
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...
 
enum AVChannel av_channel_layout_channel_from_string (const AVChannelLayout *channel_layout, const char *str)
 Get a channel described by the given string. 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 *str)
 Get the index in a channel layout of a channel described by the given string. 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...
 
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...
 
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_retype (AVChannelLayout *channel_layout, enum AVChannelOrder order, int flags)
 Change the AVChannelOrder of a channel layout. More...
 

Variables

static const struct channel_name channel_names []
 
static const struct channel_layout_name channel_layout_map []
 

Detailed Description

audio channel layout utility functions

Definition in file channel_layout.c.

Macro Definition Documentation

◆ CHAN_IS_AMBI

#define CHAN_IS_AMBI (   x)
Value:

Definition at line 38 of file channel_layout.c.

Function Documentation

◆ parse_channel_list()

static int parse_channel_list ( AVChannelLayout ch_layout,
const char *  str 
)
static

Definition at line 255 of file channel_layout.c.

Referenced by av_channel_layout_from_string().

◆ masked_description()

static int64_t masked_description ( const AVChannelLayout channel_layout,
int  start_channel 
)
static

◆ has_channel_names()

static int has_channel_names ( const AVChannelLayout channel_layout)
static

◆ ambisonic_order()

static int ambisonic_order ( const AVChannelLayout channel_layout)
static

If the layout is n-th order standard-order ambisonic, with optional extra non-diegetic channels at the end, return the order.

Return a negative error code otherwise.

Definition at line 480 of file channel_layout.c.

Referenced by av_channel_layout_retype(), canonical_order(), ff_opus_parse_extradata(), mov_read_SA3D(), and try_describe_ambisonic().

◆ canonical_order()

static enum AVChannelOrder canonical_order ( AVChannelLayout channel_layout)
static

Definition at line 518 of file channel_layout.c.

Referenced by av_channel_layout_retype().

◆ try_describe_ambisonic()

static int try_describe_ambisonic ( AVBPrint *  bp,
const AVChannelLayout channel_layout 
)
static

If the custom layout is n-th order standard-order ambisonic, with optional extra non-diegetic channels at the end, write its string description in bp.

Return a negative error code otherwise.

Definition at line 550 of file channel_layout.c.

Referenced by av_channel_layout_describe_bprint().

Variable Documentation

◆ channel_names

const struct channel_name channel_names[]
static

◆ channel_layout_map

const struct channel_layout_name channel_layout_map[]
static
AV_CHAN_AMBISONIC_END
@ AV_CHAN_AMBISONIC_END
Definition: channel_layout.h:104
AV_CHAN_AMBISONIC_BASE
@ AV_CHAN_AMBISONIC_BASE
Range of channels between AV_CHAN_AMBISONIC_BASE and AV_CHAN_AMBISONIC_END represent Ambisonic compon...
Definition: channel_layout.h:101