1 #if !defined(__CoreAudioTypes_h__)
2 #define __CoreAudioTypes_h__
4 enum { kVariableLengthArray
= 1 };
6 typedef uint32_t AudioChannelLabel
;
7 typedef uint32_t AudioChannelLayoutTag
;
9 struct AudioChannelDescription
11 AudioChannelLabel mChannelLabel
;
12 uint32_t mChannelFlags
;
13 float mCoordinates
[3];
15 typedef struct AudioChannelDescription AudioChannelDescription
;
17 struct AudioChannelLayout
19 AudioChannelLayoutTag mChannelLayoutTag
;
20 uint32_t mChannelBitmap
;
21 uint32_t mNumberChannelDescriptions
;
22 AudioChannelDescription mChannelDescriptions
[kVariableLengthArray
];
24 typedef struct AudioChannelLayout AudioChannelLayout
;
28 kAudioChannelLabel_Unknown
= 0xFFFFFFFF, // unknown or unspecified other use
29 kAudioChannelLabel_Unused
= 0, // channel is present, but has no intended use or destination
30 kAudioChannelLabel_UseCoordinates
= 100, // channel is described by the mCoordinates fields.
32 kAudioChannelLabel_Left
= 1,
33 kAudioChannelLabel_Right
= 2,
34 kAudioChannelLabel_Center
= 3,
35 kAudioChannelLabel_LFEScreen
= 4,
36 kAudioChannelLabel_LeftSurround
= 5, // WAVE: "Back Left"
37 kAudioChannelLabel_RightSurround
= 6, // WAVE: "Back Right"
38 kAudioChannelLabel_LeftCenter
= 7,
39 kAudioChannelLabel_RightCenter
= 8,
40 kAudioChannelLabel_CenterSurround
= 9, // WAVE: "Back Center" or plain "Rear Surround"
41 kAudioChannelLabel_LeftSurroundDirect
= 10, // WAVE: "Side Left"
42 kAudioChannelLabel_RightSurroundDirect
= 11, // WAVE: "Side Right"
43 kAudioChannelLabel_TopCenterSurround
= 12,
44 kAudioChannelLabel_VerticalHeightLeft
= 13, // WAVE: "Top Front Left"
45 kAudioChannelLabel_VerticalHeightCenter
= 14, // WAVE: "Top Front Center"
46 kAudioChannelLabel_VerticalHeightRight
= 15, // WAVE: "Top Front Right"
48 kAudioChannelLabel_TopBackLeft
= 16,
49 kAudioChannelLabel_TopBackCenter
= 17,
50 kAudioChannelLabel_TopBackRight
= 18,
52 kAudioChannelLabel_RearSurroundLeft
= 33,
53 kAudioChannelLabel_RearSurroundRight
= 34,
54 kAudioChannelLabel_LeftWide
= 35,
55 kAudioChannelLabel_RightWide
= 36,
56 kAudioChannelLabel_LFE2
= 37,
57 kAudioChannelLabel_LeftTotal
= 38, // matrix encoded 4 channels
58 kAudioChannelLabel_RightTotal
= 39, // matrix encoded 4 channels
59 kAudioChannelLabel_HearingImpaired
= 40,
60 kAudioChannelLabel_Narration
= 41,
61 kAudioChannelLabel_Mono
= 42,
62 kAudioChannelLabel_DialogCentricMix
= 43,
64 kAudioChannelLabel_CenterSurroundDirect
= 44, // back center, non diffuse
66 kAudioChannelLabel_Haptic
= 45,
68 // first order ambisonic channels
69 kAudioChannelLabel_Ambisonic_W
= 200,
70 kAudioChannelLabel_Ambisonic_X
= 201,
71 kAudioChannelLabel_Ambisonic_Y
= 202,
72 kAudioChannelLabel_Ambisonic_Z
= 203,
75 kAudioChannelLabel_MS_Mid
= 204,
76 kAudioChannelLabel_MS_Side
= 205,
79 kAudioChannelLabel_XY_X
= 206,
80 kAudioChannelLabel_XY_Y
= 207,
83 kAudioChannelLabel_HeadphonesLeft
= 301,
84 kAudioChannelLabel_HeadphonesRight
= 302,
85 kAudioChannelLabel_ClickTrack
= 304,
86 kAudioChannelLabel_ForeignLanguage
= 305,
88 // generic discrete channel
89 kAudioChannelLabel_Discrete
= 400,
91 // numbered discrete channel
92 kAudioChannelLabel_Discrete_0
= (1L<<16) | 0,
93 kAudioChannelLabel_Discrete_1
= (1L<<16) | 1,
94 kAudioChannelLabel_Discrete_2
= (1L<<16) | 2,
95 kAudioChannelLabel_Discrete_3
= (1L<<16) | 3,
96 kAudioChannelLabel_Discrete_4
= (1L<<16) | 4,
97 kAudioChannelLabel_Discrete_5
= (1L<<16) | 5,
98 kAudioChannelLabel_Discrete_6
= (1L<<16) | 6,
99 kAudioChannelLabel_Discrete_7
= (1L<<16) | 7,
100 kAudioChannelLabel_Discrete_8
= (1L<<16) | 8,
101 kAudioChannelLabel_Discrete_9
= (1L<<16) | 9,
102 kAudioChannelLabel_Discrete_10
= (1L<<16) | 10,
103 kAudioChannelLabel_Discrete_11
= (1L<<16) | 11,
104 kAudioChannelLabel_Discrete_12
= (1L<<16) | 12,
105 kAudioChannelLabel_Discrete_13
= (1L<<16) | 13,
106 kAudioChannelLabel_Discrete_14
= (1L<<16) | 14,
107 kAudioChannelLabel_Discrete_15
= (1L<<16) | 15,
108 kAudioChannelLabel_Discrete_65535
= (1L<<16) | 65535
111 #define AudioChannelLayoutTag_GetNumberOfChannels(layoutTag) \
112 ((uint32_t)((layoutTag) & 0x0000FFFF))
116 kAudioChannelLayoutTag_UseChannelDescriptions
= (0L<<16) | 0, // use the array of AudioChannelDescriptions to define the mapping.
117 kAudioChannelLayoutTag_UseChannelBitmap
= (1L<<16) | 0, // use the bitmap to define the mapping.
119 kAudioChannelLayoutTag_Mono
= (100L<<16) | 1, // a standard mono stream
120 kAudioChannelLayoutTag_Stereo
= (101L<<16) | 2, // a standard stereo stream (L R) - implied playback
121 kAudioChannelLayoutTag_StereoHeadphones
= (102L<<16) | 2, // a standard stereo stream (L R) - implied headphone playbac
122 kAudioChannelLayoutTag_MatrixStereo
= (103L<<16) | 2, // a matrix encoded stereo stream (Lt, Rt)
123 kAudioChannelLayoutTag_MidSide
= (104L<<16) | 2, // mid/side recording
124 kAudioChannelLayoutTag_XY
= (105L<<16) | 2, // coincident mic pair (often 2 figure 8's)
125 kAudioChannelLayoutTag_Binaural
= (106L<<16) | 2, // binaural stereo (left, right)
126 kAudioChannelLayoutTag_Ambisonic_B_Format
= (107L<<16) | 4, // W, X, Y, Z
128 kAudioChannelLayoutTag_Quadraphonic
= (108L<<16) | 4, // front left, front right, back left, back right
130 kAudioChannelLayoutTag_Pentagonal
= (109L<<16) | 5, // left, right, rear left, rear right, center
132 kAudioChannelLayoutTag_Hexagonal
= (110L<<16) | 6, // left, right, rear left, rear right, center, rear
134 kAudioChannelLayoutTag_Octagonal
= (111L<<16) | 8, // front left, front right, rear left, rear right,
135 // front center, rear center, side left, side right
137 kAudioChannelLayoutTag_Cube
= (112L<<16) | 8, // left, right, rear left, rear right
138 // top left, top right, top rear left, top rear right
140 // MPEG defined layouts
141 kAudioChannelLayoutTag_MPEG_1_0
= kAudioChannelLayoutTag_Mono
, // C
142 kAudioChannelLayoutTag_MPEG_2_0
= kAudioChannelLayoutTag_Stereo
, // L R
143 kAudioChannelLayoutTag_MPEG_3_0_A
= (113L<<16) | 3, // L R C
144 kAudioChannelLayoutTag_MPEG_3_0_B
= (114L<<16) | 3, // C L R
145 kAudioChannelLayoutTag_MPEG_4_0_A
= (115L<<16) | 4, // L R C Cs
146 kAudioChannelLayoutTag_MPEG_4_0_B
= (116L<<16) | 4, // C L R Cs
147 kAudioChannelLayoutTag_MPEG_5_0_A
= (117L<<16) | 5, // L R C Ls Rs
148 kAudioChannelLayoutTag_MPEG_5_0_B
= (118L<<16) | 5, // L R Ls Rs C
149 kAudioChannelLayoutTag_MPEG_5_0_C
= (119L<<16) | 5, // L C R Ls Rs
150 kAudioChannelLayoutTag_MPEG_5_0_D
= (120L<<16) | 5, // C L R Ls Rs
151 kAudioChannelLayoutTag_MPEG_5_1_A
= (121L<<16) | 6, // L R C LFE Ls Rs
152 kAudioChannelLayoutTag_MPEG_5_1_B
= (122L<<16) | 6, // L R Ls Rs C LFE
153 kAudioChannelLayoutTag_MPEG_5_1_C
= (123L<<16) | 6, // L C R Ls Rs LFE
154 kAudioChannelLayoutTag_MPEG_5_1_D
= (124L<<16) | 6, // C L R Ls Rs LFE
155 kAudioChannelLayoutTag_MPEG_6_1_A
= (125L<<16) | 7, // L R C LFE Ls Rs Cs
156 kAudioChannelLayoutTag_MPEG_7_1_A
= (126L<<16) | 8, // L R C LFE Ls Rs Lc Rc
157 kAudioChannelLayoutTag_MPEG_7_1_B
= (127L<<16) | 8, // C Lc Rc L R Ls Rs LFE (doc: IS-13818-7 MPEG2-AAC Table 3.1)
158 kAudioChannelLayoutTag_MPEG_7_1_C
= (128L<<16) | 8, // L R C LFE Ls Rs Rls Rrs
159 kAudioChannelLayoutTag_Emagic_Default_7_1
= (129L<<16) | 8, // L R Ls Rs C LFE Lc Rc
160 kAudioChannelLayoutTag_SMPTE_DTV
= (130L<<16) | 8, // L R C LFE Ls Rs Lt Rt
161 // (kAudioChannelLayoutTag_ITU_5_1 plus a matrix encoded stereo mix)
163 // ITU defined layouts
164 kAudioChannelLayoutTag_ITU_1_0
= kAudioChannelLayoutTag_Mono
, // C
165 kAudioChannelLayoutTag_ITU_2_0
= kAudioChannelLayoutTag_Stereo
, // L R
167 kAudioChannelLayoutTag_ITU_2_1
= (131L<<16) | 3, // L R Cs
168 kAudioChannelLayoutTag_ITU_2_2
= (132L<<16) | 4, // L R Ls Rs
169 kAudioChannelLayoutTag_ITU_3_0
= kAudioChannelLayoutTag_MPEG_3_0_A
, // L R C
170 kAudioChannelLayoutTag_ITU_3_1
= kAudioChannelLayoutTag_MPEG_4_0_A
, // L R C Cs
172 kAudioChannelLayoutTag_ITU_3_2
= kAudioChannelLayoutTag_MPEG_5_0_A
, // L R C Ls Rs
173 kAudioChannelLayoutTag_ITU_3_2_1
= kAudioChannelLayoutTag_MPEG_5_1_A
, // L R C LFE Ls Rs
174 kAudioChannelLayoutTag_ITU_3_4_1
= kAudioChannelLayoutTag_MPEG_7_1_C
, // L R C LFE Ls Rs Rls Rrs
176 // DVD defined layouts
177 kAudioChannelLayoutTag_DVD_0
= kAudioChannelLayoutTag_Mono
, // C (mono)
178 kAudioChannelLayoutTag_DVD_1
= kAudioChannelLayoutTag_Stereo
, // L R
179 kAudioChannelLayoutTag_DVD_2
= kAudioChannelLayoutTag_ITU_2_1
, // L R Cs
180 kAudioChannelLayoutTag_DVD_3
= kAudioChannelLayoutTag_ITU_2_2
, // L R Ls Rs
181 kAudioChannelLayoutTag_DVD_4
= (133L<<16) | 3, // L R LFE
182 kAudioChannelLayoutTag_DVD_5
= (134L<<16) | 4, // L R LFE Cs
183 kAudioChannelLayoutTag_DVD_6
= (135L<<16) | 5, // L R LFE Ls Rs
184 kAudioChannelLayoutTag_DVD_7
= kAudioChannelLayoutTag_MPEG_3_0_A
, // L R C
185 kAudioChannelLayoutTag_DVD_8
= kAudioChannelLayoutTag_MPEG_4_0_A
, // L R C Cs
186 kAudioChannelLayoutTag_DVD_9
= kAudioChannelLayoutTag_MPEG_5_0_A
, // L R C Ls Rs
187 kAudioChannelLayoutTag_DVD_10
= (136L<<16) | 4, // L R C LFE
188 kAudioChannelLayoutTag_DVD_11
= (137L<<16) | 5, // L R C LFE Cs
189 kAudioChannelLayoutTag_DVD_12
= kAudioChannelLayoutTag_MPEG_5_1_A
, // L R C LFE Ls Rs
190 // 13 through 17 are duplicates of 8 through 12.
191 kAudioChannelLayoutTag_DVD_13
= kAudioChannelLayoutTag_DVD_8
, // L R C Cs
192 kAudioChannelLayoutTag_DVD_14
= kAudioChannelLayoutTag_DVD_9
, // L R C Ls Rs
193 kAudioChannelLayoutTag_DVD_15
= kAudioChannelLayoutTag_DVD_10
, // L R C LFE
194 kAudioChannelLayoutTag_DVD_16
= kAudioChannelLayoutTag_DVD_11
, // L R C LFE Cs
195 kAudioChannelLayoutTag_DVD_17
= kAudioChannelLayoutTag_DVD_12
, // L R C LFE Ls Rs
196 kAudioChannelLayoutTag_DVD_18
= (138L<<16) | 5, // L R Ls Rs LFE
197 kAudioChannelLayoutTag_DVD_19
= kAudioChannelLayoutTag_MPEG_5_0_B
, // L R Ls Rs C
198 kAudioChannelLayoutTag_DVD_20
= kAudioChannelLayoutTag_MPEG_5_1_B
, // L R Ls Rs C LFE
200 // These layouts are recommended for AudioUnit usage
201 // These are the symmetrical layouts
202 kAudioChannelLayoutTag_AudioUnit_4
= kAudioChannelLayoutTag_Quadraphonic
,
203 kAudioChannelLayoutTag_AudioUnit_5
= kAudioChannelLayoutTag_Pentagonal
,
204 kAudioChannelLayoutTag_AudioUnit_6
= kAudioChannelLayoutTag_Hexagonal
,
205 kAudioChannelLayoutTag_AudioUnit_8
= kAudioChannelLayoutTag_Octagonal
,
206 // These are the surround-based layouts
207 kAudioChannelLayoutTag_AudioUnit_5_0
= kAudioChannelLayoutTag_MPEG_5_0_B
, // L R Ls Rs C
208 kAudioChannelLayoutTag_AudioUnit_6_0
= (139L<<16) | 6, // L R Ls Rs C Cs
209 kAudioChannelLayoutTag_AudioUnit_7_0
= (140L<<16) | 7, // L R Ls Rs C Rls Rrs
210 kAudioChannelLayoutTag_AudioUnit_7_0_Front
= (148L<<16) | 7, // L R Ls Rs C Lc Rc
211 kAudioChannelLayoutTag_AudioUnit_5_1
= kAudioChannelLayoutTag_MPEG_5_1_A
, // L R C LFE Ls Rs
212 kAudioChannelLayoutTag_AudioUnit_6_1
= kAudioChannelLayoutTag_MPEG_6_1_A
, // L R C LFE Ls Rs Cs
213 kAudioChannelLayoutTag_AudioUnit_7_1
= kAudioChannelLayoutTag_MPEG_7_1_C
, // L R C LFE Ls Rs Rls Rrs
214 kAudioChannelLayoutTag_AudioUnit_7_1_Front
= kAudioChannelLayoutTag_MPEG_7_1_A
, // L R C LFE Ls Rs Lc Rc
216 kAudioChannelLayoutTag_AAC_3_0
= kAudioChannelLayoutTag_MPEG_3_0_B
, // C L R
217 kAudioChannelLayoutTag_AAC_Quadraphonic
= kAudioChannelLayoutTag_Quadraphonic
, // L R Ls Rs
218 kAudioChannelLayoutTag_AAC_4_0
= kAudioChannelLayoutTag_MPEG_4_0_B
, // C L R Cs
219 kAudioChannelLayoutTag_AAC_5_0
= kAudioChannelLayoutTag_MPEG_5_0_D
, // C L R Ls Rs
220 kAudioChannelLayoutTag_AAC_5_1
= kAudioChannelLayoutTag_MPEG_5_1_D
, // C L R Ls Rs Lfe
221 kAudioChannelLayoutTag_AAC_6_0
= (141L<<16) | 6, // C L R Ls Rs Cs
222 kAudioChannelLayoutTag_AAC_6_1
= (142L<<16) | 7, // C L R Ls Rs Cs Lfe
223 kAudioChannelLayoutTag_AAC_7_0
= (143L<<16) | 7, // C L R Ls Rs Rls Rrs
224 kAudioChannelLayoutTag_AAC_7_1
= kAudioChannelLayoutTag_MPEG_7_1_B
, // C Lc Rc L R Ls Rs Lfe
225 kAudioChannelLayoutTag_AAC_Octagonal
= (144L<<16) | 8, // C L R Ls Rs Rls Rrs Cs
227 kAudioChannelLayoutTag_TMH_10_2_std
= (145L<<16) | 16, // L R C Vhc Lsd Rsd Ls Rs Vhl Vhr Lw Rw Csd Cs LFE1 LFE2
228 kAudioChannelLayoutTag_TMH_10_2_full
= (146L<<16) | 21, // TMH_10_2_std plus: Lc Rc HI VI Haptic
230 kAudioChannelLayoutTag_AC3_1_0_1
= (149L<<16) | 2, // C LFE
231 kAudioChannelLayoutTag_AC3_3_0
= (150L<<16) | 3, // L C R
232 kAudioChannelLayoutTag_AC3_3_1
= (151L<<16) | 4, // L C R Cs
233 kAudioChannelLayoutTag_AC3_3_0_1
= (152L<<16) | 4, // L C R LFE
234 kAudioChannelLayoutTag_AC3_2_1_1
= (153L<<16) | 4, // L R Cs LFE
235 kAudioChannelLayoutTag_AC3_3_1_1
= (154L<<16) | 5, // L C R Cs LFE
237 kAudioChannelLayoutTag_DiscreteInOrder
= (147L<<16) | 0, // needs to be ORed with the actual number of channels
238 kAudioChannelLayoutTag_Unknown
= 0xFFFF0000 // needs to be ORed with the actual number of channels