#ifndef _IOKIT_IOAUDIOTYPES_H
#define _IOKIT_IOAUDIOTYPES_H
#include <libkern/OSTypes.h>
#include <mach/message.h>
#include <device/device_types.h>
typedef enum _IOAudioEngineMemory {
kStatusBuffer = 0,
kSampleBuffer = 1,
kMixBuffer = 2
} IOAudioEngineMemory;
typedef enum _IOAudioEngineCalls {
kIOAudioEngineCallRegisterClientBuffer = 0,
kIOAudioEngineCallUnregisterClientBuffer = 1,
kIOAudioEngineCallGetConnectionID = 2,
kIOAudioEngineCallStart = 3,
kIOAudioEngineCallStop = 4
} IOAudioEngineCalls;
#define kIOAudioEngineNumCalls 5
typedef enum _IOAudioEngineTraps {
kIOAudioEngineTrapPerformClientIO = 0
} IOAudioEngineTraps;
typedef enum _IOAudioEngineNotifications {
kIOAudioEngineAllNotifications = 0,
kIOAudioEngineStreamFormatChangeNotification = 1,
kIOAudioEngineChangeNotification = 2,
kIOAudioEngineStartedNotification = 3,
kIOAudioEngineStoppedNotification = 4,
kIOAudioEnginePausedNotification = 5,
kIOAudioEngineResumedNotification = 6
} IOAudioEngineNotifications;
typedef enum _IOAudioEngineState {
kIOAudioEngineStopped = 0,
kIOAudioEngineRunning = 1,
kIOAudioEnginePaused = 2,
kIOAudioEngineResumed = 3
} IOAudioEngineState;
typedef struct _IOAudioEngineStatus {
UInt32 fVersion;
volatile UInt32 fCurrentLoopCount;
volatile AbsoluteTime fLastLoopTime;
volatile UInt32 fEraseHeadSampleFrame;
} IOAudioEngineStatus;
#define kIOAudioEngineCurrentStatusStructVersion 2
typedef struct _IOAudioStreamFormat {
UInt32 fNumChannels;
UInt32 fSampleFormat;
UInt32 fNumericRepresentation;
UInt8 fBitDepth;
UInt8 fBitWidth;
UInt8 fAlignment;
UInt8 fByteOrder;
UInt8 fIsMixable;
UInt32 fDriverTag;
} IOAudioStreamFormat;
typedef enum _IOAudioStreamDirection {
kIOAudioStreamDirectionOutput = 0,
kIOAudioStreamDirectionInput = 1
} IOAudioStreamDirection;
#define kIOAudioEngineDefaultMixBufferSampleSize sizeof(float)
typedef enum _IOAudioControlCalls {
kIOAudioControlCallSetValue = 0,
kIOAudioControlCallGetValue = 1
} IOAudioControlCalls;
#define kIOAudioControlNumCalls 2
typedef enum _IOAudioControlNotifications {
kIOAudioControlValueChangeNotification = 0
} IOAudioControlNotifications;
typedef struct _IOAudioNotificationMessage {
mach_msg_header_t messageHeader;
UInt32 type;
UInt32 ref;
void * sender;
} IOAudioNotificationMessage;
typedef struct _IOAudioSampleRate {
UInt32 whole;
UInt32 fraction;
} IOAudioSampleRate;
enum {
kIOAudioPortTypeOutput = 'outp',
kIOAudioPortTypeInput = 'inpt',
kIOAudioPortTypeMixer = 'mixr',
kIOAudioPortTypePassThru = 'pass',
kIOAudioPortTypeProcessing = 'proc'
};
enum {
kIOAudioOutputPortSubTypeInternalSpeaker = 'ispk',
kIOAudioOutputPortSubTypeExternalSpeaker = 'espk',
kIOAudioOutputPortSubTypeHeadphones = 'hdpn',
kIOAudioOutputPortSubTypeLine = 'line',
kIOAudioOutputPortSubTypeSPDIF = 'spdf',
kIOAudioInputPortSubTypeInternalMicrophone = 'imic',
kIOAudioInputPortSubTypeExternalMicrophone = 'emic',
kIOAudioInputPortSubTypeCD = 'cd ',
kIOAudioInputPortSubTypeLine = 'line',
kIOAudioInputPortSubTypeSPDIF = 'spdf'
};
enum {
kIOAudioControlTypeLevel = 'levl',
kIOAudioControlTypeToggle = 'togl',
kIOAudioControlTypeSelector = 'slct'
};
enum {
kIOAudioLevelControlSubTypeVolume = 'vlme',
kIOAudioToggleControlSubTypeMute = 'mute',
kIOAudioSelectorControlSubTypeOutput = 'outp',
kIOAudioSelectorControlSubTypeInput = 'inpt',
kIOAudioSelectorControlSubTypeClockSource = 'clck'
};
enum {
kIOAudioControlUsageOutput = 'outp',
kIOAudioControlUsageInput = 'inpt',
kIOAudioControlUsagePassThru = 'pass',
kIOAudioControlUsageCoreAudioProperty = 'prop'
};
enum {
kIOAudioControlChannelNumberInactive = -1,
kIOAudioControlChannelIDAll = 0,
kIOAudioControlChannelIDDefaultLeft = 1,
kIOAudioControlChannelIDDefaultRight = 2,
kIOAudioControlChannelIDDefaultCenter = 3,
kIOAudioControlChannelIDDefaultLeftRear = 4,
kIOAudioControlChannelIDDefaultRightRear = 5,
kIOAudioControlChannelIDDefaultSub = 6
};
enum {
kIOAudioSelectorControlSelectionValueNone = 'none',
kIOAudioSelectorControlSelectionValueInternalSpeaker = 'ispk',
kIOAudioSelectorControlSelectionValueExternalSpeaker = 'espk',
kIOAudioSelectorControlSelectionValueHeadphones = 'hdpn',
kIOAudioSelectorControlSelectionValueInternalMicrophone = 'imic',
kIOAudioSelectorControlSelectionValueExternalMicrophone = 'emic',
kIOAudioSelectorControlSelectionValueCD = 'cd ',
kIOAudioSelectorControlSelectionValueLine = 'line',
kIOAudioSelectorControlSelectionValueSPDIF = 'spdf'
};
enum {
kIOAudioStreamSampleFormatLinearPCM = 'lpcm'
};
enum {
kIOAudioStreamNumericRepresentationSignedInt = 'sint',
kIOAudioStreamNumericRepresentationUnsignedInt = 'uint'
};
enum {
kIOAudioStreamAlignmentLowByte = 0,
kIOAudioStreamAlignmentHighByte = 1
};
enum {
kIOAudioStreamByteOrderBigEndian = 0,
kIOAudioStreamByteOrderLittleEndian = 1
};
enum {
kIOAudioLevelControlNegativeInfinity = 0xffffffff
};
#endif