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), <rdar://11955717> 195enum 196{ 197 kIOAudioSMPTETimeType24 = 0, 198 kIOAudioSMPTETimeType25 = 1, 199 kIOAudioSMPTETimeType30Drop = 2, 200 kIOAudioSMPTETimeType30 = 3, 201 kIOAudioSMPTETimeType2997 = 4, 202 kIOAudioSMPTETimeType2997Drop = 5, 203 kIOAudioSMPTETimeType60 = 6, 204 kIOAudioSMPTETimeType5994 = 7, 205 kIOAudioSMPTETimeType60Drop = 8, 206 kIOAudioSMPTETimeType5994Drop = 9, 207 kIOAudioSMPTETimeType50 = 10, 208 kIOAudioSMPTETimeType2398 = 11 209}; 210 211// flags describing a SMPTE time stamp 212enum 213{ 214 kIOAudioSMPTETimeValid = (1L << 0), // the full time is valid 215 kIOAudioSMPTETimeRunning = (1L << 1) // time is running 216}; 217 218// A struct for encapsulating the parts of a time stamp. The flags 219// say which fields are valid. 220typedef struct _IOAudioTimeStamp 221{ 222 UInt64 fSampleTime; // the absolute sample time, was a Float64 223 UInt64 fHostTime; // the host's root timebase's time 224 UInt64 fRateScalar; // the system rate scalar, was a Float64 225 UInt64 fWordClockTime; // the word clock time 226 IOAudioSMPTETime fSMPTETime; // the SMPTE time 227 UInt32 fFlags; // the flags indicate which fields are valid 228 UInt32 fReserved; // reserved, pads the structure out to force 8 byte alignment 229} IOAudioTimeStamp; 230 231// flags for the AudioTimeStamp sturcture 232enum 233{ 234 kIOAudioTimeStampSampleTimeValid = (1L << 0), 235 kIOAudioTimeStampHostTimeValid = (1L << 1), 236 kIOAudioTimeStampRateScalarValid = (1L << 2), 237 kIOAudioTimeStampWordClockTimeValid = (1L << 3), 238 kIOAudioTimeStampSMPTETimeValid = (1L << 4) 239}; 240 241// Some commonly used combinations of timestamp flags 242enum 243{ 244 kIOAudioTimeStampSampleHostTimeValid = (kIOAudioTimeStampSampleTimeValid | kIOAudioTimeStampHostTimeValid) 245}; 246 247/*! 248* @enum IOAudioStreamDirection 249 * @abstract Represents the direction of an IOAudioStream 250 * @constant kIOAudioStreamDirectionOutput Output buffer 251 * @constant kIOAudioStreamDirectionInput Input buffer 252 */ 253 254typedef enum _IOAudioStreamDirection { 255 kIOAudioStreamDirectionOutput = 0, 256 kIOAudioStreamDirectionInput = 1 257} IOAudioStreamDirection; 258 259enum { 260 kIOAudioDeviceCanBeDefaultNothing = 0, 261 kIOAudioDeviceCanBeDefaultInput = (1L << 0), 262 kIOAudioDeviceCanBeDefaultOutput = (1L << 1), 263 kIOAudioDeviceCanBeSystemOutput = (1L << 2) 264}; 265 266/*! 267 * @defined kIOAudioEngineDefaultMixBufferSampleSize 268 */ 269 270#define kIOAudioEngineDefaultMixBufferSampleSize sizeof(float) 271 272/* The following are for use only by the IOKit.framework audio family code */ 273 274/*! 275 * @enum IOAudioControlCalls 276 * @abstract The set of constants passed to IOAudioControlUserClient::getExternalMethodForIndex() when making calls 277 * from the IOAudioFamily user client code. 278 * @constant kIOAudioControlCallSetValue Used to set the value of an IOAudioControl. 279 * @constant kIOAudioControlCallGetValue Used to get the value of an IOAudioControl. 280 */ 281typedef enum _IOAudioControlCalls { 282 kIOAudioControlCallSetValue = 0, 283 kIOAudioControlCallGetValue = 1 284} IOAudioControlCalls; 285 286/*! @defined kIOAudioControlNumCalls The number of elements in the IOAudioControlCalls enum. */ 287#define kIOAudioControlNumCalls 2 288 289/*! 290 * @enum IOAudioControlNotifications 291 * @abstract The set of constants passed in the type field of IOAudioControlUserClient::registerNotificaitonPort(). 292 * @constant kIOAudioControlValueChangeNotification Used to request value change notifications. 293 * @constant kIOAudioControlRangeChangeNotification Used to request range change notifications. 294 */ 295typedef enum _IOAudioControlNotifications { 296 kIOAudioControlValueChangeNotification = 0, 297 kIOAudioControlRangeChangeNotification = 1 298} IOAudioControlNotifications; 299 300/*! 301 * @struct IOAudioNotificationMessage 302 * @abstract Used in the mach message for IOAudio notifications. 303 * @field messageHeader Standard mach message header 304 * @field ref The param passed to registerNotificationPort() in refCon. 305 */ 306typedef struct _IOAudioNotificationMessage { 307 mach_msg_header_t messageHeader; 308 UInt32 type; 309 UInt32 ref; 310 void * sender; 311} IOAudioNotificationMessage; 312 313typedef struct _IOAudioSampleRate { 314 UInt32 whole; 315 UInt32 fraction; 316} IOAudioSampleRate; 317 318#define kNoIdleAudioPowerDown 0xffffffffffffffffULL 319 320enum { 321 kIOAudioPortTypeOutput = 'outp', 322 kIOAudioPortTypeInput = 'inpt', 323 kIOAudioPortTypeMixer = 'mixr', 324 kIOAudioPortTypePassThru = 'pass', 325 kIOAudioPortTypeProcessing = 'proc' 326}; 327 328enum { 329 kIOAudioOutputPortSubTypeInternalSpeaker = 'ispk', 330 kIOAudioOutputPortSubTypeExternalSpeaker = 'espk', 331 kIOAudioOutputPortSubTypeHeadphones = 'hdpn', 332 kIOAudioOutputPortSubTypeLine = 'line', 333 kIOAudioOutputPortSubTypeSPDIF = 'spdf', 334 335 kIOAudioInputPortSubTypeInternalMicrophone = 'imic', 336 kIOAudioInputPortSubTypeExternalMicrophone = 'emic', 337 kIOAudioInputPortSubTypeCD = 'cd ', 338 kIOAudioInputPortSubTypeLine = 'line', 339 kIOAudioInputPortSubTypeSPDIF = 'spdf' 340}; 341 342enum { 343 kIOAudioControlTypeLevel = 'levl', 344 kIOAudioControlTypeToggle = 'togl', 345 kIOAudioControlTypeJack = 'jack', 346 kIOAudioControlTypeSelector = 'slct' 347}; 348 349// <rdar://8325563> Added kIOAudioToggleControlSubTypePhantomPower, kIOAudioToggleControlSubTypePhaseInvert & 350// kIOAudioSelectorControlSubTypeChannelHighPassFilter 351enum { 352 kIOAudioLevelControlSubTypeVolume = 'vlme', 353 kIOAudioLevelControlSubTypeLFEVolume = 'subv', 354 kIOAudioLevelControlSubTypePRAMVolume = 'pram', 355 kIOAudioToggleControlSubTypeMute = 'mute', 356 kIOAudioToggleControlSubTypeSolo = 'solo', 357 kIOAudioToggleControlSubTypeLFEMute = 'subm', 358 kIOAudioToggleControlSubTypeiSubAttach = 'atch', 359 kIOAudioToggleControlSubTypePhantomPower = 'phan', 360 kIOAudioToggleControlSubTypePhaseInvert = 'phsi', 361 kIOAudioSelectorControlSubTypeOutput = 'outp', 362 kIOAudioSelectorControlSubTypeInput = 'inpt', 363 kIOAudioSelectorControlSubTypeClockSource = 'clck', 364 kIOAudioSelectorControlSubTypeDestination = 'dest', 365 kIOAudioSelectorControlSubTypeChannelNominalLineLevel = 'nlev', 366 kIOAudioSelectorControlSubTypeChannelLevelPlus4dBu = '4dbu', 367 kIOAudioSelectorControlSubTypeChannelLevelMinus10dBV = '10db', 368 kIOAudioSelectorControlSubTypeChannelLevelMinus20dBV = '20db', 369 kIOAudioSelectorControlSubTypeChannelLevelMicLevel = 'micl', 370 kIOAudioSelectorControlSubTypeChannelLevelInstrumentLevel = 'istl', 371 kIOAudioSelectorControlSubTypeChannelHighPassFilter = 'hipf' 372}; 373 374enum { 375 kIOAudioControlUsageOutput = 'outp', 376 kIOAudioControlUsageInput = 'inpt', 377 kIOAudioControlUsagePassThru = 'pass', 378 kIOAudioControlUsageCoreAudioProperty = 'prop' 379}; 380 381enum { 382 kIOAudioControlChannelNumberInactive = -1, 383 kIOAudioControlChannelIDAll = 0, 384 kIOAudioControlChannelIDDefaultLeft = 1, 385 kIOAudioControlChannelIDDefaultRight = 2, 386 kIOAudioControlChannelIDDefaultCenter = 3, 387 kIOAudioControlChannelIDDefaultLeftRear = 4, 388 kIOAudioControlChannelIDDefaultRightRear = 5, 389 kIOAudioControlChannelIDDefaultSub = 6, 390 kIOAudioControlChannelIDDefaultFrontLeftCenter = 7, 391 kIOAudioControlChannelIDDefaultFrontRightCenter = 8, 392 kIOAudioControlChannelIDDefaultRearCenter = 9, 393 kIOAudioControlChannelIDDefaultSurroundLeft = 10, 394 kIOAudioControlChannelIDDefaultSurroundRight = 11 395}; 396 397enum { 398 kIOAudioSelectorControlSelectionValueNone = 'none', 399 400 // Output-specific selection IDs 401 kIOAudioSelectorControlSelectionValueInternalSpeaker = 'ispk', 402 kIOAudioSelectorControlSelectionValueExternalSpeaker = 'espk', 403 kIOAudioSelectorControlSelectionValueHeadphones = 'hdpn', 404 405 // Input-specific selection IDs 406 kIOAudioSelectorControlSelectionValueInternalMicrophone = 'imic', 407 kIOAudioSelectorControlSelectionValueExternalMicrophone = 'emic', 408 kIOAudioSelectorControlSelectionValueCD = 'cd ', 409 410 // Common selection IDs 411 kIOAudioSelectorControlSelectionValueLine = 'line', 412 kIOAudioSelectorControlSelectionValueSPDIF = 'spdf' 413}; 414 415enum { 416 kIOAudioStreamSampleFormatLinearPCM = 'lpcm', 417 kIOAudioStreamSampleFormatIEEEFloat = 'ieee', 418 kIOAudioStreamSampleFormatALaw = 'alaw', 419 kIOAudioStreamSampleFormatMuLaw = 'ulaw', 420 kIOAudioStreamSampleFormatMPEG = 'mpeg', 421 kIOAudioStreamSampleFormatAC3 = 'ac-3', 422 kIOAudioStreamSampleFormat1937AC3 = 'cac3', 423 kIOAudioStreamSampleFormat1937MPEG1 = 'mpg1', 424 kIOAudioStreamSampleFormat1937MPEG2 = 'mpg2', 425 kIOAudioStreamSampleFormatTimeCode = 'time' // a stream of IOAudioTimeStamp structures that capture any incoming time code information 426}; 427 428enum { 429 kIOAudioStreamNumericRepresentationSignedInt = 'sint', 430 kIOAudioStreamNumericRepresentationUnsignedInt = 'uint', 431 kIOAudioStreamNumericRepresentationIEEE754Float = 'flot' 432}; 433 434enum { 435 kIOAudioClockSelectorTypeInternal = 'int ', 436 kIOAudioClockSelectorTypeExternal = 'ext ', 437 kIOAudioClockSelectorTypeAESEBU = 'asbu', 438 kIOAudioClockSelectorTypeTOSLink = 'tosl', 439 kIOAudioClockSelectorTypeSPDIF = 'spdf', 440 kIOAudioClockSelectorTypeADATOptical = 'adto', 441 kIOAudioClockSelectorTypeADAT9Pin = 'adt9', 442 kIOAudioClockSelectorTypeSMPTE = 'smpt', 443 kIOAudioClockSelectorTypeVideo = 'vdeo', 444 kIOAudioClockSelectorTypeControl = 'cnrl', 445 kIOAudioClockSelectorTypeOther = 'othr', 446}; 447 448enum { 449 kIOAudioStreamAlignmentLowByte = 0, 450 kIOAudioStreamAlignmentHighByte = 1 451}; 452 453enum { 454 kIOAudioStreamByteOrderBigEndian = 0, 455 kIOAudioStreamByteOrderLittleEndian = 1 456}; 457 458enum { 459 kIOAudioLevelControlNegativeInfinity = 0xffffffff 460}; 461 462enum { 463 kIOAudioNewClockDomain = 0xffffffff 464}; 465 466// Device connection types 467enum { 468 kIOAudioDeviceTransportTypeBuiltIn = 'bltn', 469 kIOAudioDeviceTransportTypePCI = 'pci ', 470 kIOAudioDeviceTransportTypeUSB = 'usb ', 471 kIOAudioDeviceTransportTypeFireWire = '1394', 472 kIOAudioDeviceTransportTypeNetwork = 'ntwk', 473 kIOAudioDeviceTransportTypeWireless = 'wrls', 474 kIOAudioDeviceTransportTypeOther = 'othr', 475 kIOAudioDeviceTransportTypeBluetooth = 'blue', 476 kIOAudioDeviceTransportTypeVirtual = 'virt', 477 kIOAudioDeviceTransportTypeDisplayPort = 'dprt', 478 kIOAudioDeviceTransportTypeHdmi = 'hdmi', 479 kIOAudioDeviceTransportTypeAVB = 'eavb', //<rdar://10874672> 480 kIOAudioDeviceTransportTypeThunderbolt = 'thun' //<rdar://10874672> 481}; 482 483// types that go nowhere 484enum { 485 OUTPUT_NULL = 0x0100, 486 INPUT_NULL = 0x0101 487}; 488 489// Input terminal types 490enum { 491 INPUT_UNDEFINED = 0x0200, 492 INPUT_MICROPHONE = 0x0201, 493 INPUT_DESKTOP_MICROPHONE = 0x0202, 494 INPUT_PERSONAL_MICROPHONE = 0x0203, 495 INPUT_OMNIDIRECTIONAL_MICROPHONE = 0x0204, 496 INPUT_MICROPHONE_ARRAY = 0x0205, 497 INPUT_PROCESSING_MICROPHONE_ARRAY = 0x0206, 498 INPUT_MODEM_AUDIO = 0x207 499}; 500 501// Output terminal types 502enum { 503 OUTPUT_UNDEFINED = 0x0300, 504 OUTPUT_SPEAKER = 0x0301, 505 OUTPUT_HEADPHONES = 0x0302, 506 OUTPUT_HEAD_MOUNTED_DISPLAY_AUDIO = 0x0303, 507 OUTPUT_DESKTOP_SPEAKER = 0x0304, 508 OUTPUT_ROOM_SPEAKER = 0x0305, 509 OUTPUT_COMMUNICATION_SPEAKER = 0x0306, 510 OUTPUT_LOW_FREQUENCY_EFFECTS_SPEAKER = 0x0307 511}; 512 513// Bi-directional terminal types 514enum { 515 BIDIRECTIONAL_UNDEFINED = 0x0400, 516 BIDIRECTIONAL_HANDSET = 0x0401, 517 BIDIRECTIONAL_HEADSET = 0x0402, 518 BIDIRECTIONAL_SPEAKERPHONE_NO_ECHO_REDX = 0x0403, 519 BIDIRECTIONAL_ECHO_SUPPRESSING_SPEAKERPHONE = 0x0404, 520 BIDIRECTIONAL_ECHO_CANCELING_SPEAKERPHONE = 0x0405 521}; 522 523// Telephony terminal types 524enum { 525 TELEPHONY_UNDEFINED = 0x0500, 526 TELEPHONY_PHONE_LINE = 0x0501, 527 TELEPHONY_TELEPHONE = 0x0502, 528 TELEPHONY_DOWN_LINE_PHONE = 0x0503 529}; 530 531// External terminal types 532enum { 533 EXTERNAL_UNDEFINED = 0x0600, 534 EXTERNAL_ANALOG_CONNECTOR = 0x0601, 535 EXTERNAL_DIGITAL_AUDIO_INTERFACE = 0x0602, 536 EXTERNAL_LINE_CONNECTOR = 0x0603, 537 EXTERNAL_LEGACY_AUDIO_CONNECTOR = 0x0604, 538 EXTERNAL_SPDIF_INTERFACE = 0x0605, 539 EXTERNAL_1394_DA_STREAM = 0x0606, 540 EXTERNAL_1394_DV_STREAM_SOUNDTRACK = 0x0607, 541 EXTERNAL_ADAT = 0x0608, 542 EXTERNAL_TDIF = 0x0609, 543 EXTERNAL_MADI = 0x060A 544}; 545 546// Embedded terminal types 547enum { 548 EMBEDDED_UNDEFINED = 0x0700, 549 EMBEDDED_LEVEL_CALIBRATION_NOISE_SOURCE = 0x0701, 550 EMBEDDED_EQUALIZATION_NOISE = 0x0702, 551 EMBEDDED_CD_PLAYER = 0x0703, 552 EMBEDDED_DAT = 0x0704, 553 EMBEDDED_DCC = 0x0705, 554 EMBEDDED_MINIDISK = 0x0706, 555 EMBEDDED_ANALOG_TAPE = 0x0707, 556 EMBEDDED_PHONOGRAPH = 0x0708, 557 EMBEDDED_VCR_AUDIO = 0x0709, 558 EMBEDDED_VIDEO_DISC_AUDIO = 0x070A, 559 EMBEDDED_DVD_AUDIO = 0x070B, 560 EMBEDDED_TV_TUNER_AUDIO = 0x070C, 561 EMBEDDED_SATELLITE_RECEIVER_AUDIO = 0x070D, 562 EMBEDDED_CABLE_TUNER_AUDIO = 0x070E, 563 EMBEDDED_DSS_AUDIO = 0x070F, 564 EMBEDDED_RADIO_RECEIVER = 0x0710, 565 EMBEDDED_RADIO_TRANSMITTER = 0x0711, 566 EMBEDDED_MULTITRACK_RECORDER = 0x0712, 567 EMBEDDED_SYNTHESIZER = 0x0713 568}; 569 570// Processing terminal types 571enum { 572 PROCESSOR_UNDEFINED = 0x0800, 573 PROCESSOR_GENERAL = 0x0801 574}; 575 576// Channel spatial position types 577 578 579#define kIOAudioChannelLabel_Discrete_field_ba 16 580enum { 581 kIOAudioChannelLabel_Unknown = 0xFFFFFFFF, // unknown or unspecified other use 582 kIOAudioChannelLabel_Unused = 0, // channel is present, but has no intended use or destination 583 kIOAudioChannelLabel_UseCoordinates = 100, // channel is described by the mCoordinates fields. 584 585 kIOAudioChannelLabel_Left = 1, 586 kIOAudioChannelLabel_Right = 2, 587 kIOAudioChannelLabel_Center = 3, 588 kIOAudioChannelLabel_LFEScreen = 4, 589 kIOAudioChannelLabel_LeftSurround = 5, // WAVE: "Back Left" 590 kIOAudioChannelLabel_RightSurround = 6, // WAVE: "Back Right" 591 kIOAudioChannelLabel_LeftCenter = 7, 592 kIOAudioChannelLabel_RightCenter = 8, 593 kIOAudioChannelLabel_CenterSurround = 9, // WAVE: "Back Center" or plain "Rear Surround" 594 kIOAudioChannelLabel_LeftSurroundDirect = 10, // WAVE: "Side Left" 595 kIOAudioChannelLabel_RightSurroundDirect = 11, // WAVE: "Side Right" 596 kIOAudioChannelLabel_TopCenterSurround = 12, 597 kIOAudioChannelLabel_VerticalHeightLeft = 13, // WAVE: "Top Front Left" 598 kIOAudioChannelLabel_VerticalHeightCenter = 14, // WAVE: "Top Front Center" 599 kIOAudioChannelLabel_VerticalHeightRight = 15, // WAVE: "Top Front Right" 600 601 kIOAudioChannelLabel_TopBackLeft = 16, 602 kIOAudioChannelLabel_TopBackCenter = 17, 603 kIOAudioChannelLabel_TopBackRight = 18, 604 605 kIOAudioChannelLabel_RearSurroundLeft = 33, 606 kIOAudioChannelLabel_RearSurroundRight = 34, 607 kIOAudioChannelLabel_LeftWide = 35, 608 kIOAudioChannelLabel_RightWide = 36, 609 kIOAudioChannelLabel_LFE2 = 37, 610 kIOAudioChannelLabel_LeftTotal = 38, // matrix encoded 4 channels 611 kIOAudioChannelLabel_RightTotal = 39, // matrix encoded 4 channels 612 kIOAudioChannelLabel_HearingImpaired = 40, 613 kIOAudioChannelLabel_Narration = 41, 614 kIOAudioChannelLabel_Mono = 42, 615 kIOAudioChannelLabel_DialogCentricMix = 43, 616 617 kIOAudioChannelLabel_CenterSurroundDirect = 44, // back center, non diffuse 618 619 kIOAudioChannelLabel_Haptic = 45, 620 621 // first order ambisonic channels 622 kIOAudioChannelLabel_Ambisonic_W = 200, 623 kIOAudioChannelLabel_Ambisonic_X = 201, 624 kIOAudioChannelLabel_Ambisonic_Y = 202, 625 kIOAudioChannelLabel_Ambisonic_Z = 203, 626 627 // Mid/Side Recording 628 kIOAudioChannelLabel_MS_Mid = 204, 629 kIOAudioChannelLabel_MS_Side = 205, 630 631 // X-Y Recording 632 kIOAudioChannelLabel_XY_X = 206, 633 kIOAudioChannelLabel_XY_Y = 207, 634 635 // other 636 kIOAudioChannelLabel_HeadphonesLeft = 301, 637 kIOAudioChannelLabel_HeadphonesRight = 302, 638 kIOAudioChannelLabel_ClickTrack = 304, 639 kIOAudioChannelLabel_ForeignLanguage = 305, 640 641 // generic discrete channel 642 kIOAudioChannelLabel_Discrete = 400, 643 644 // numbered discrete channel 645 kIOAudioChannelLabel_Discrete_0 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 0, 646 kIOAudioChannelLabel_Discrete_1 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 1, 647 kIOAudioChannelLabel_Discrete_2 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 2, 648 kIOAudioChannelLabel_Discrete_3 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 3, 649 kIOAudioChannelLabel_Discrete_4 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 4, 650 kIOAudioChannelLabel_Discrete_5 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 5, 651 kIOAudioChannelLabel_Discrete_6 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 6, 652 kIOAudioChannelLabel_Discrete_7 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 7, 653 kIOAudioChannelLabel_Discrete_8 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 8, 654 kIOAudioChannelLabel_Discrete_9 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 9, 655 kIOAudioChannelLabel_Discrete_10 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 10, 656 kIOAudioChannelLabel_Discrete_11 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 11, 657 kIOAudioChannelLabel_Discrete_12 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 12, 658 kIOAudioChannelLabel_Discrete_13 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 13, 659 kIOAudioChannelLabel_Discrete_14 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 14, 660 kIOAudioChannelLabel_Discrete_15 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 15, 661 kIOAudioChannelLabel_Discrete_65535 = ( 1 << kIOAudioChannelLabel_Discrete_field_ba ) | 65535 662}; 663 664 665 666#endif /* _IOKIT_IOAUDIOTYPES_H */ 667