FFmpeg
Macros | Enumerations | Functions
mov_chan.h File Reference
#include <stdint.h>
#include "libavutil/channel_layout.h"
#include "libavcodec/codec_id.h"
#include "libavcodec/codec_par.h"
#include "avformat.h"

Go to the source code of this file.

Macros

#define MOV_CH_LAYOUT_UNKNOWN   0xFFFF0000
 

Enumerations

enum  MovChannelLayoutTag {
  MOV_CH_LAYOUT_USE_DESCRIPTIONS = ( 0 << 16) | 0, MOV_CH_LAYOUT_USE_BITMAP = ( 1 << 16) | 0, MOV_CH_LAYOUT_DISCRETEINORDER = (147 << 16) | 0, MOV_CH_LAYOUT_MONO = (100 << 16) | 1,
  MOV_CH_LAYOUT_STEREO = (101 << 16) | 2, MOV_CH_LAYOUT_STEREOHEADPHONES = (102 << 16) | 2, MOV_CH_LAYOUT_MATRIXSTEREO = (103 << 16) | 2, MOV_CH_LAYOUT_MIDSIDE = (104 << 16) | 2,
  MOV_CH_LAYOUT_XY = (105 << 16) | 2, MOV_CH_LAYOUT_BINAURAL = (106 << 16) | 2, MOV_CH_LAYOUT_AMBISONIC_B_FORMAT = (107 << 16) | 4, MOV_CH_LAYOUT_QUADRAPHONIC = (108 << 16) | 4,
  MOV_CH_LAYOUT_PENTAGONAL = (109 << 16) | 5, MOV_CH_LAYOUT_HEXAGONAL = (110 << 16) | 6, MOV_CH_LAYOUT_OCTAGONAL = (111 << 16) | 8, MOV_CH_LAYOUT_CUBE = (112 << 16) | 8,
  MOV_CH_LAYOUT_MPEG_3_0_A = (113 << 16) | 3, MOV_CH_LAYOUT_MPEG_3_0_B = (114 << 16) | 3, MOV_CH_LAYOUT_MPEG_4_0_A = (115 << 16) | 4, MOV_CH_LAYOUT_MPEG_4_0_B = (116 << 16) | 4,
  MOV_CH_LAYOUT_MPEG_5_0_A = (117 << 16) | 5, MOV_CH_LAYOUT_MPEG_5_0_B = (118 << 16) | 5, MOV_CH_LAYOUT_MPEG_5_0_C = (119 << 16) | 5, MOV_CH_LAYOUT_MPEG_5_0_D = (120 << 16) | 5,
  MOV_CH_LAYOUT_MPEG_5_1_A = (121 << 16) | 6, MOV_CH_LAYOUT_MPEG_5_1_B = (122 << 16) | 6, MOV_CH_LAYOUT_MPEG_5_1_C = (123 << 16) | 6, MOV_CH_LAYOUT_MPEG_5_1_D = (124 << 16) | 6,
  MOV_CH_LAYOUT_MPEG_6_1_A = (125 << 16) | 7, MOV_CH_LAYOUT_MPEG_7_1_A = (126 << 16) | 8, MOV_CH_LAYOUT_MPEG_7_1_B = (127 << 16) | 8, MOV_CH_LAYOUT_MPEG_7_1_C = (128 << 16) | 8,
  MOV_CH_LAYOUT_EMAGIC_DEFAULT_7_1 = (129 << 16) | 8, MOV_CH_LAYOUT_SMPTE_DTV = (130 << 16) | 8, MOV_CH_LAYOUT_ITU_2_1 = (131 << 16) | 3, MOV_CH_LAYOUT_ITU_2_2 = (132 << 16) | 4,
  MOV_CH_LAYOUT_DVD_4 = (133 << 16) | 3, MOV_CH_LAYOUT_DVD_5 = (134 << 16) | 4, MOV_CH_LAYOUT_DVD_6 = (135 << 16) | 5, MOV_CH_LAYOUT_DVD_10 = (136 << 16) | 4,
  MOV_CH_LAYOUT_DVD_11 = (137 << 16) | 5, MOV_CH_LAYOUT_DVD_18 = (138 << 16) | 5, MOV_CH_LAYOUT_AUDIOUNIT_6_0 = (139 << 16) | 6, MOV_CH_LAYOUT_AUDIOUNIT_7_0 = (140 << 16) | 7,
  MOV_CH_LAYOUT_AUDIOUNIT_7_0_FRONT = (148 << 16) | 7, MOV_CH_LAYOUT_AAC_6_0 = (141 << 16) | 6, MOV_CH_LAYOUT_AAC_6_1 = (142 << 16) | 7, MOV_CH_LAYOUT_AAC_7_0 = (143 << 16) | 7,
  MOV_CH_LAYOUT_AAC_OCTAGONAL = (144 << 16) | 8, MOV_CH_LAYOUT_TMH_10_2_STD = (145 << 16) | 16, MOV_CH_LAYOUT_TMH_10_2_FULL = (146 << 16) | 21, MOV_CH_LAYOUT_AC3_1_0_1 = (149 << 16) | 2,
  MOV_CH_LAYOUT_AC3_3_0 = (150 << 16) | 3, MOV_CH_LAYOUT_AC3_3_1 = (151 << 16) | 4, MOV_CH_LAYOUT_AC3_3_0_1 = (152 << 16) | 4, MOV_CH_LAYOUT_AC3_2_1_1 = (153 << 16) | 4,
  MOV_CH_LAYOUT_AC3_3_1_1 = (154 << 16) | 5, MOV_CH_LAYOUT_EAC3_6_0_A = (155 << 16) | 6, MOV_CH_LAYOUT_EAC3_7_0_A = (156 << 16) | 7, MOV_CH_LAYOUT_EAC3_6_1_A = (157 << 16) | 7,
  MOV_CH_LAYOUT_EAC3_6_1_B = (158 << 16) | 7, MOV_CH_LAYOUT_EAC3_6_1_C = (159 << 16) | 7, MOV_CH_LAYOUT_EAC3_7_1_A = (160 << 16) | 8, MOV_CH_LAYOUT_EAC3_7_1_B = (161 << 16) | 8,
  MOV_CH_LAYOUT_EAC3_7_1_C = (162 << 16) | 8, MOV_CH_LAYOUT_EAC3_7_1_D = (163 << 16) | 8, MOV_CH_LAYOUT_EAC3_7_1_E = (164 << 16) | 8, MOV_CH_LAYOUT_EAC3_7_1_F = (165 << 16) | 8,
  MOV_CH_LAYOUT_EAC3_7_1_G = (166 << 16) | 8, MOV_CH_LAYOUT_EAC3_7_1_H = (167 << 16) | 8, MOV_CH_LAYOUT_DTS_3_1 = (168 << 16) | 4, MOV_CH_LAYOUT_DTS_4_1 = (169 << 16) | 5,
  MOV_CH_LAYOUT_DTS_6_0_A = (170 << 16) | 6, MOV_CH_LAYOUT_DTS_6_0_B = (171 << 16) | 6, MOV_CH_LAYOUT_DTS_6_0_C = (172 << 16) | 6, MOV_CH_LAYOUT_DTS_6_1_A = (173 << 16) | 7,
  MOV_CH_LAYOUT_DTS_6_1_B = (174 << 16) | 7, MOV_CH_LAYOUT_DTS_6_1_C = (175 << 16) | 7, MOV_CH_LAYOUT_DTS_6_1_D = (182 << 16) | 7, MOV_CH_LAYOUT_DTS_7_0 = (176 << 16) | 7,
  MOV_CH_LAYOUT_DTS_7_1 = (177 << 16) | 8, MOV_CH_LAYOUT_DTS_8_0_A = (178 << 16) | 8, MOV_CH_LAYOUT_DTS_8_0_B = (179 << 16) | 8, MOV_CH_LAYOUT_DTS_8_1_A = (180 << 16) | 9,
  MOV_CH_LAYOUT_DTS_8_1_B = (181 << 16) | 9
}
 mov 'chan' tag reading/writing. More...
 

