Chameleon

Chameleon Svn Source Tree

Root/branches/mozodojo/i386/include/IOKit/audio/IOAudioTypes.h

1/*
2 * Copyright (c) 1998-2010 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * The contents of this file constitute Original Code as defined in and
7 * are subject to the Apple Public Source License Version 1.1 (the
8 * "License"). You may not use this file except in compliance with the
9 * License. Please obtain a copy of the License at
10 * http://www.apple.com/publicsource and read it before using this file.
11 *
12 * This Original Code and all software distributed under the License are
13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17 * License for the specific language governing rights and limitations
18 * under the License.
19 *
20 * @APPLE_LICENSE_HEADER_END@
21 */
22
23#ifndef _IOKIT_IOAUDIOTYPES_H
24#define _IOKIT_IOAUDIOTYPES_H
25
26#include <libkern/OSTypes.h>
27#include <mach/message.h>
28#include <device/device_types.h>
29
30
31/*!
32 * @enum IOAudioEngineMemory
33 * @abstract Used to identify the type of memory requested by a client process to be mapped into its process space
34 * @discussion This is the parameter to the type field of IOMapMemory when called on an IOAudioEngine. This is
35 * only intended for use by the Audio Device API library.
36 * @constant kIOAudioSampleBuffer This requests the IOAudioEngine's sample buffer
37 * @constant kIOAudioStatusBuffer This requests the IOAudioEngine's status buffer. It's type is IOAudioEngineStatus.
38 * @constant kIOAudioMixBuffer This requests the IOAudioEngine's mix buffer
39*/
40typedef enum _IOAudioEngineMemory {
41 kIOAudioStatusBuffer = 0,
42 kIOAudioSampleBuffer= 1,
43 kIOAudioMixBuffer= 2,
44kIOAudioBytesInInputBuffer= 3,
45kIOAudioBytesInOutputBuffer= 4
46} IOAudioEngineMemory;
47
48/*!
49 * @enum IOAudioEngineCalls
50 * @abstract The set of constants passed to IOAudioEngineUserClient::getExternalMethodForIndex() when making calls
51 * from the IOAudioFamily user client code.
52 */
53typedef enum _IOAudioEngineCalls {
54 kIOAudioEngineCallRegisterClientBuffer= 0,
55 kIOAudioEngineCallUnregisterClientBuffer= 1,
56 kIOAudioEngineCallGetConnectionID= 2,
57 kIOAudioEngineCallStart= 3,
58 kIOAudioEngineCallStop= 4,
59kIOAudioEngineCallGetNearestStartTime= 5
60} IOAudioEngineCalls;
61
62/*! @defined kIOAudioEngineNumCalls The number of elements in the IOAudioEngineCalls enum. */
63#define kIOAudioEngineNumCalls6
64
65typedef enum _IOAudioEngineTraps {
66 kIOAudioEngineTrapPerformClientIO= 0
67} IOAudioEngineTraps;
68
69typedef enum _IOAudioEngineNotifications {
70 kIOAudioEngineAllNotifications = 0,
71 kIOAudioEngineStreamFormatChangeNotification= 1,
72 kIOAudioEngineChangeNotification = 2,
73 kIOAudioEngineStartedNotification = 3,
74 kIOAudioEngineStoppedNotification = 4,
75 kIOAudioEnginePausedNotification= 5,
76 kIOAudioEngineResumedNotification= 6
77} IOAudioEngineNotifications;
78
79/*!
80 * @enum IOAudioEngineState
81 * @abstract Represents the state of an IOAudioEngine
82 * @constant kIOAudioEngineRunning The IOAudioEngine is currently running - it is transferring data to or
83 * from the device.
84 * @constant kIOAudioEngineStopped The IOAudioEngine is currently stopped - no activity is occurring.
85 */
86
87typedef enum _IOAudioEngineState {
88 kIOAudioEngineStopped= 0,
89 kIOAudioEngineRunning= 1,
90 kIOAudioEnginePaused= 2,
91 kIOAudioEngineResumed= 3
92} IOAudioEngineState;
93
94
95/*!
96 * @typedef IOAudioEngineStatus
97 * @abstract Shared-memory structure giving audio engine status
98 * @discussion
99 * @field fVersion Indicates version of this structure
100 * @field fCurrentLoopCount Number of times around the ring buffer since the audio engine started
101 * @field fLastLoopTime Timestamp of the last time the ring buffer wrapped
102 * @field fEraseHeadSampleFrame Location of the erase head in sample frames - erased up to but not
103 * including the given sample frame
104 */
105
106typedef struct _IOAudioEngineStatus {
107 UInt32fVersion;
108 volatile UInt32fCurrentLoopCount;
109 volatile AbsoluteTime fLastLoopTime;
110 volatile UInt32fEraseHeadSampleFrame;
111} IOAudioEngineStatus;
112
113#define kIOAudioEngineCurrentStatusStructVersion2
114
115typedef struct _IOAudioStreamFormat {
116 UInt32fNumChannels;
117 UInt32fSampleFormat;
118 UInt32fNumericRepresentation;
119 UInt8fBitDepth;
120 UInt8fBitWidth;
121 UInt8fAlignment;
122 UInt8fByteOrder;
123 UInt8fIsMixable;
124 UInt32fDriverTag;
125} IOAudioStreamFormat;
126
127#define kFormatExtensionInvalidVersion0
128#define kFormatExtensionCurrentVersion1
129
130typedef struct _IOAudioStreamFormatExtension {
131 UInt32fVersion;
132 UInt32fFlags;
133 UInt32fFramesPerPacket;
134 UInt32fBytesPerPacket;
135} IOAudioStreamFormatExtension;
136
137typedef struct _IOAudioBufferDataDescriptor {
138UInt32fActualDataByteSize;
139UInt32fActualNumSampleFrames;
140UInt32fTotalDataByteSize;
141UInt32fNominalDataByteSize;
142UInt8fData[1];
143} IOAudioBufferDataDescriptor;
144
145#define kStreamDataDescriptorInvalidVersion0
146#define kStreamDataDescriptorCurrentVersion1
147
148typedef struct _IOAudioStreamDataDescriptor {
149 UInt32fVersion;
150 UInt32fNumberOfStreams;
151 UInt32fStreamLength[1];// Array with fNumberOfStreams number of entries
152} IOAudioStreamDataDescriptor;
153
154typedef struct _IOAudioSampleIntervalDescriptor {
155UInt32sampleIntervalHi;
156UInt32sampleIntervalLo;
157} IOAudioSampleIntervalDescriptor;
158
159/*!
160 @struct SMPTETime
161 @abstract A structure for holding a SMPTE time.
162 @field fSubframes
163 The number of subframes in the full message.
164 @field fSubframeDivisor
165 The number of subframes per frame (typically 80).
166 @field fCounter
167 The total number of messages received.
168 @field fType
169 The kind of SMPTE time using the SMPTE time type constants.
170 @field fFlags
171 A set of flags that indicate the SMPTE state.
172 @field fHours
173 The number of hourse in the full message.
174 @field fMinutes
175 The number of minutes in the full message.
176 @field fSeconds
177 The number of seconds in the full message.
178 @field fFrames
179 The number of frames in the full message.
180*/
181typedef struct _IOAudioSMPTETime
182{
183 SInt16 fSubframes;
184 SInt16 fSubframeDivisor;
185 UInt32 fCounter;
186 UInt32 fType;
187 UInt32 fFlags;
188 SInt16 fHours;
189 SInt16 fMinutes;
190 SInt16 fSeconds;
191 SInt16 fFrames;
192
193} IOAudioSMPTETime;
194
195//constants describing SMPTE types (taken from the MTC spec)
196enum
197{
198kIOAudioSMPTETimeType24= 0,
199kIOAudioSMPTETimeType25= 1,
200kIOAudioSMPTETimeType30Drop= 2,
201kIOAudioSMPTETimeType30= 3,
202kIOAudioSMPTETimeType2997= 4,
203kIOAudioSMPTETimeType2997Drop= 5
204};
205
206//flags describing a SMPTE time stamp
207enum
208{
209kIOAudioSMPTETimeValid= (1L << 0),//the full time is valid
210kIOAudioSMPTETimeRunning= (1L << 1)//time is running
211};
212
213//A struct for encapsulating the parts of a time stamp. The flags
214//say which fields are valid.
215typedef struct _IOAudioTimeStamp
216{
217UInt64fSampleTime;//the absolute sample time, was a Float64
218UInt64fHostTime;//the host's root timebase's time
219UInt64fRateScalar;//the system rate scalar, was a Float64
220UInt64fWordClockTime;//the word clock time
221IOAudioSMPTETimefSMPTETime;//the SMPTE time
222UInt32fFlags;//the flags indicate which fields are valid
223UInt32fReserved;//reserved, pads the structure out to force 8 byte alignment
224} IOAudioTimeStamp;
225
226//flags for the AudioTimeStamp sturcture
227enum
228{
229kIOAudioTimeStampSampleTimeValid= (1L << 0),
230kIOAudioTimeStampHostTimeValid= (1L << 1),
231kIOAudioTimeStampRateScalarValid= (1L << 2),
232kIOAudioTimeStampWordClockTimeValid= (1L << 3),
233kIOAudioTimeStampSMPTETimeValid= (1L << 4)
234};
235
236//Some commonly used combinations of timestamp flags
237enum
238{
239kIOAudioTimeStampSampleHostTimeValid= (kIOAudioTimeStampSampleTimeValid | kIOAudioTimeStampHostTimeValid)
240};
241
242/*!
243* @enum IOAudioStreamDirection
244 * @abstract Represents the direction of an IOAudioStream
245 * @constant kIOAudioStreamDirectionOutput Output buffer
246 * @constant kIOAudioStreamDirectionInput Input buffer
247 */
248
249typedef enum _IOAudioStreamDirection {
250 kIOAudioStreamDirectionOutput= 0,
251 kIOAudioStreamDirectionInput= 1
252} IOAudioStreamDirection;
253
254enum {
255kIOAudioDeviceCanBeDefaultNothing= 0,
256kIOAudioDeviceCanBeDefaultInput= (1L << 0),
257kIOAudioDeviceCanBeDefaultOutput= (1L << 1),
258kIOAudioDeviceCanBeSystemOutput= (1L << 2)
259};
260
261/*!
262 * @defined kIOAudioEngineDefaultMixBufferSampleSize
263 */
264
265#define kIOAudioEngineDefaultMixBufferSampleSizesizeof(float)
266
267/* The following are for use only by the IOKit.framework audio family code */
268
269/*!
270 * @enum IOAudioControlCalls
271 * @abstract The set of constants passed to IOAudioControlUserClient::getExternalMethodForIndex() when making calls
272 * from the IOAudioFamily user client code.
273 * @constant kIOAudioControlCallSetValue Used to set the value of an IOAudioControl.
274 * @constant kIOAudioControlCallGetValue Used to get the value of an IOAudioControl.
275 */
276typedef enum _IOAudioControlCalls {
277 kIOAudioControlCallSetValue = 0,
278 kIOAudioControlCallGetValue = 1
279} IOAudioControlCalls;
280
281/*! @defined kIOAudioControlNumCalls The number of elements in the IOAudioControlCalls enum. */
282#define kIOAudioControlNumCalls 2
283
284/*!
285 * @enum IOAudioControlNotifications
286 * @abstract The set of constants passed in the type field of IOAudioControlUserClient::registerNotificaitonPort().
287 * @constant kIOAudioControlValueChangeNotification Used to request value change notifications.
288 * @constant kIOAudioControlRangeChangeNotification Used to request range change notifications.
289 */
290typedef enum _IOAudioControlNotifications {
291 kIOAudioControlValueChangeNotification = 0,
292kIOAudioControlRangeChangeNotification = 1
293} IOAudioControlNotifications;
294
295/*!
296 * @struct IOAudioNotificationMessage
297 * @abstract Used in the mach message for IOAudio notifications.
298 * @field messageHeader Standard mach message header
299 * @field ref The param passed to registerNotificationPort() in refCon.
300 */
301typedef struct _IOAudioNotificationMessage {
302 mach_msg_header_tmessageHeader;
303 UInt32type;
304 UInt32ref;
305 void *sender;
306} IOAudioNotificationMessage;
307
308typedef struct _IOAudioSampleRate {
309 UInt32whole;
310 UInt32fraction;
311} IOAudioSampleRate;
312
313#define kNoIdleAudioPowerDown0xffffffffffffffffULL
314
315enum {
316 kIOAudioPortTypeOutput= 'outp',
317 kIOAudioPortTypeInput= 'inpt',
318 kIOAudioPortTypeMixer= 'mixr',
319 kIOAudioPortTypePassThru= 'pass',
320 kIOAudioPortTypeProcessing= 'proc'
321};
322
323enum {
324 kIOAudioOutputPortSubTypeInternalSpeaker= 'ispk',
325 kIOAudioOutputPortSubTypeExternalSpeaker= 'espk',
326 kIOAudioOutputPortSubTypeHeadphones= 'hdpn',
327 kIOAudioOutputPortSubTypeLine= 'line',
328 kIOAudioOutputPortSubTypeSPDIF= 'spdf',
329
330 kIOAudioInputPortSubTypeInternalMicrophone= 'imic',
331 kIOAudioInputPortSubTypeExternalMicrophone= 'emic',
332 kIOAudioInputPortSubTypeCD= 'cd ',
333 kIOAudioInputPortSubTypeLine= 'line',
334 kIOAudioInputPortSubTypeSPDIF= 'spdf'
335};
336
337enum {
338 kIOAudioControlTypeLevel= 'levl',
339 kIOAudioControlTypeToggle= 'togl',
340kIOAudioControlTypeJack= 'jack',
341 kIOAudioControlTypeSelector= 'slct'
342};
343
344enum {
345 kIOAudioLevelControlSubTypeVolume= 'vlme',
346kIOAudioLevelControlSubTypeLFEVolume= 'subv',
347kIOAudioLevelControlSubTypePRAMVolume= 'pram',
348 kIOAudioToggleControlSubTypeMute= 'mute',
349 kIOAudioToggleControlSubTypeSolo= 'solo',
350kIOAudioToggleControlSubTypeLFEMute= 'subm',
351kIOAudioToggleControlSubTypeiSubAttach= 'atch',
352 kIOAudioSelectorControlSubTypeOutput= 'outp',
353 kIOAudioSelectorControlSubTypeInput= 'inpt',
354 kIOAudioSelectorControlSubTypeClockSource= 'clck',
355 kIOAudioSelectorControlSubTypeDestination= 'dest',
356kIOAudioSelectorControlSubTypeChannelNominalLineLevel= 'nlev',
357kIOAudioSelectorControlSubTypeChannelLevelPlus4dBu= '4dbu',
358kIOAudioSelectorControlSubTypeChannelLevelMinus10dBV= '10db',
359kIOAudioSelectorControlSubTypeChannelLevelMinus20dBV= '20db',
360kIOAudioSelectorControlSubTypeChannelLevelMicLevel= 'micl',
361kIOAudioSelectorControlSubTypeChannelLevelInstrumentLevel= 'istl'
362};
363
364enum {
365 kIOAudioControlUsageOutput= 'outp',
366 kIOAudioControlUsageInput= 'inpt',
367 kIOAudioControlUsagePassThru= 'pass',
368 kIOAudioControlUsageCoreAudioProperty= 'prop'
369};
370
371enum {
372 kIOAudioControlChannelNumberInactive= -1,
373 kIOAudioControlChannelIDAll= 0,
374 kIOAudioControlChannelIDDefaultLeft= 1,
375 kIOAudioControlChannelIDDefaultRight= 2,
376 kIOAudioControlChannelIDDefaultCenter= 3,
377 kIOAudioControlChannelIDDefaultLeftRear= 4,
378 kIOAudioControlChannelIDDefaultRightRear= 5,
379 kIOAudioControlChannelIDDefaultSub= 6,
380 kIOAudioControlChannelIDDefaultFrontLeftCenter= 7,
381 kIOAudioControlChannelIDDefaultFrontRightCenter= 8,
382 kIOAudioControlChannelIDDefaultRearCenter= 9,
383 kIOAudioControlChannelIDDefaultSurroundLeft= 10,
384 kIOAudioControlChannelIDDefaultSurroundRight= 11
385};
386
387enum {
388 kIOAudioSelectorControlSelectionValueNone= 'none',
389
390 // Output-specific selection IDs
391 kIOAudioSelectorControlSelectionValueInternalSpeaker= 'ispk',
392 kIOAudioSelectorControlSelectionValueExternalSpeaker= 'espk',
393 kIOAudioSelectorControlSelectionValueHeadphones= 'hdpn',
394
395 // Input-specific selection IDs
396 kIOAudioSelectorControlSelectionValueInternalMicrophone= 'imic',
397 kIOAudioSelectorControlSelectionValueExternalMicrophone= 'emic',
398 kIOAudioSelectorControlSelectionValueCD= 'cd ',
399
400 // Common selection IDs
401 kIOAudioSelectorControlSelectionValueLine= 'line',
402 kIOAudioSelectorControlSelectionValueSPDIF= 'spdf'
403};
404
405enum {
406 kIOAudioStreamSampleFormatLinearPCM= 'lpcm',
407 kIOAudioStreamSampleFormatIEEEFloat= 'ieee',
408 kIOAudioStreamSampleFormatALaw= 'alaw',
409 kIOAudioStreamSampleFormatMuLaw= 'ulaw',
410 kIOAudioStreamSampleFormatMPEG= 'mpeg',
411 kIOAudioStreamSampleFormatAC3= 'ac-3',
412 kIOAudioStreamSampleFormat1937AC3= 'cac3',
413 kIOAudioStreamSampleFormat1937MPEG1= 'mpg1',
414 kIOAudioStreamSampleFormat1937MPEG2= 'mpg2',
415kIOAudioStreamSampleFormatTimeCode= 'time'//a stream of IOAudioTimeStamp structures that capture any incoming time code information
416};
417
418enum {
419 kIOAudioStreamNumericRepresentationSignedInt= 'sint',
420 kIOAudioStreamNumericRepresentationUnsignedInt= 'uint',
421kIOAudioStreamNumericRepresentationIEEE754Float = 'flot'
422};
423
424enum {
425kIOAudioClockSelectorTypeInternal= 'int ',
426kIOAudioClockSelectorTypeExternal= 'ext ',
427kIOAudioClockSelectorTypeAESEBU= 'asbu',
428kIOAudioClockSelectorTypeTOSLink= 'tosl',
429kIOAudioClockSelectorTypeSPDIF= 'spdf',
430kIOAudioClockSelectorTypeADATOptical= 'adto',
431kIOAudioClockSelectorTypeADAT9Pin= 'adt9',
432kIOAudioClockSelectorTypeSMPTE= 'smpt',
433kIOAudioClockSelectorTypeVideo= 'vdeo',
434kIOAudioClockSelectorTypeControl= 'cnrl',
435kIOAudioClockSelectorTypeOther= 'othr',
436};
437
438enum {
439 kIOAudioStreamAlignmentLowByte= 0,
440 kIOAudioStreamAlignmentHighByte= 1
441};
442
443enum {
444 kIOAudioStreamByteOrderBigEndian= 0,
445 kIOAudioStreamByteOrderLittleEndian= 1
446};
447
448enum {
449 kIOAudioLevelControlNegativeInfinity= 0xffffffff
450};
451
452enum {
453 kIOAudioNewClockDomain= 0xffffffff
454};
455
456// Device connection types
457#ifndef __OPEN_SOURCE__
458//<rdar://7130813>Added kIOAudioDeviceTransportTypeDisplayPort
459#endif
460enum {
461kIOAudioDeviceTransportTypeBuiltIn= 'bltn',
462kIOAudioDeviceTransportTypePCI= 'pci ',
463kIOAudioDeviceTransportTypeUSB= 'usb ',
464kIOAudioDeviceTransportTypeFireWire= '1394',
465kIOAudioDeviceTransportTypeNetwork= 'ntwk',
466kIOAudioDeviceTransportTypeWireless= 'wrls',
467kIOAudioDeviceTransportTypeOther= 'othr',
468kIOAudioDeviceTransportTypeBluetooth= 'blue',
469kIOAudioDeviceTransportTypeVirtual= 'virt',
470kIOAudioDeviceTransportTypeDisplayPort= 'dprt',
471kIOAudioDeviceTransportTypeHdmi= 'hdmi'
472
473};
474
475// types that go nowhere
476enum {
477OUTPUT_NULL= 0x0100,
478INPUT_NULL= 0x0101
479};
480
481// Input terminal types
482enum {
483INPUT_UNDEFINED= 0x0200,
484INPUT_MICROPHONE= 0x0201,
485INPUT_DESKTOP_MICROPHONE= 0x0202,
486INPUT_PERSONAL_MICROPHONE= 0x0203,
487INPUT_OMNIDIRECTIONAL_MICROPHONE= 0x0204,
488INPUT_MICROPHONE_ARRAY= 0x0205,
489INPUT_PROCESSING_MICROPHONE_ARRAY= 0x0206,
490INPUT_MODEM_AUDIO= 0x207
491};
492
493// Output terminal types
494enum {
495OUTPUT_UNDEFINED= 0x0300,
496OUTPUT_SPEAKER= 0x0301,
497OUTPUT_HEADPHONES= 0x0302,
498OUTPUT_HEAD_MOUNTED_DISPLAY_AUDIO= 0x0303,
499OUTPUT_DESKTOP_SPEAKER= 0x0304,
500OUTPUT_ROOM_SPEAKER= 0x0305,
501OUTPUT_COMMUNICATION_SPEAKER= 0x0306,
502OUTPUT_LOW_FREQUENCY_EFFECTS_SPEAKER= 0x0307
503};
504
505// Bi-directional terminal types
506enum {
507BIDIRECTIONAL_UNDEFINED= 0x0400,
508BIDIRECTIONAL_HANDSET= 0x0401,
509BIDIRECTIONAL_HEADSET= 0x0402,
510BIDIRECTIONAL_SPEAKERPHONE_NO_ECHO_REDX= 0x0403,
511BIDIRECTIONAL_ECHO_SUPPRESSING_SPEAKERPHONE= 0x0404,
512BIDIRECTIONAL_ECHO_CANCELING_SPEAKERPHONE= 0x0405
513};
514
515// Telephony terminal types
516enum {
517TELEPHONY_UNDEFINED= 0x0500,
518TELEPHONY_PHONE_LINE= 0x0501,
519TELEPHONY_TELEPHONE= 0x0502,
520TELEPHONY_DOWN_LINE_PHONE= 0x0503
521};
522
523// External terminal types
524enum {
525EXTERNAL_UNDEFINED= 0x0600,
526EXTERNAL_ANALOG_CONNECTOR= 0x0601,
527EXTERNAL_DIGITAL_AUDIO_INTERFACE= 0x0602,
528EXTERNAL_LINE_CONNECTOR= 0x0603,
529EXTERNAL_LEGACY_AUDIO_CONNECTOR= 0x0604,
530EXTERNAL_SPDIF_INTERFACE= 0x0605,
531EXTERNAL_1394_DA_STREAM= 0x0606,
532EXTERNAL_1394_DV_STREAM_SOUNDTRACK= 0x0607,
533EXTERNAL_ADAT= 0x0608,
534EXTERNAL_TDIF= 0x0609,
535EXTERNAL_MADI= 0x060A
536};
537
538// Embedded terminal types
539enum {
540EMBEDDED_UNDEFINED= 0x0700,
541EMBEDDED_LEVEL_CALIBRATION_NOISE_SOURCE= 0x0701,
542EMBEDDED_EQUALIZATION_NOISE= 0x0702,
543EMBEDDED_CD_PLAYER= 0x0703,
544EMBEDDED_DAT= 0x0704,
545EMBEDDED_DCC= 0x0705,
546EMBEDDED_MINIDISK= 0x0706,
547EMBEDDED_ANALOG_TAPE= 0x0707,
548EMBEDDED_PHONOGRAPH= 0x0708,
549EMBEDDED_VCR_AUDIO= 0x0709,
550EMBEDDED_VIDEO_DISC_AUDIO= 0x070A,
551EMBEDDED_DVD_AUDIO= 0x070B,
552EMBEDDED_TV_TUNER_AUDIO= 0x070C,
553EMBEDDED_SATELLITE_RECEIVER_AUDIO= 0x070D,
554EMBEDDED_CABLE_TUNER_AUDIO= 0x070E,
555EMBEDDED_DSS_AUDIO= 0x070F,
556EMBEDDED_RADIO_RECEIVER= 0x0710,
557EMBEDDED_RADIO_TRANSMITTER= 0x0711,
558EMBEDDED_MULTITRACK_RECORDER= 0x0712,
559EMBEDDED_SYNTHESIZER= 0x0713
560};
561
562// Processing terminal types
563enum {
564PROCESSOR_UNDEFINED= 0x0800,
565PROCESSOR_GENERAL= 0x0801
566};
567
568//Channel spatial position types
569
570#ifndef __OPEN_SOURCE__
571//<rdar://6868206>NOTE: the following are derived from CoreAudioTypes.h
572#endif
573
574#definekIOAudioChannelLabel_Discrete_field_ba16
575enum {
576 kIOAudioChannelLabel_Unknown = 0xFFFFFFFF, // unknown or unspecified other use
577 kIOAudioChannelLabel_Unused = 0, // channel is present, but has no intended use or destination
578 kIOAudioChannelLabel_UseCoordinates = 100, // channel is described by the mCoordinates fields.
579
580 kIOAudioChannelLabel_Left = 1,
581 kIOAudioChannelLabel_Right = 2,
582 kIOAudioChannelLabel_Center = 3,
583 kIOAudioChannelLabel_LFEScreen = 4,
584 kIOAudioChannelLabel_LeftSurround = 5, // WAVE: "Back Left"
585 kIOAudioChannelLabel_RightSurround = 6, // WAVE: "Back Right"
586 kIOAudioChannelLabel_LeftCenter = 7,
587 kIOAudioChannelLabel_RightCenter = 8,
588 kIOAudioChannelLabel_CenterSurround = 9, // WAVE: "Back Center" or plain "Rear Surround"
589 kIOAudioChannelLabel_LeftSurroundDirect = 10, // WAVE: "Side Left"
590 kIOAudioChannelLabel_RightSurroundDirect = 11, // WAVE: "Side Right"
591 kIOAudioChannelLabel_TopCenterSurround = 12,
592 kIOAudioChannelLabel_VerticalHeightLeft = 13, // WAVE: "Top Front Left"
593 kIOAudioChannelLabel_VerticalHeightCenter = 14, // WAVE: "Top Front Center"
594 kIOAudioChannelLabel_VerticalHeightRight = 15, // WAVE: "Top Front Right"
595
596 kIOAudioChannelLabel_TopBackLeft = 16,
597 kIOAudioChannelLabel_TopBackCenter = 17,
598 kIOAudioChannelLabel_TopBackRight = 18,
599
600 kIOAudioChannelLabel_RearSurroundLeft = 33,
601 kIOAudioChannelLabel_RearSurroundRight = 34,
602 kIOAudioChannelLabel_LeftWide = 35,
603 kIOAudioChannelLabel_RightWide = 36,
604 kIOAudioChannelLabel_LFE2 = 37,
605 kIOAudioChannelLabel_LeftTotal = 38, // matrix encoded 4 channels
606 kIOAudioChannelLabel_RightTotal = 39, // matrix encoded 4 channels
607 kIOAudioChannelLabel_HearingImpaired = 40,
608 kIOAudioChannelLabel_Narration = 41,
609 kIOAudioChannelLabel_Mono = 42,
610 kIOAudioChannelLabel_DialogCentricMix = 43,
611
612 kIOAudioChannelLabel_CenterSurroundDirect = 44, // back center, non diffuse
613
614 kIOAudioChannelLabel_Haptic = 45,
615
616 // first order ambisonic channels
617 kIOAudioChannelLabel_Ambisonic_W = 200,
618 kIOAudioChannelLabel_Ambisonic_X = 201,
619 kIOAudioChannelLabel_Ambisonic_Y = 202,
620 kIOAudioChannelLabel_Ambisonic_Z = 203,
621
622 // Mid/Side Recording
623 kIOAudioChannelLabel_MS_Mid = 204,
624 kIOAudioChannelLabel_MS_Side = 205,
625
626 // X-Y Recording
627 kIOAudioChannelLabel_XY_X = 206,
628 kIOAudioChannelLabel_XY_Y = 207,
629
630 // other
631 kIOAudioChannelLabel_HeadphonesLeft = 301,
632 kIOAudioChannelLabel_HeadphonesRight = 302,
633 kIOAudioChannelLabel_ClickTrack = 304,
634 kIOAudioChannelLabel_ForeignLanguage = 305,
635
636 // generic discrete channel
637 kIOAudioChannelLabel_Discrete = 400,
638
639 // numbered discrete channel
640 kIOAudioChannelLabel_Discrete_0 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 0,
641 kIOAudioChannelLabel_Discrete_1 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 1,
642 kIOAudioChannelLabel_Discrete_2 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 2,
643 kIOAudioChannelLabel_Discrete_3 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 3,
644 kIOAudioChannelLabel_Discrete_4 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 4,
645 kIOAudioChannelLabel_Discrete_5 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 5,
646 kIOAudioChannelLabel_Discrete_6 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 6,
647 kIOAudioChannelLabel_Discrete_7 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 7,
648 kIOAudioChannelLabel_Discrete_8 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 8,
649 kIOAudioChannelLabel_Discrete_9 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 9,
650 kIOAudioChannelLabel_Discrete_10 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 10,
651 kIOAudioChannelLabel_Discrete_11 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 11,
652 kIOAudioChannelLabel_Discrete_12 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 12,
653 kIOAudioChannelLabel_Discrete_13 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 13,
654 kIOAudioChannelLabel_Discrete_14 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 14,
655 kIOAudioChannelLabel_Discrete_15 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 15,
656 kIOAudioChannelLabel_Discrete_65535 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 65535
657};
658
659
660
661#endif /* _IOKIT_IOAUDIOTYPES_H */
662

Archive Download this file

Revision: 1232