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