Functions

int ff_mov_get_channel_layout_tag (const AVCodecParameters *par, uint32_t *layout, uint32_t *bitmap, uint32_t **pchannel_desc)
 Get the channel layout tag for the specified codec id and channel layout. More...
 
int ff_mov_read_chan (AVFormatContext *s, AVIOContext *pb, AVStream *st, int64_t size)
 Read 'chan' tag from the input stream. More...
 
int ff_mov_get_channel_config_from_layout (const AVChannelLayout *layout, int *config)
 Get ISO/IEC 23001-8 ChannelConfiguration from AVChannelLayout. More...
 
int ff_mov_get_channel_layout_from_config (int config, AVChannelLayout *layout)
 Get AVChannelLayout from ISO/IEC 23001-8 ChannelConfiguration. More...
 
int ff_mov_get_channel_positions_from_layout (const AVChannelLayout *layout, uint8_t *position, int position_num)
 Get ISO/IEC 23001-8 OutputChannelPosition from AVChannelLayout. More...
 
int ff_mov_get_layout_from_channel_positions (const uint8_t *position, int position_num, AVChannelLayout *layout)
 Get AVChannelLayout from ISO/IEC 23001-8 OutputChannelPosition. More...
 

Macro Definition Documentation

◆ MOV_CH_LAYOUT_UNKNOWN

