-
Notifications
You must be signed in to change notification settings - Fork 1
/
IOAudioDefines.h
461 lines (356 loc) · 17.3 KB
/
IOAudioDefines.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
/*
* Copyright (c) 1998-2012 Apple Computer, Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* The contents of this file constitute Original Code as defined in and
* are subject to the Apple Public Source License Version 1.1 (the
* "License"). You may not use this file except in compliance with the
* License. Please obtain a copy of the License at
* http://www.apple.com/publicsource and read it before using this file.
*
* This Original Code and all software distributed under the License are
* distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
* License for the specific language governing rights and limitations
* under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
#ifndef _IOAUDIODEFINES_H
#define _IOAUDIODEFINES_H
#define kIOAudioDeviceClassName "IOAudioDevice"
#define kIOAudioEngineClassName "IOAudioEngine"
#define kIOAudioStreamClassName "IOAudioStream"
#define kIOAudioPortClassName "IOAudioPort"
#define kIOAudioControlClassName "IOAudioControl"
/*!
* @defined kIOAudioSampleRateKey
* @abstract The key in the IORegistry for the IOAudioEngine sample rate attribute
* @discussion This value is represented as an integer in samples per second.
*/
#define kIOAudioSampleRateKey "IOAudioSampleRate"
#define kIOAudioSampleRateWholeNumberKey "IOAudioSampleRateWholeNumber"
#define kIOAudioSampleRateFractionKey "IOAudioSampleRateFraction"
/******
*
* IOAudioDevice defines
*
*****/
/*!
* @defined kIOAudioDeviceNameKey
* @abstract The key in the IORegistry for the IOAudioDevice name attribute.
*/
#define kIOAudioDeviceNameKey "IOAudioDeviceName"
#define kIOAudioDeviceShortNameKey "IOAudioDeviceShortName"
/*!
* @defined kIOAudioDeviceManufacturerNameKey
* @abstract The key in the IORegistry for the IOAudioDevice manufacturer name attribute.
*/
#define kIOAudioDeviceManufacturerNameKey "IOAudioDeviceManufacturerName"
#define kIOAudioDeviceLocalizedBundleKey "IOAudioDeviceLocalizedBundle"
#define kIOAudioDeviceTransportTypeKey "IOAudioDeviceTransportType"
#define kIOAudioDeviceConfigurationAppKey "IOAudioDeviceConfigurationApplication"
#define kIOAudioDeviceCanBeDefaults "IOAudioDeviceCanBeDefaults"
#define kIOAudioDeviceModelIDKey "IOAudioDeviceModelID"
/*!
* @defined kIOAudioDeviceIconName
* @abstract The key in the IORegistry for the IOAudioDevice icon name attribute.
*/
#define kIOAudioDeviceIconNameKey "IOAudioDeviceIconName"
#define kIOAudioDeviceIconTypeKey "IOAudioDeviceIconType"
#define kIOAudioDeviceIconSubDirKey "IOAudioDeviceIconSubDir"
/*****
*
* IOAudioEngine defines
*
*****/
/*!
* @defined kIOAudioEngineStateKey
* @abstract The key in the IORegistry for the IOAudioEngine state atrribute
* @discussion The value for this key may be one of: "Running", "Stopped" or "Paused". Currently the "Paused"
* state is unimplemented.
*/
#define kIOAudioEngineStateKey "IOAudioEngineState"
/*!
* @defined kIOAudioEngineOutputSampleLatencyKey
* @abstract The key in the IORegistry for the IOAudioEngine output sample latency key
* @discussion
*/
#define kIOAudioEngineOutputSampleLatencyKey "IOAudioEngineOutputSampleLatency"
/*!
* @defined kIOAudioStreamSampleLatencyKey
* @abstract The key in the IORegistry for the IOAudioStream output sample latency key
* @discussion Tells the HAL how much latency is on a particular stream. If two streams
* on the same engine have different latencies (e.g. one is analog, one is digital), then
* set this property on both streams to inform the HAL of the latency differences. Alternately,
* you can set the engine latency, and just include the latency additional to that for the particular
* stream. The HAL will add the engine and stream latency numbers together to get the total latency.
*/
#define kIOAudioStreamSampleLatencyKey "IOAudioStreamSampleLatency"
#define kIOAudioEngineInputSampleLatencyKey "IOAudioEngineInputSampleLatency"
#define kIOAudioEngineSampleOffsetKey "IOAudioEngineSampleOffset"
#define kIOAudioEngineInputSampleOffsetKey "IOAudioEngineInputSampleOffset"
#define kIOAudioEngineNumSampleFramesPerBufferKey "IOAudioEngineNumSampleFramesPerBuffer"
#define kIOAudioEngineCoreAudioPlugInKey "IOAudioEngineCoreAudioPlugIn"
#define kIOAudioEngineNumActiveUserClientsKey "IOAudioEngineNumActiveUserClients"
#define kIOAudioEngineUserClientActiveKey "IOAudioEngineUserClientActive"
#define kIOAudioEngineGlobalUniqueIDKey "IOAudioEngineGlobalUniqueID"
#define kIOAudioEngineDescriptionKey "IOAudioEngineDescription"
#define kIOAudioEngineClockIsStableKey "IOAudioEngineClockIsStable"
#define kIOAudioEngineClockDomainKey "IOAudioEngineClockDomain"
#define kIOAudioEngineIsHiddenKey "IOAudioEngineIsHidden"
/*!
* @defined kIOAudioEngineFullChannelNamesKey
* @abstract The key in the IORegistry for the IOAudioEngine's dictionary of fully constructed names for each channel keyed by the device channel
* @discussion
*/
#define kIOAudioEngineFullChannelNamesKey "IOAudioEngineChannelNames"
/*!
* @defined kIOAudioEngineFullChannelNamesKey
* @abstract The key in the IORegistry for the IOAudioEngine's dictionary of category names for each channel keyed by the device channel
* @discussion
*/
#define kIOAudioEngineFullChannelCategoryNamesKey "IOAudioEngineChannelCategoryNames"
/*!
* @defined kIOAudioEngineFullChannelNamesKey
* @abstract The key in the IORegistry for the IOAudioEngine's dictionary of number names for each channel keyed by the device channel
* @discussion
*/
#define kIOAudioEngineFullChannelNumberNamesKey "IOAudioEngineChannelNumberNames"
#define kIOAudioEngineFullChannelNameKeyInputFormat "InputChannel%u"
#define kIOAudioEngineFullChannelNameKeyOutputFormat "OutputChannel%u"
#define kIOAudioEngineFlavorKey "IOAudioEngineFlavor"
#define kIOAudioEngineAlwaysLoadCoreAudioPlugInKey "IOAudioEngineAlwaysLoadCoreAudioPlugIn"
/*!
* @defined kIOAudioEngineInputChannelLayoutKey
* @abstract The key in the IORegistry for the IOAudioEngine's dictionary describes an array of OSNumber data that describe the spatial position of each channel. See IOAudioTypes.h.
* @discussion
*/
#define kIOAudioEngineInputChannelLayoutKey "IOAudioEngineInputChannelLayout"
/*!
* @defined kIOAudioEngineOutputChannelLayoutKey
* @abstract The key in the IORegistry for the IOAudioEngine's dictionary describes an array of OSNumber data that describe the spatial position of each channel. See IOAudioTypes.h.
* @discussion
*/
#define kIOAudioEngineOutputChannelLayoutKey "IOAudioEngineOutputChannelLayout"
/*****
*
* IOAudioStream defines
*
*****/
#define kIOAudioStreamIDKey "IOAudioStreamID"
#define kIOAudioStreamDescriptionKey "IOAudioStreamDescription"
#define kIOAudioStreamNumClientsKey "IOAudioStreamNumClients"
/*!
* @defined kIOAudioStreamDirectionKey
* @abstract The key in the IORegistry for the IOAudioStream direction attribute.
* @discussion The value for this key may be either "Output" or "Input".
*/
#define kIOAudioStreamDirectionKey "IOAudioStreamDirection"
#define kIOAudioStreamStartingChannelIDKey "IOAudioStreamStartingChannelID"
#define kIOAudioStreamStartingChannelNumberKey "IOAudioStreamStartingChannelNumber"
#define kIOAudioStreamAvailableKey "IOAudioStreamAvailable"
#define kIOAudioStreamFormatKey "IOAudioStreamFormat"
#define kIOAudioStreamAvailableFormatsKey "IOAudioStreamAvailableFormats"
#define kIOAudioStreamNumChannelsKey "IOAudioStreamNumChannels"
#define kIOAudioStreamSampleFormatKey "IOAudioStreamSampleFormat"
#define kIOAudioStreamNumericRepresentationKey "IOAudioStreamNumericRepresentation"
#define kIOAudioStreamFormatFlagsKey "IOAudioStreamFormatFlags"
#define kIOAudioStreamFramesPerPacketKey "IOAudioStreamFramesPerPacket"
#define kIOAudioStreamBytesPerPacketKey "IOAudioStreamBytesPerPacket"
#define kIOAudioStreamBitDepthKey "IOAudioStreamBitDepth"
#define kIOAudioStreamBitWidthKey "IOAudioStreamBitWidth"
#define kIOAudioStreamAlignmentKey "IOAudioStreamAlignment"
#define kIOAudioStreamByteOrderKey "IOAudioStreamByteOrder"
#define kIOAudioStreamIsMixableKey "IOAudioStreamIsMixable"
#define kIOAudioStreamMinimumSampleRateKey "IOAudioStreamMinimumSampleRate"
#define kIOAudioStreamMaximumSampleRateKey "IOAudioStreamMaximumSampleRate"
#define kIOAudioStreamDriverTagKey "IOAudioStreamDriverTag"
#define kIOAudioStreamTerminalTypeKey "IOAudioStreamTerminalType"
/*****
*
* IOAudioPort defines
*
*****/
/*!
* @defined kIOAudioPortTypeKey
* @abstract The key in the IORegistry for the IOAudioPort type attribute.
* @discussion This is a driver-defined text attribute that may contain any type.
* Common types are defined as: "Speaker", "Headphones", "Microphone", "CD", "Line", "Digital", "Mixer", "PassThru".
*/
#define kIOAudioPortTypeKey "IOAudioPortType"
/*!
* @defined kIOAudioPortSubTypeKey
* @abstract The key in the IORegistry for the IOAudioPort subtype attribute.
* @discussion The IOAudioPort subtype is a driver-defined text attribute designed to complement the type
* attribute.
*/
#define kIOAudioPortSubTypeKey "IOAudioPortSubType"
/*!
* @defined kIOAudioPortNameKey
* @abstract The key in the IORegistry for the IOAudioPort name attribute.
*/
#define kIOAudioPortNameKey "IOAudioPortName"
/*****
*
* IOAudioControl defines
*
*****/
/*!
* @defined kIOAudioControlTypeKey
* @abstract The key in the IORegistry for the IOAudioCntrol type attribute.
* @discussion The value of this text attribute may be defined by the driver, however system-defined
* types recognized by the upper-level software are "Level", "Mute", "Selector".
*/
#define kIOAudioControlTypeKey "IOAudioControlType"
#define kIOAudioControlSubTypeKey "IOAudioControlSubType"
#define kIOAudioControlUsageKey "IOAudioControlUsage"
#define kIOAudioControlIDKey "IOAudioControlID"
/*!
* @defined kIOAudioControlChannelIDKey
* @abstract The key in the IORegistry for the IOAudioControl channel ID attribute
* @discussion The value for this key is an integer which may be driver defined. Default values for
* common channel types are provided in the following defines.
*/
#define kIOAudioControlChannelIDKey "IOAudioControlChannelID"
#define kIOAudioControlChannelNumberKey "IOAudioControlChannelNumber"
#define kIOAudioControlCoreAudioPropertyIDKey "IOAudioControlCoreAudioPropertyID"
/*!
* @defined kIOAudioControlChannelNameKey
* @abstract The key in the IORegistry for the IOAudioControl name attribute.
* @discussion This name should be a human-readable name for the channel(s) represented by the port.
* *** NOTE *** We really need to make all of the human-readable attributes that have potential to
* be used in a GUI localizable. There will need to be localized strings in the kext bundle matching
* the text.
*/
#define kIOAudioControlChannelNameKey "IOAudioControlChannelName"
/*!
* @defined kIOAudioControlChannelNameAll
* @abstract The value for the kIOAudioControlChannelNameKey in the IORegistry representing
* the channel name for all channels.
*/
#define kIOAudioControlChannelNameAll "All Channels"
/*!
* @defined kIOAudioControlChannelNameLeft
* @abstract The value for the kIOAudioControlChannelNameKey in the IORegistry representing
* the channel name for the left channel.
*/
#define kIOAudioControlChannelNameLeft "Left"
/*!
* @defined kIOAudioControlChannelNameRight
* @abstract The value for the kIOAudioControlChannelNameKey in the IORegistry representing
* the channel name for the right channel.
*/
#define kIOAudioControlChannelNameRight "Right"
/*!
* @defined kIOAudioControlChannelNameCenter
* @abstract The value for the kIOAudioControlChannelNameKey in the IORegistry representing
* the channel name for the center channel.
*/
#define kIOAudioControlChannelNameCenter "Center"
/*!
* @defined kIOAudioControlChannelNameLeftRear
* @abstract The value for the kIOAudioControlChannelNameKey in the IORegistry representing
* the channel name for the left rear channel.
*/
#define kIOAudioControlChannelNameLeftRear "LeftRear"
/*!
* @defined kIOAudioControlChannelNameRightRear
* @abstract The value for the kIOAudioControlChannelNameKey in the IORegistry representing
* the channel name for the right rear channel.
*/
#define kIOAudioControlChannelNameRightRear "RightRear"
/*!
* @defined kIOAudioControlChannelNameSub
* @abstract The value for the kIOAudioControlChannelNameKey in the IORegistry representing
* the channel name for the sub/LFE channel.
*/
#define kIOAudioControlChannelNameSub "Sub"
/*!
* @defined kIOAudioControlChannelNameFrontLeftCenter
* @abstract The value for the kIOAudioControlChannelNameKey in the IORegistry representing
* the channel name for the FrontLeftCenter channel.
*/
#define kIOAudioControlChannelNameFrontLeftCenter "FrontLeftCenter"
/*!
* @defined kIOAudioControlChannelNameFrontRightCenter
* @abstract The value for the kIOAudioControlChannelNameKey in the IORegistry representing
* the channel name for the FrontRightCenter channel.
*/
#define kIOAudioControlChannelNameFrontRightCenter "FrontRightCenter"
/*!
* @defined kIOAudioControlChannelNameRearCenter
* @abstract The value for the kIOAudioControlChannelNameKey in the IORegistry representing
* the channel name for the RearCenter channel.
*/
#define kIOAudioControlChannelNameRearCenter "RearCenter"
/*!
* @defined kIOAudioControlChannelNameSurroundLeft
* @abstract The value for the kIOAudioControlChannelNameKey in the IORegistry representing
* the channel name for the SurroundLeft channel.
*/
#define kIOAudioControlChannelNameSurroundLeft "SurroundLeft"
/*!
* @defined kIOAudioControlChannelNameSurroundRight
* @abstract The value for the kIOAudioControlChannelNameKey in the IORegistry representing
* the channel name for the SurroundRight channel.
*/
#define kIOAudioControlChannelNameSurroundRight "SurroundRight"
/*!
* @defined kIOAudioControlValueKey
* @abstract The key in the IORegistry for the IOAudioControl value attribute.
* @discussion The value returned by this key is a 32-bit integer representing the current value of the IOAudioControl.
*/
#define kIOAudioControlValueKey "IOAudioControlValue"
/*!
* @defined kIOAudioControlValueIsReadOnlyKey
* @abstract The key in the IORegistry for the IOAudioControl value-is-read-only attribute.
* @discussion The value returned by this key is a 32-bit integer but the value doesn't have any direct meaning.
* Instead, the presence of this key indicates that the value for the control is read-only
*/
#define kIOAudioControlValueIsReadOnlyKey "IOAudioControlValueIsReadOnly"
/*!
* @defined kIOAudioLevelControlMinValueKey
* @abstract The key in the IORegistry for the IOAudioControl minimum value attribute.
* @discussion The value returned by this key is a 32-bit integer representing the minimum value for the IOAudioControl.
* This is currently only valid for Level controls or other driver-defined controls that have a minimum and maximum
* value.
*/
#define kIOAudioLevelControlMinValueKey "IOAudioLevelControlMinValue"
/*!
* @defined kIOAudioLevelControlMaxValueKey
* @abstract The key in the IORegistry for the IOAudioControl maximum value attribute.
* @discussion The value returned by this key is a 32-bit integer representing the maximum value for the IOAudioControl.
* This is currently only valid for Level controls or other driver-defined controls that have a minimum and maximum
* value.
*/
#define kIOAudioLevelControlMaxValueKey "IOAudioLevelControlMaxValue"
/*!
* @defined kIOAudioLevelControlMinDBKey
* @abstract The key in the IORgistry for the IOAudioControl minimum db value attribute.
* @discussion The value returned by this key is a fixed point value in 16.16 format represented as a 32-bit
* integer. It represents the minimum value in db for the IOAudioControl. This value matches the minimum
* value attribute. This is currently valid for Level controls or other driver-defined controls that have a
* minimum and maximum db value.
*/
#define kIOAudioLevelControlMinDBKey "IOAudioLevelControlMinDB"
/*!
* @defined kIOAudioLevelControlMaxDBKey
* @abstract The key in the IORgistry for the IOAudioControl maximum db value attribute.
* @discussion The value returned by this key is a fixed point value in 16.16 format represented as a 32-bit
* integer. It represents the maximum value in db for the IOAudioControl. This value matches the maximum
* value attribute. This is currently valid for Level controls or other driver-defined controls that have a
* minimum and maximum db value.
*/
#define kIOAudioLevelControlMaxDBKey "IOAudioLevelControlMaxDB"
#define kIOAudioLevelControlRangesKey "IOAudioLevelControlRanges"
#define kIOAudioLevelControlUseLinearScale "IOAudioLevelControlUseLinearScale"
#define kIOAudioSelectorControlAvailableSelectionsKey "IOAudioSelectorControlAvailableSelections"
#define kIOAudioSelectorControlSelectionValueKey "IOAudioSelectorControlSelectionValue"
#define kIOAudioSelectorControlSelectionDescriptionKey "IOAudioSelectorControlSelectionDescriptionKey"
#define kIOAudioSelectorControlTransportValueKey "IOAudioSelectorControlTransportValue" // <rdar://8202424>
#define kIOAudioSelectorControlClockSourceKey "IOAudioSelectorControlClockSourceKey"
#endif /* _IOAUDIODEFINES_H */