Cider Isn't Darwin Emulation, Really
Something went wrong. Try again.
11 kB · 302 lines
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303#ifndef _AUDIO_CODEC_H#define _AUDIO_CODEC_H
#include <CoreAudio/CoreAudioTypes.h>#include <AudioToolbox/AudioComponent.h>
#ifdef __cplusplusextern "C" {#endif
typedef AudioComponentInstance AudioCodec;typedef UInt32 AudioCodecPropertyID;struct AudioCodecMagicCookieInfo{ UInt32 mMagicCookieSize; const void* _Nullable mMagicCookie;};typedef struct AudioCodecMagicCookieInfo AudioCodecMagicCookieInfo;enum{ kAudioDecoderComponentType = 'adec', kAudioEncoderComponentType = 'aenc', kAudioUnityCodecComponentType = 'acdc'};enum{ kAudioCodecPropertySupportedInputFormats = 'ifm#', kAudioCodecPropertySupportedOutputFormats = 'ofm#', kAudioCodecPropertyAvailableInputSampleRates = 'aisr', kAudioCodecPropertyAvailableOutputSampleRates = 'aosr', kAudioCodecPropertyAvailableBitRateRange = 'abrt', kAudioCodecPropertyMinimumNumberInputPackets = 'mnip', kAudioCodecPropertyMinimumNumberOutputPackets = 'mnop', kAudioCodecPropertyAvailableNumberChannels = 'cmnc', kAudioCodecPropertyDoesSampleRateConversion = 'lmrc', kAudioCodecPropertyAvailableInputChannelLayoutTags = 'aicl', kAudioCodecPropertyAvailableOutputChannelLayoutTags = 'aocl', kAudioCodecPropertyInputFormatsForOutputFormat = 'if4o', kAudioCodecPropertyOutputFormatsForInputFormat = 'of4i', kAudioCodecPropertyFormatInfo = 'acfi'};enum{ kAudioCodecPropertyInputBufferSize = 'tbuf', kAudioCodecPropertyPacketFrameSize = 'pakf', kAudioCodecPropertyHasVariablePacketByteSizes = 'vpk?', kAudioCodecPropertyMaximumPacketByteSize = 'pakb', kAudioCodecPropertyPacketSizeLimitForVBR = 'pakl', kAudioCodecPropertyCurrentInputFormat = 'ifmt', kAudioCodecPropertyCurrentOutputFormat = 'ofmt', kAudioCodecPropertyMagicCookie = 'kuki', kAudioCodecPropertyUsedInputBufferSize = 'ubuf', kAudioCodecPropertyIsInitialized = 'init', kAudioCodecPropertyCurrentTargetBitRate = 'brat', kAudioCodecPropertyCurrentInputSampleRate = 'cisr', kAudioCodecPropertyCurrentOutputSampleRate = 'cosr', kAudioCodecPropertyQualitySetting = 'srcq', kAudioCodecPropertyApplicableBitRateRange = 'brta', kAudioCodecPropertyRecommendedBitRateRange = 'brtr', kAudioCodecPropertyApplicableInputSampleRates = 'isra', kAudioCodecPropertyApplicableOutputSampleRates = 'osra', kAudioCodecPropertyPaddedZeros = 'pad0', kAudioCodecPropertyPrimeMethod = 'prmm', kAudioCodecPropertyPrimeInfo = 'prim', kAudioCodecPropertyCurrentInputChannelLayout = 'icl ', kAudioCodecPropertyCurrentOutputChannelLayout = 'ocl ', kAudioCodecPropertySettings = 'acs ', kAudioCodecPropertyFormatList = 'acfl', kAudioCodecPropertyBitRateControlMode = 'acbf', kAudioCodecPropertySoundQualityForVBR = 'vbrq', kAudioCodecPropertyDelayMode = 'dmod', kAudioCodecPropertyAdjustLocalQuality = '^qal', kAudioCodecPropertyProgramTargetLevel = 'pptl', kAudioCodecPropertyDynamicRangeControlMode = 'mdrc', kAudioCodecPropertyProgramTargetLevelConstant = 'ptlc',};enum{ kAudioCodecQuality_Max = 0x7F, kAudioCodecQuality_High = 0x60, kAudioCodecQuality_Medium = 0x40, kAudioCodecQuality_Low = 0x20, kAudioCodecQuality_Min = 0};enum{ kAudioCodecPrimeMethod_Pre = 0, kAudioCodecPrimeMethod_Normal = 1, kAudioCodecPrimeMethod_None = 2};enum{ kAudioCodecBitRateControlMode_Constant = 0, kAudioCodecBitRateControlMode_LongTermAverage = 1, kAudioCodecBitRateControlMode_VariableConstrained = 2, kAudioCodecBitRateControlMode_Variable = 3,};enum{ kAudioCodecDelayMode_Compatibility = 0, kAudioCodecDelayMode_Minimum = 1, kAudioCodecDelayMode_Optimal = 2};enum{ kProgramTargetLevel_None = 0, kProgramTargetLevel_Minus31dB = 1, kProgramTargetLevel_Minus23dB = 2, kProgramTargetLevel_Minus20dB = 3};enum{ kDynamicRangeControlMode_None = 0, kDynamicRangeControlMode_Light = 1, kDynamicRangeControlMode_Heavy = 2};typedef struct AudioCodecPrimeInfo{ UInt32 leadingFrames; UInt32 trailingFrames;} AudioCodecPrimeInfo;typedef UInt32 AudioSettingsFlags; enum { kAudioSettingsFlags_ExpertParameter = (1L << 0), kAudioSettingsFlags_InvisibleParameter = (1L << 1), kAudioSettingsFlags_MetaParameter = (1L << 2), kAudioSettingsFlags_UserInterfaceParameter = (1L << 3)};enum{ kAudioCodecProduceOutputPacketFailure = 1, kAudioCodecProduceOutputPacketSuccess = 2, kAudioCodecProduceOutputPacketSuccessHasMore = 3, kAudioCodecProduceOutputPacketNeedsMoreInputData = 4, kAudioCodecProduceOutputPacketAtEOF = 5};enum{ kAudioCodecGetPropertyInfoSelect = 0x0001, kAudioCodecGetPropertySelect = 0x0002, kAudioCodecSetPropertySelect = 0x0003, kAudioCodecInitializeSelect = 0x0004, kAudioCodecUninitializeSelect = 0x0005, kAudioCodecAppendInputDataSelect = 0x0006, kAudioCodecProduceOutputDataSelect = 0x0007, kAudioCodecResetSelect = 0x0008, kAudioCodecAppendInputBufferListSelect = 0x0009, kAudioCodecProduceOutputBufferListSelect = 0x000A};enum{ kAudioCodecNoError = 0, kAudioCodecUnspecifiedError = 'what', kAudioCodecUnknownPropertyError = 'who?', kAudioCodecBadPropertySizeError = '!siz', kAudioCodecIllegalOperationError = 'nope', kAudioCodecUnsupportedFormatError = '!dat', kAudioCodecStateError = '!stt', kAudioCodecNotEnoughBufferSpaceError = '!buf'};extern OSStatusAudioCodecGetPropertyInfo( AudioCodec inCodec, AudioCodecPropertyID inPropertyID, UInt32* _Nullable outSize, Boolean* _Nullable outWritable);extern OSStatusAudioCodecGetProperty( AudioCodec inCodec, AudioCodecPropertyID inPropertyID, UInt32* ioPropertyDataSize, void* outPropertyData);extern OSStatusAudioCodecSetProperty( AudioCodec inCodec, AudioCodecPropertyID inPropertyID, UInt32 inPropertyDataSize, const void* inPropertyData);extern OSStatusAudioCodecInitialize( AudioCodec inCodec, const AudioStreamBasicDescription* _Nullable inInputFormat, const AudioStreamBasicDescription* _Nullable inOutputFormat, const void* _Nullable inMagicCookie, UInt32 inMagicCookieByteSize);extern OSStatusAudioCodecUninitialize(AudioCodec inCodec);extern OSStatusAudioCodecAppendInputData( AudioCodec inCodec, const void* inInputData, UInt32* ioInputDataByteSize, UInt32* ioNumberPackets, const AudioStreamPacketDescription* _Nullable inPacketDescription);extern OSStatusAudioCodecProduceOutputPackets( AudioCodec inCodec, void* outOutputData, UInt32* ioOutputDataByteSize, UInt32* ioNumberPackets, AudioStreamPacketDescription* _Nullable outPacketDescription, UInt32* outStatus);
extern OSStatusAudioCodecAppendInputBufferList( AudioCodec inCodec, const AudioBufferList * inBufferList, UInt32* ioNumberPackets, const AudioStreamPacketDescription* _Nullable inPacketDescription, UInt32* outBytesConsumed);
extern OSStatusAudioCodecProduceOutputBufferList( AudioCodec inCodec, AudioBufferList * ioBufferList, UInt32* ioNumberPackets, AudioStreamPacketDescription* _Nullable outPacketDescription, UInt32* outStatus);extern OSStatusAudioCodecReset(AudioCodec inCodec);
typedef OSStatus(*AudioCodecGetPropertyInfoProc)(void *self, AudioCodecPropertyID inPropertyID, UInt32 * _Nullable outSize, Boolean * _Nullable outWritable);
typedef OSStatus(*AudioCodecGetPropertyProc)(void *self, AudioCodecPropertyID inPropertyID, UInt32 *ioPropertyDataSize, void *outPropertyData);
typedef OSStatus(*AudioCodecSetPropertyProc)(void *self, AudioCodecPropertyID inPropertyID, UInt32 inPropertyDataSize, const void *inPropertyData);
typedef OSStatus(*AudioCodecInitializeProc)(void *self, const AudioStreamBasicDescription * _Nullable inInputFormat, const AudioStreamBasicDescription * _Nullable inOutputFormat, const void * _Nullable inMagicCookie, UInt32 inMagicCookieByteSize);
typedef OSStatus(*AudioCodecUninitializeProc)(void *self);
typedef OSStatus(*AudioCodecAppendInputDataProc)(void *self, const void *inInputData, UInt32 *ioInputDataByteSize, UInt32 *ioNumberPackets, const AudioStreamPacketDescription * _Nullable inPacketDescription);
typedef OSStatus(*AudioCodecProduceOutputPacketsProc)(void *self, void *outOutputData, UInt32 *ioOutputDataByteSize, UInt32 *ioNumberPackets, AudioStreamPacketDescription * _Nullable outPacketDescription, UInt32 *outStatus);
typedef OSStatus(*AudioCodecResetProc)(void *self);
typedef OSStatus(*AudioCodecAppendInputBufferListProc)(void *self, const AudioBufferList *ioBufferList, UInt32 *inNumberPackets, const AudioStreamPacketDescription * _Nullable inPacketDescription, UInt32 *outBytesConsumed);
typedef OSStatus(*AudioCodecProduceOutputBufferListProc)(void *self, AudioBufferList *ioBufferList, UInt32 *ioNumberPackets, AudioStreamPacketDescription *_Nullable outPacketDescription, UInt32 *outStatus);enum{ kAudioCodecPropertyMinimumDelayMode = 'mdel'};enum{ kAudioCodecPropertyNameCFString = 'lnam', kAudioCodecPropertyManufacturerCFString = 'lmak', kAudioCodecPropertyFormatCFString = 'lfor'};enum{ kAudioCodecPropertyRequiresPacketDescription = 'pakd', kAudioCodecPropertyAvailableBitRates = 'brt#', kAudioCodecExtendFrequencies = 'acef', kAudioCodecUseRecommendedSampleRate = 'ursr', kAudioCodecOutputPrecedence = 'oppr', kAudioCodecBitRateFormat = kAudioCodecPropertyBitRateControlMode, kAudioCodecDoesSampleRateConversion = kAudioCodecPropertyDoesSampleRateConversion, kAudioCodecInputFormatsForOutputFormat = kAudioCodecPropertyInputFormatsForOutputFormat, kAudioCodecOutputFormatsForInputFormat = kAudioCodecPropertyOutputFormatsForInputFormat, kAudioCodecPropertyInputChannelLayout = kAudioCodecPropertyCurrentInputChannelLayout, kAudioCodecPropertyOutputChannelLayout = kAudioCodecPropertyCurrentOutputChannelLayout, kAudioCodecPropertyAvailableInputChannelLayouts = kAudioCodecPropertyAvailableInputChannelLayoutTags, kAudioCodecPropertyAvailableOutputChannelLayouts = kAudioCodecPropertyAvailableOutputChannelLayoutTags, kAudioCodecPropertyZeroFramesPadded = kAudioCodecPropertyPaddedZeros};enum{ kAudioCodecBitRateFormat_CBR = kAudioCodecBitRateControlMode_Constant, kAudioCodecBitRateFormat_ABR = kAudioCodecBitRateControlMode_LongTermAverage, kAudioCodecBitRateFormat_VBR = kAudioCodecBitRateControlMode_VariableConstrained};enum{ kAudioCodecOutputPrecedenceNone = 0, kAudioCodecOutputPrecedenceBitRate = 1, kAudioCodecOutputPrecedenceSampleRate = 2};typedef struct AudioCodecMagicCookieInfo MagicCookieInfo __attribute__((deprecated));enum{ kHintBasic = 0, kHintAdvanced = 1, kHintHidden = 2};
#ifdef __cplusplus}#endif
#endif