#define MOV_CH_LAYOUT_UNKNOWN   0xFFFF0000

Definition at line 52 of file mov_chan.h.

Enumeration Type Documentation

◆ MovChannelLayoutTag

mov 'chan' tag reading/writing.

Author
Justin Ruggles Channel Layout Tag This tells which channels are present in the audio stream and the order in which they appear.
Note
We're using the channel layout tag to indicate channel order when the value is greater than 0x10000. The Apple documentation has some contradictions as to how this is actually supposed to be handled.

Core Audio File Format Spec: "The high 16 bits indicates a specific ordering of the channels." Core Audio Data Types Reference: "These identifiers specify the channels included in a layout but do not specify a particular ordering of those channels."

Enumerator
MOV_CH_LAYOUT_USE_DESCRIPTIONS 
MOV_CH_LAYOUT_USE_BITMAP 
MOV_CH_LAYOUT_DISCRETEINORDER 
MOV_CH_LAYOUT_MONO 
MOV_CH_LAYOUT_STEREO 
MOV_CH_LAYOUT_STEREOHEADPHONES 
MOV_CH_LAYOUT_MATRIXSTEREO 
MOV_CH_LAYOUT_MIDSIDE 
MOV_CH_LAYOUT_XY 
MOV_CH_LAYOUT_BINAURAL 
MOV_CH_LAYOUT_AMBISONIC_B_FORMAT 
MOV_CH_LAYOUT_QUADRAPHONIC 
MOV_CH_LAYOUT_PENTAGONAL 
MOV_CH_LAYOUT_HEXAGONAL 
MOV_CH_LAYOUT_OCTAGONAL 
MOV_CH_LAYOUT_CUBE 
MOV_CH_LAYOUT_MPEG_3_0_A 
MOV_CH_LAYOUT_MPEG_3_0_B 
MOV_CH_LAYOUT_MPEG_4_0_A 
MOV_CH_LAYOUT_MPEG_4_0_B 
MOV_CH_LAYOUT_MPEG_5_0_A 
MOV_CH_LAYOUT_MPEG_5_0_B 
MOV_CH_LAYOUT_MPEG_5_0_C 
MOV_CH_LAYOUT_MPEG_5_0_D 
MOV_CH_LAYOUT_MPEG_5_1_A 
MOV_CH_LAYOUT_MPEG_5_1_B 
MOV_CH_LAYOUT_MPEG_5_1_C 
MOV_CH_LAYOUT_MPEG_5_1_D 
MOV_CH_LAYOUT_MPEG_6_1_A 
MOV_CH_LAYOUT_MPEG_7_1_A 
MOV_CH_LAYOUT_MPEG_7_1_B 
MOV_CH_LAYOUT_MPEG_7_1_C 
MOV_CH_LAYOUT_EMAGIC_DEFAULT_7_1 
MOV_CH_LAYOUT_SMPTE_DTV 
MOV_CH_LAYOUT_ITU_2_1 
MOV_CH_LAYOUT_ITU_2_2 
MOV_CH_LAYOUT_DVD_4 
MOV_CH_LAYOUT_DVD_5 
MOV_CH_LAYOUT_DVD_6 
MOV_CH_LAYOUT_DVD_10 
MOV_CH_LAYOUT_DVD_11 
MOV_CH_LAYOUT_DVD_18 
MOV_CH_LAYOUT_AUDIOUNIT_6_0 
MOV_CH_LAYOUT_AUDIOUNIT_7_0 
MOV_CH_LAYOUT_AUDIOUNIT_7_0_FRONT 
MOV_CH_LAYOUT_AAC_6_0 
MOV_CH_LAYOUT_AAC_6_1 
MOV_CH_LAYOUT_AAC_7_0 
MOV_CH_LAYOUT_AAC_OCTAGONAL 
MOV_CH_LAYOUT_TMH_10_2_STD 
MOV_CH_LAYOUT_TMH_10_2_FULL 
MOV_CH_LAYOUT_AC3_1_0_1 
MOV_CH_LAYOUT_AC3_3_0 
MOV_CH_LAYOUT_AC3_3_1 
MOV_CH_LAYOUT_AC3_3_0_1 
MOV_CH_LAYOUT_AC3_2_1_1 
MOV_CH_LAYOUT_AC3_3_1_1 
MOV_CH_LAYOUT_EAC3_6_0_A 
MOV_CH_LAYOUT_EAC3_7_0_A 
MOV_CH_LAYOUT_EAC3_6_1_A 
MOV_CH_LAYOUT_EAC3_6_1_B 
MOV_CH_LAYOUT_EAC3_6_1_C 
MOV_CH_LAYOUT_EAC3_7_1_A 
MOV_CH_LAYOUT_EAC3_7_1_B 
MOV_CH_LAYOUT_EAC3_7_1_C 
MOV_CH_LAYOUT_EAC3_7_1_D 
MOV_CH_LAYOUT_EAC3_7_1_E 
MOV_CH_LAYOUT_EAC3_7_1_F 
MOV_CH_LAYOUT_EAC3_7_1_G 
MOV_CH_LAYOUT_EAC3_7_1_H 
MOV_CH_LAYOUT_DTS_3_1 
MOV_CH_LAYOUT_DTS_4_1 
MOV_CH_LAYOUT_DTS_6_0_A 
MOV_CH_LAYOUT_DTS_6_0_B 
MOV_CH_LAYOUT_DTS_6_0_C 
MOV_CH_LAYOUT_DTS_6_1_A 
MOV_CH_LAYOUT_DTS_6_1_B 
MOV_CH_LAYOUT_DTS_6_1_C 
MOV_CH_LAYOUT_DTS_6_1_D 
MOV_CH_LAYOUT_DTS_7_0 
MOV_CH_LAYOUT_DTS_7_1 
MOV_CH_LAYOUT_DTS_8_0_A 
MOV_CH_LAYOUT_DTS_8_0_B 
MOV_CH_LAYOUT_DTS_8_1_A 
MOV_CH_LAYOUT_DTS_8_1_B 

