Something went wrong. Try again.
Cider Isn't Darwin Emulation, Really
Something went wrong. Try again.
7.3 kB · 176 lines
C
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177#ifndef AUDIOCONVERTER_H#define AUDIOCONVERTER_H#include <CoreServices/MacTypes.h>#include <CoreAudio/CoreAudioTypes.h>
#ifdef __cplusplusextern "C" {#endif
typedef struct OpaqueAudioConverter * AudioConverterRef;
typedef UInt32 AudioConverterPropertyID;enum{ kAudioConverterPropertyMinimumInputBufferSize = 'mibs', kAudioConverterPropertyMinimumOutputBufferSize = 'mobs', kAudioConverterPropertyMaximumInputBufferSize = 'xibs', kAudioConverterPropertyMaximumInputPacketSize = 'xips', kAudioConverterPropertyMaximumOutputPacketSize = 'xops', kAudioConverterPropertyCalculateInputBufferSize = 'cibs', kAudioConverterPropertyCalculateOutputBufferSize = 'cobs', kAudioConverterPropertyInputCodecParameters = 'icdp', kAudioConverterPropertyOutputCodecParameters = 'ocdp', kAudioConverterSampleRateConverterAlgorithm = 'srci', kAudioConverterSampleRateConverterComplexity = 'srca', kAudioConverterSampleRateConverterQuality = 'srcq', kAudioConverterSampleRateConverterInitialPhase = 'srcp', kAudioConverterCodecQuality = 'cdqu', kAudioConverterPrimeMethod = 'prmm', kAudioConverterPrimeInfo = 'prim', kAudioConverterChannelMap = 'chmp', kAudioConverterDecompressionMagicCookie = 'dmgc', kAudioConverterCompressionMagicCookie = 'cmgc', kAudioConverterEncodeBitRate = 'brat', kAudioConverterEncodeAdjustableSampleRate = 'ajsr', kAudioConverterInputChannelLayout = 'icl ', kAudioConverterOutputChannelLayout = 'ocl ', kAudioConverterApplicableEncodeBitRates = 'aebr', kAudioConverterAvailableEncodeBitRates = 'vebr', kAudioConverterApplicableEncodeSampleRates = 'aesr', kAudioConverterAvailableEncodeSampleRates = 'vesr', kAudioConverterAvailableEncodeChannelLayoutTags = 'aecl', kAudioConverterCurrentOutputStreamDescription = 'acod', kAudioConverterCurrentInputStreamDescription = 'acid', kAudioConverterPropertySettings = 'acps', kAudioConverterPropertyBitDepthHint = 'acbd', kAudioConverterPropertyFormatList = 'flst'};enum{ kAudioConverterPropertyDithering = 'dith', kAudioConverterPropertyDitherBitDepth = 'dbit'};enum{ kDitherAlgorithm_TPDF = 1, kDitherAlgorithm_NoiseShaping = 2};enum{ kAudioConverterQuality_Max = 0x7F, kAudioConverterQuality_High = 0x60, kAudioConverterQuality_Medium = 0x40, kAudioConverterQuality_Low = 0x20, kAudioConverterQuality_Min = 0};enum{ kAudioConverterSampleRateConverterComplexity_Linear = 'line', kAudioConverterSampleRateConverterComplexity_Normal = 'norm', kAudioConverterSampleRateConverterComplexity_Mastering = 'bats', kAudioConverterSampleRateConverterComplexity_MinimumPhase = 'minp'};enum{ kConverterPrimeMethod_Pre = 0, kConverterPrimeMethod_Normal = 1, kConverterPrimeMethod_None = 2};struct AudioConverterPrimeInfo { UInt32 leadingFrames; UInt32 trailingFrames;};typedef struct AudioConverterPrimeInfo AudioConverterPrimeInfo;
enum{ kAudioConverterErr_FormatNotSupported = 'fmt?', kAudioConverterErr_OperationNotSupported = 0x6F703F3F, kAudioConverterErr_PropertyNotSupported = 'prop', kAudioConverterErr_InvalidInputSize = 'insz', kAudioConverterErr_InvalidOutputSize = 'otsz',
kAudioConverterErr_UnspecifiedError = 'what', kAudioConverterErr_BadPropertySizeError = '!siz', kAudioConverterErr_RequiresPacketDescriptionsError = '!pkd', kAudioConverterErr_InputSampleRateOutOfRange = '!isr', kAudioConverterErr_OutputSampleRateOutOfRange = '!osr'};extern OSStatusAudioConverterNew( const AudioStreamBasicDescription * inSourceFormat, const AudioStreamBasicDescription * inDestinationFormat, AudioConverterRef _Nullable * _Nonnull outAudioConverter);extern OSStatusAudioConverterNewSpecific( const AudioStreamBasicDescription * inSourceFormat, const AudioStreamBasicDescription * inDestinationFormat, UInt32 inNumberClassDescriptions, const AudioClassDescription * inClassDescriptions, AudioConverterRef _Nullable * _Nonnull outAudioConverter);extern OSStatusAudioConverterDispose( AudioConverterRef inAudioConverter);extern OSStatusAudioConverterReset( AudioConverterRef inAudioConverter);extern OSStatusAudioConverterGetPropertyInfo( AudioConverterRef inAudioConverter, AudioConverterPropertyID inPropertyID, UInt32 * _Nullable outSize, Boolean * _Nullable outWritable);extern OSStatusAudioConverterGetProperty( AudioConverterRef inAudioConverter, AudioConverterPropertyID inPropertyID, UInt32 * ioPropertyDataSize, void * outPropertyData);extern OSStatusAudioConverterSetProperty( AudioConverterRef inAudioConverter, AudioConverterPropertyID inPropertyID, UInt32 inPropertyDataSize, const void * inPropertyData);typedef OSStatus(*AudioConverterInputDataProc)( AudioConverterRef inAudioConverter, UInt32 * ioDataSize, void * _Nonnull * _Nonnull outData, void * _Nullable inUserData);extern OSStatusAudioConverterFillBuffer( AudioConverterRef inAudioConverter, AudioConverterInputDataProc inInputDataProc, void * _Nullable inInputDataProcUserData, UInt32 * ioOutputDataSize, void * outOutputData);extern OSStatusAudioConverterConvertBuffer( AudioConverterRef inAudioConverter, UInt32 inInputDataSize, const void * inInputData, UInt32 * ioOutputDataSize, void * outOutputData);typedef OSStatus(*AudioConverterComplexInputDataProc)( AudioConverterRef inAudioConverter, UInt32 * ioNumberDataPackets, AudioBufferList * ioData, AudioStreamPacketDescription * _Nullable * _Nullable outDataPacketDescription, void * _Nullable inUserData);extern OSStatusAudioConverterFillComplexBuffer( AudioConverterRef inAudioConverter, AudioConverterComplexInputDataProc inInputDataProc, void * _Nullable inInputDataProcUserData, UInt32 * ioOutputDataPacketSize, AudioBufferList * outOutputData, AudioStreamPacketDescription * _Nullable outPacketDescription);extern OSStatusAudioConverterConvertComplexBuffer( AudioConverterRef inAudioConverter, UInt32 inNumberPCMFrames, const AudioBufferList * inInputData, AudioBufferList * outOutputData);
#ifdef __cplusplus}#endif
#endif