this repo has no description
1#ifndef AUDIOCONVERTER_H
2#define AUDIOCONVERTER_H
3#include <CoreServices/MacTypes.h>
4#include <CoreAudio/CoreAudioTypes.h>
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10typedef struct OpaqueAudioConverter * AudioConverterRef;
11
12typedef UInt32 AudioConverterPropertyID;
13enum
14{
15 kAudioConverterPropertyMinimumInputBufferSize = 'mibs',
16 kAudioConverterPropertyMinimumOutputBufferSize = 'mobs',
17 kAudioConverterPropertyMaximumInputBufferSize = 'xibs',
18 kAudioConverterPropertyMaximumInputPacketSize = 'xips',
19 kAudioConverterPropertyMaximumOutputPacketSize = 'xops',
20 kAudioConverterPropertyCalculateInputBufferSize = 'cibs',
21 kAudioConverterPropertyCalculateOutputBufferSize = 'cobs',
22 kAudioConverterPropertyInputCodecParameters = 'icdp',
23 kAudioConverterPropertyOutputCodecParameters = 'ocdp',
24 kAudioConverterSampleRateConverterAlgorithm = 'srci',
25 kAudioConverterSampleRateConverterComplexity = 'srca',
26 kAudioConverterSampleRateConverterQuality = 'srcq',
27 kAudioConverterSampleRateConverterInitialPhase = 'srcp',
28 kAudioConverterCodecQuality = 'cdqu',
29 kAudioConverterPrimeMethod = 'prmm',
30 kAudioConverterPrimeInfo = 'prim',
31 kAudioConverterChannelMap = 'chmp',
32 kAudioConverterDecompressionMagicCookie = 'dmgc',
33 kAudioConverterCompressionMagicCookie = 'cmgc',
34 kAudioConverterEncodeBitRate = 'brat',
35 kAudioConverterEncodeAdjustableSampleRate = 'ajsr',
36 kAudioConverterInputChannelLayout = 'icl ',
37 kAudioConverterOutputChannelLayout = 'ocl ',
38 kAudioConverterApplicableEncodeBitRates = 'aebr',
39 kAudioConverterAvailableEncodeBitRates = 'vebr',
40 kAudioConverterApplicableEncodeSampleRates = 'aesr',
41 kAudioConverterAvailableEncodeSampleRates = 'vesr',
42 kAudioConverterAvailableEncodeChannelLayoutTags = 'aecl',
43 kAudioConverterCurrentOutputStreamDescription = 'acod',
44 kAudioConverterCurrentInputStreamDescription = 'acid',
45 kAudioConverterPropertySettings = 'acps',
46 kAudioConverterPropertyBitDepthHint = 'acbd',
47 kAudioConverterPropertyFormatList = 'flst'
48};
49enum
50{
51 kAudioConverterPropertyDithering = 'dith',
52 kAudioConverterPropertyDitherBitDepth = 'dbit'
53};
54enum
55{
56 kDitherAlgorithm_TPDF = 1,
57 kDitherAlgorithm_NoiseShaping = 2
58};
59enum
60{
61 kAudioConverterQuality_Max = 0x7F,
62 kAudioConverterQuality_High = 0x60,
63 kAudioConverterQuality_Medium = 0x40,
64 kAudioConverterQuality_Low = 0x20,
65 kAudioConverterQuality_Min = 0
66};
67enum
68{
69 kAudioConverterSampleRateConverterComplexity_Linear = 'line',
70 kAudioConverterSampleRateConverterComplexity_Normal = 'norm',
71 kAudioConverterSampleRateConverterComplexity_Mastering = 'bats',
72 kAudioConverterSampleRateConverterComplexity_MinimumPhase = 'minp'
73};
74enum
75{
76 kConverterPrimeMethod_Pre = 0,
77 kConverterPrimeMethod_Normal = 1,
78 kConverterPrimeMethod_None = 2
79};
80struct AudioConverterPrimeInfo {
81 UInt32 leadingFrames;
82 UInt32 trailingFrames;
83};
84typedef struct AudioConverterPrimeInfo AudioConverterPrimeInfo;
85
86
87
88
89
90enum
91{
92 kAudioConverterErr_FormatNotSupported = 'fmt?',
93 kAudioConverterErr_OperationNotSupported = 0x6F703F3F,
94 kAudioConverterErr_PropertyNotSupported = 'prop',
95 kAudioConverterErr_InvalidInputSize = 'insz',
96 kAudioConverterErr_InvalidOutputSize = 'otsz',
97
98 kAudioConverterErr_UnspecifiedError = 'what',
99 kAudioConverterErr_BadPropertySizeError = '!siz',
100 kAudioConverterErr_RequiresPacketDescriptionsError = '!pkd',
101 kAudioConverterErr_InputSampleRateOutOfRange = '!isr',
102 kAudioConverterErr_OutputSampleRateOutOfRange = '!osr'
103};
104extern OSStatus
105AudioConverterNew( const AudioStreamBasicDescription * inSourceFormat,
106 const AudioStreamBasicDescription * inDestinationFormat,
107 AudioConverterRef _Nullable * _Nonnull outAudioConverter);
108extern OSStatus
109AudioConverterNewSpecific( const AudioStreamBasicDescription * inSourceFormat,
110 const AudioStreamBasicDescription * inDestinationFormat,
111 UInt32 inNumberClassDescriptions,
112 const AudioClassDescription * inClassDescriptions,
113 AudioConverterRef _Nullable * _Nonnull outAudioConverter);
114extern OSStatus
115AudioConverterDispose( AudioConverterRef inAudioConverter);
116extern OSStatus
117AudioConverterReset( AudioConverterRef inAudioConverter);
118extern OSStatus
119AudioConverterGetPropertyInfo( AudioConverterRef inAudioConverter,
120 AudioConverterPropertyID inPropertyID,
121 UInt32 * _Nullable outSize,
122 Boolean * _Nullable outWritable);
123extern OSStatus
124AudioConverterGetProperty( AudioConverterRef inAudioConverter,
125 AudioConverterPropertyID inPropertyID,
126 UInt32 * ioPropertyDataSize,
127 void * outPropertyData);
128extern OSStatus
129AudioConverterSetProperty( AudioConverterRef inAudioConverter,
130 AudioConverterPropertyID inPropertyID,
131 UInt32 inPropertyDataSize,
132 const void * inPropertyData);
133typedef OSStatus
134(*AudioConverterInputDataProc)( AudioConverterRef inAudioConverter,
135 UInt32 * ioDataSize,
136 void * _Nonnull * _Nonnull outData,
137 void * _Nullable inUserData);
138extern OSStatus
139AudioConverterFillBuffer( AudioConverterRef inAudioConverter,
140 AudioConverterInputDataProc inInputDataProc,
141 void * _Nullable inInputDataProcUserData,
142 UInt32 * ioOutputDataSize,
143 void * outOutputData);
144extern OSStatus
145AudioConverterConvertBuffer( AudioConverterRef inAudioConverter,
146 UInt32 inInputDataSize,
147 const void * inInputData,
148 UInt32 * ioOutputDataSize,
149 void * outOutputData);
150typedef OSStatus
151(*AudioConverterComplexInputDataProc)( AudioConverterRef inAudioConverter,
152 UInt32 * ioNumberDataPackets,
153 AudioBufferList * ioData,
154 AudioStreamPacketDescription * _Nullable * _Nullable outDataPacketDescription,
155 void * _Nullable inUserData);
156extern OSStatus
157AudioConverterFillComplexBuffer( AudioConverterRef inAudioConverter,
158 AudioConverterComplexInputDataProc inInputDataProc,
159 void * _Nullable inInputDataProcUserData,
160 UInt32 * ioOutputDataPacketSize,
161 AudioBufferList * outOutputData,
162 AudioStreamPacketDescription * _Nullable outPacketDescription);
163extern OSStatus
164AudioConverterConvertComplexBuffer( AudioConverterRef inAudioConverter,
165 UInt32 inNumberPCMFrames,
166 const AudioBufferList * inInputData,
167 AudioBufferList * outOutputData);
168
169
170#ifdef __cplusplus
171}
172#endif
173
174
175#endif
176