Definition at line 51 of file mov_chan.h.

Function Documentation

◆ ff_mov_get_channel_layout_tag()

int ff_mov_get_channel_layout_tag ( const AVCodecParameters par,
uint32_t *  layout,
uint32_t *  bitmap,
uint32_t **  pchannel_desc 
)

Get the channel layout tag for the specified codec id and channel layout.

If the layout tag was not found, use a channel bitmap if possible.

Parameters
[in]codec_idcodec id
[in]channel_layoutchannel layout
[out]bitmapchannel bitmap
Returns
channel layout tag

Definition at line 418 of file mov_chan.c.

Referenced by mov_write_chan_tag().

◆ ff_mov_read_chan()

int ff_mov_read_chan ( AVFormatContext s,
AVIOContext pb,
AVStream st,
int64_t  size 
)

Read 'chan' tag from the input stream.

Parameters
sAVFormatContext
pbAVIOContext
stThe stream to set codec values for
sizeRemaining size in the 'chan' tag
Returns
0 if ok, or negative AVERROR code on failure

Definition at line 496 of file mov_chan.c.

Referenced by aiff_read_header(), mov_read_chan(), and read_header().

◆ ff_mov_get_channel_config_from_layout()

int ff_mov_get_channel_config_from_layout ( const AVChannelLayout layout,
int config 
)

Get ISO/IEC 23001-8 ChannelConfiguration from AVChannelLayout.

Definition at line 745 of file mov_chan.c.

Referenced by mov_write_chnl_tag().

◆ ff_mov_get_channel_layout_from_config()

int ff_mov_get_channel_layout_from_config ( int  config,
AVChannelLayout layout 
)

Get AVChannelLayout from ISO/IEC 23001-8 ChannelConfiguration.

Returns
0 for success, -1 for doesn't match, layout is untouched on failure

Definition at line 759 of file mov_chan.c.

Referenced by mov_read_chnl().

◆ ff_mov_get_channel_positions_from_layout()

int ff_mov_get_channel_positions_from_layout ( const AVChannelLayout layout,
uint8_t *  position,
int  position_num 
)

Get ISO/IEC 23001-8 OutputChannelPosition from AVChannelLayout.

Definition at line 769 of file mov_chan.c.

Referenced by mov_write_chnl_tag().

◆ ff_mov_get_layout_from_channel_positions()

int ff_mov_get_layout_from_channel_positions ( const uint8_t *  position,
int  position_num,
AVChannelLayout layout 
)

Get AVChannelLayout from ISO/IEC 23001-8 OutputChannelPosition.

Definition at line 796 of file mov_chan.c.

Referenced by mov_read_chnl().