FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Enumerations | Functions | Variables
mov_chan.c File Reference
#include <stdint.h>
#include "libavutil/channel_layout.h"
#include "libavcodec/avcodec.h"
#include "mov_chan.h"

Go to the source code of this file.

Data Structures

struct  MovChannelLayoutMap
 

Enumerations

enum  MovChannelLayoutTag {
  MOV_CH_LAYOUT_UNKNOWN = 0xFFFF0000, 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

uint64_t ff_mov_get_channel_layout (uint32_t tag, uint32_t bitmap)
 mov 'chan' tag reading/writing.
 
static uint32_t mov_get_channel_label (uint32_t label)
 
uint32_t ff_mov_get_channel_layout_tag (enum AVCodecID codec_id, uint64_t channel_layout, uint32_t *bitmap)
 Get the channel layout tag for the specified codec id and channel layout.
 
int ff_mov_read_chan (AVFormatContext *s, AVIOContext *pb, AVStream *st, int64_t size)
 Read 'chan' tag from the input stream.
 

Variables

static struct MovChannelLayoutMap mov_ch_layout_map_misc []
 
static struct MovChannelLayoutMap mov_ch_layout_map_1ch []
 
static struct MovChannelLayoutMap mov_ch_layout_map_2ch []
 
static struct MovChannelLayoutMap mov_ch_layout_map_3ch []
 
static struct MovChannelLayoutMap mov_ch_layout_map_4ch []
 
static struct MovChannelLayoutMap mov_ch_layout_map_5ch []
 
static struct MovChannelLayoutMap mov_ch_layout_map_6ch []
 
static struct MovChannelLayoutMap mov_ch_layout_map_7ch []
 
static struct MovChannelLayoutMap mov_ch_layout_map_8ch []
 
static struct MovChannelLayoutMap mov_ch_layout_map_9ch []
 
static struct
MovChannelLayoutMap *const 
mov_ch_layout_map []
 
static enum MovChannelLayoutTag mov_ch_layouts_aac []
 
static enum MovChannelLayoutTag mov_ch_layouts_ac3 []
 
static enum MovChannelLayoutTag mov_ch_layouts_alac []
 
static enum MovChannelLayoutTag mov_ch_layouts_wav []
 
struct {
   enum AVCodecID   codec_id
 
   enum MovChannelLayoutTag *   layouts
 
mov_codec_ch_layouts []
 

Enumeration Type Documentation

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_UNKNOWN 
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 47 of file mov_chan.c.

Function Documentation

uint64_t ff_mov_get_channel_layout ( uint32_t  tag,
uint32_t  bitmap 
)

mov 'chan' tag reading/writing.

Author
Justin Ruggles Get the channel layout for the specified channel layout tag.
Parameters
[in]tagchannel layout tag
[out]bitmapchannel bitmap (only used if needed)
Returns
channel layout

Definition at line 454 of file mov_chan.c.

Referenced by ff_mov_read_chan().

static uint32_t mov_get_channel_label ( uint32_t  label)
static

Definition at line 481 of file mov_chan.c.

Referenced by ff_mov_read_chan().

uint32_t ff_mov_get_channel_layout_tag ( enum AVCodecID  codec_id,
uint64_t  channel_layout,
uint32_t *  bitmap 
)

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 494 of file mov_chan.c.

Referenced by mov_write_chan_tag().

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 547 of file mov_chan.c.

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

Variable Documentation

struct MovChannelLayoutMap mov_ch_layout_map_misc[]
static
Initial value:

Definition at line 141 of file mov_chan.c.

struct MovChannelLayoutMap mov_ch_layout_map_1ch[]
static
Initial value:
= {
{ 0, 0 },
}

Definition at line 156 of file mov_chan.c.

struct MovChannelLayoutMap mov_ch_layout_map_2ch[]
static
struct MovChannelLayoutMap mov_ch_layout_map_3ch[]
static
struct MovChannelLayoutMap mov_ch_layout_map_4ch[]
static
struct MovChannelLayoutMap mov_ch_layout_map_5ch[]
static
struct MovChannelLayoutMap mov_ch_layout_map_6ch[]
static
struct MovChannelLayoutMap mov_ch_layout_map_7ch[]
static
struct MovChannelLayoutMap mov_ch_layout_map_8ch[]
static

Definition at line 275 of file mov_chan.c.

struct MovChannelLayoutMap mov_ch_layout_map_9ch[]
static
struct MovChannelLayoutMap* const mov_ch_layout_map[]
static
enum MovChannelLayoutTag mov_ch_layouts_aac[]
static
enum MovChannelLayoutTag mov_ch_layouts_ac3[]
static
enum MovChannelLayoutTag mov_ch_layouts_alac[]
static
enum MovChannelLayoutTag mov_ch_layouts_wav[]
static
enum AVCodecID codec_id
enum MovChannelLayoutTag* layouts
struct { ... } mov_codec_ch_layouts[]