1 USING: alien.c-types alien.syntax classes.struct math
2 windows.com windows.com.syntax windows.directx.audiodefs
4 IN: windows.directx.xaudio2
8 CONSTANT: XAUDIO2_MAX_BUFFER_BYTES HEX: 80000000
9 CONSTANT: XAUDIO2_MAX_QUEUED_BUFFERS 64
10 CONSTANT: XAUDIO2_MAX_BUFFERS_SYSTEM 2
11 CONSTANT: XAUDIO2_MAX_AUDIO_CHANNELS 64
12 CONSTANT: XAUDIO2_MIN_SAMPLE_RATE 1000
13 CONSTANT: XAUDIO2_MAX_SAMPLE_RATE 200000
14 CONSTANT: XAUDIO2_MAX_VOLUME_LEVEL 16777216.0
15 : XAUDIO2_MIN_FREQ_RATIO ( -- z ) 1.0 1024.0 / ; inline
16 CONSTANT: XAUDIO2_MAX_FREQ_RATIO 1024.0
17 CONSTANT: XAUDIO2_DEFAULT_FREQ_RATIO 2.0
18 CONSTANT: XAUDIO2_MAX_FILTER_ONEOVERQ 1.5
19 CONSTANT: XAUDIO2_MAX_FILTER_FREQUENCY 1.0
20 CONSTANT: XAUDIO2_MAX_LOOP_COUNT 254
21 CONSTANT: XAUDIO2_MAX_INSTANCES 8
23 CONSTANT: XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO 600000
24 CONSTANT: XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL 300000
26 CONSTANT: XAUDIO2_COMMIT_NOW 0
27 CONSTANT: XAUDIO2_COMMIT_ALL 0
28 CONSTANT: XAUDIO2_INVALID_OPSET HEX: ffffffff
29 CONSTANT: XAUDIO2_NO_LOOP_REGION 0
30 CONSTANT: XAUDIO2_LOOP_INFINITE 255
31 CONSTANT: XAUDIO2_DEFAULT_CHANNELS 0
32 CONSTANT: XAUDIO2_DEFAULT_SAMPLERATE 0
35 CONSTANT: XAUDIO2_DEBUG_ENGINE HEX: 0001
36 CONSTANT: XAUDIO2_VOICE_NOPITCH HEX: 0002
37 CONSTANT: XAUDIO2_VOICE_NOSRC HEX: 0004
38 CONSTANT: XAUDIO2_VOICE_USEFILTER HEX: 0008
39 CONSTANT: XAUDIO2_VOICE_MUSIC HEX: 0010
40 CONSTANT: XAUDIO2_PLAY_TAILS HEX: 0020
41 CONSTANT: XAUDIO2_END_OF_STREAM HEX: 0040
42 CONSTANT: XAUDIO2_SEND_USEFILTER HEX: 0080
45 CONSTANT: XAUDIO2_DEFAULT_FILTER_TYPE 0
46 CONSTANT: XAUDIO2_DEFAULT_FILTER_FREQUENCY 1.0
47 CONSTANT: XAUDIO2_DEFAULT_FILTER_ONEOVERQ 1.0
49 CONSTANT: XAUDIO2_QUANTUM_NUMERATOR 1
50 CONSTANT: XAUDIO2_QUANTUM_DENOMINATOR 100
52 : XAUDIO2_QUANTUM_MS ( -- z )
53 XAUDIO2_QUANTUM_DENOMINATOR 1000.0 XAUDIO2_QUANTUM_NUMERATOR * / ; inline
55 CONSTANT: XAUDIO2_E_INVALID_CALL HEX: 88960001
56 CONSTANT: XAUDIO2_E_XMA_DECODER_ERROR HEX: 88960002
57 CONSTANT: XAUDIO2_E_XAPO_CREATION_FAILED HEX: 88960003
58 CONSTANT: XAUDIO2_E_DEVICE_INVALIDATED HEX: 88960004
60 CONSTANT: Processor1 HEX: 00000001
61 CONSTANT: Processor2 HEX: 00000002
62 CONSTANT: Processor3 HEX: 00000004
63 CONSTANT: Processor4 HEX: 00000008
64 CONSTANT: Processor5 HEX: 00000010
65 CONSTANT: Processor6 HEX: 00000020
66 CONSTANT: Processor7 HEX: 00000040
67 CONSTANT: Processor8 HEX: 00000080
68 CONSTANT: Processor9 HEX: 00000100
69 CONSTANT: Processor10 HEX: 00000200
70 CONSTANT: Processor11 HEX: 00000400
71 CONSTANT: Processor12 HEX: 00000800
72 CONSTANT: Processor13 HEX: 00001000
73 CONSTANT: Processor14 HEX: 00002000
74 CONSTANT: Processor15 HEX: 00004000
75 CONSTANT: Processor16 HEX: 00008000
76 CONSTANT: Processor17 HEX: 00010000
77 CONSTANT: Processor18 HEX: 00020000
78 CONSTANT: Processor19 HEX: 00040000
79 CONSTANT: Processor20 HEX: 00080000
80 CONSTANT: Processor21 HEX: 00100000
81 CONSTANT: Processor22 HEX: 00200000
82 CONSTANT: Processor23 HEX: 00400000
83 CONSTANT: Processor24 HEX: 00800000
84 CONSTANT: Processor25 HEX: 01000000
85 CONSTANT: Processor26 HEX: 02000000
86 CONSTANT: Processor27 HEX: 04000000
87 CONSTANT: Processor28 HEX: 08000000
88 CONSTANT: Processor29 HEX: 10000000
89 CONSTANT: Processor30 HEX: 20000000
90 CONSTANT: Processor31 HEX: 40000000
91 CONSTANT: Processor32 HEX: 80000000
92 CONSTANT: XAUDIO2_ANY_PROCESSOR HEX: ffffffff
93 CONSTANT: XAUDIO2_DEFAULT_PROCESSOR HEX: ffffffff
94 TYPEDEF: int XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER
95 TYPEDEF: int XAUDIO2_PROCESSOR
97 CONSTANT: NotDefaultDevice HEX: 0
98 CONSTANT: DefaultConsoleDevice HEX: 1
99 CONSTANT: DefaultMultimediaDevice HEX: 2
100 CONSTANT: DefaultCommunicationsDevice HEX: 4
101 CONSTANT: DefaultGameDevice HEX: 8
102 CONSTANT: GlobalDefaultDevice HEX: f
103 CONSTANT: InvalidDeviceRole HEX: 0
104 TYPEDEF: int XAUDIO2_DEVICE_ROLE
106 STRUCT: XAUDIO2_DEVICE_DETAILS
107 { DeviceID WCHAR[256] }
108 { DisplayName WCHAR[256] }
109 { Role XAUDIO2_DEVICE_ROLE }
110 { OutputFormat WAVEFORMATEXTENSIBLE } ;
112 STRUCT: XAUDIO2_VOICE_DETAILS
113 { CreationFlags UINT32 }
114 { InputChannels UINT32 }
115 { InputSampleRate UINT32 } ;
117 C-TYPE: IXAudio2Voice
119 STRUCT: XAUDIO2_SEND_DESCRIPTOR
121 { pOutputVoice IXAudio2Voice* } ;
123 STRUCT: XAUDIO2_VOICE_SENDS
125 { pSends XAUDIO2_SEND_DESCRIPTOR* } ;
127 STRUCT: XAUDIO2_EFFECT_DESCRIPTOR
128 { pEffect IUnknown* }
129 { InitialState BOOL }
130 { OutputChannels UINT32 } ;
132 STRUCT: XAUDIO2_EFFECT_CHAIN
133 { EffectCount UINT32 }
134 { pEffectDescriptors XAUDIO2_EFFECT_DESCRIPTOR* } ;
141 TYPEDEF: int XAUDIO2_FILTER_TYPE
143 STRUCT: XAUDIO2_FILTER_PARAMETERS
144 { Type XAUDIO2_FILTER_TYPE }
148 STRUCT: XAUDIO2_BUFFER
150 { AudioBytes UINT32 }
153 { PlayLength UINT32 }
155 { LoopLength UINT32 }
160 STRUCT: XAUDIO2_BUFFER_WMA
161 { pDecodedPacketCumulativeBytes UINT32* }
162 { PacketCount UINT32 } ;
164 STRUCT: XAUDIO2_VOICE_STATE
165 { pCurrentBufferContext void* }
166 { BuffersQueued UINT32 }
167 { SamplesPlayed UINT64 } ;
169 STRUCT: XAUDIO2_PERFORMANCE_DATA
170 { AudioCyclesSinceLastQuery UINT64 }
171 { TotalCyclesSinceLastQuery UINT64 }
172 { MinimumCyclesPerQuantum UINT32 }
173 { MaximumCyclesPerQuantum UINT32 }
174 { MemoryUsageInBytes UINT32 }
175 { CurrentLatencyInSamples UINT32 }
176 { GlitchesSinceEngineStarted UINT32 }
177 { ActiveSourceVoiceCount UINT32 }
178 { TotalSourceVoiceCount UINT32 }
179 { ActiveSubmixVoiceCount UINT32 }
180 { ActiveResamplerCount UINT32 }
181 { ActiveMatrixMixCount UINT32 }
182 { ActiveXmaSourceVoices UINT32 }
183 { ActiveXmaStreams UINT32 } ;
185 STRUCT: XAUDIO2_DEBUG_CONFIGURATION
190 { LogFunctionName BOOL }
193 CONSTANT: XAUDIO2_LOG_ERRORS HEX: 0001
194 CONSTANT: XAUDIO2_LOG_WARNINGS HEX: 0002
195 CONSTANT: XAUDIO2_LOG_INFO HEX: 0004
196 CONSTANT: XAUDIO2_LOG_DETAIL HEX: 0008
197 CONSTANT: XAUDIO2_LOG_API_CALLS HEX: 0010
198 CONSTANT: XAUDIO2_LOG_FUNC_CALLS HEX: 0020
199 CONSTANT: XAUDIO2_LOG_TIMING HEX: 0040
200 CONSTANT: XAUDIO2_LOG_LOCKS HEX: 0080
201 CONSTANT: XAUDIO2_LOG_MEMORY HEX: 0100
202 CONSTANT: XAUDIO2_LOG_STREAMING HEX: 1000
204 C-TYPE: IXAudio2EngineCallback
205 C-TYPE: IXAudio2VoiceCallback
207 COM-INTERFACE: IXAudio2 IUnknown {8bcf1f58-9fe7-4583-8ac6-e2adc465c8bb}
208 HRESULT GetDeviceCount ( UINT32* pCount )
209 HRESULT GetDeviceDetails ( UINT32 Index, XAUDIO2_DEVICE_DETAILS* pDeviceDetails )
210 HRESULT Initialize ( UINT32 Flags, XAUDIO2_PROCESSOR XAudio2Processor )
211 HRESULT RegisterForCallbacks ( IXAudio2EngineCallback* pCallback )
212 void UnregisterForCallbacks ( IXAudio2EngineCallback* pCallback )
213 HRESULT CreateSourceVoice (
214 IXAudio2SourceVoice** ppSourceVoice,
215 WAVEFORMATEX* pSourceFormat,
217 FLOAT MaxFrequencyRatio,
218 IXAudio2VoiceCallback* pCallback,
219 XAUDIO2_VOICE_SENDS* pSendList,
220 XAUDIO2_EFFECT_CHAIN* pEffectChain )
221 HRESULT CreateSubmixVoice (
222 IXAudio2SubmixVoice** ppSubmixVoice,
223 UINT32 InputChannels,
224 UINT32 InputSampleRate,
226 UINT32 ProcessingStage,
227 XAUDIO2_VOICE_SENDS* pSendList,
228 XAUDIO2_EFFECT_CHAIN* pEffectChain )
229 HRESULT CreateMasteringVoice (
230 IXAudio2MasteringVoice** ppMasteringVoice,
231 UINT32 InputChannels,
232 UINT32 InputSampleRate,
235 XAUDIO2_EFFECT_CHAIN* pEffectChain )
236 HRESULT StartEngine ( )
238 HRESULT CommitChanges ( UINT32 OperationSet )
239 void GetPerformanceData ( XAUDIO2_PERFORMANCE_DATA* pPerfData )
240 void SetDebugConfiguration ( XAUDIO2_DEBUG_CONFIGURATION* pDebugConfiguration, void* pReserved ) ;
242 COM-INTERFACE: IXAudio2Voice f {00000000-0000-0000-0000-000000000000}
243 void GetVoiceDetails ( XAUDIO2_VOICE_DETAILS* pVoiceDetails )
244 HRESULT SetOutputVoices ( XAUDIO2_VOICE_SENDS* pSendList )
245 HRESULT SetEffectChain ( XAUDIO2_EFFECT_CHAIN* pEffectChain )
246 HRESULT EnableEffect ( UINT32 EffectIndex, UINT32 OperationSet )
247 HRESULT DisableEffect ( UINT32 EffectIndex, UINT32 OperationSet )
248 void GetEffectState ( UINT32 EffectIndex, BOOL* pEnabled )
249 HRESULT SetEffectParameters (
252 UINT32 ParametersByteSize,
253 UINT32 OperationSet )
254 HRESULT GetEffectParameters (
257 UINT32 ParametersByteSize )
258 HRESULT SetFilterParameters ( XAUDIO2_FILTER_PARAMETERS* pParameters, UINT32 OperationSet )
259 void GetFilterParameters ( XAUDIO2_FILTER_PARAMETERS* pParameters )
260 HRESULT SetOutputFilterParameters ( IXAudio2Voice* pDestinationVoice,
261 XAUDIO2_FILTER_PARAMETERS* pParameters,
262 UINT32 OperationSet )
263 void GetOutputFilterParameters ( IXAudio2Voice* pDestinationVoice,
264 XAUDIO2_FILTER_PARAMETERS* pParameters )
265 HRESULT SetVolume ( FLOAT Volume,
266 UINT32 OperationSet )
267 void GetVolume ( FLOAT* pVolume )
268 HRESULT SetChannelVolumes ( UINT32 Channels,
270 UINT32 OperationSet )
271 void GetChannelVolumes ( UINT32 Channels, FLOAT* pVolumes )
272 HRESULT SetOutputMatrix (
273 IXAudio2Voice* pDestinationVoice,
274 UINT32 SourceChannels,
275 UINT32 DestinationChannels,
277 UINT32 OperationSet )
278 void GetOutputMatrix (
279 IXAudio2Voice* pDestinationVoice,
280 UINT32 SourceChannels,
281 UINT32 DestinationChannels,
282 FLOAT* pLevelMatrix )
283 void DestroyVoice ( ) ;
285 COM-INTERFACE: IXAudio2SourceVoice IXAudio2Voice {00000000-0000-0000-0000-000000000000}
286 HRESULT Start ( UINT32 Flags, UINT32 OperationSet )
287 HRESULT Stop ( UINT32 Flags, UINT32 OperationSet )
288 HRESULT SubmitSourceBuffer ( XAUDIO2_BUFFER* pBuffer, XAUDIO2_BUFFER_WMA* pBufferWMA )
289 HRESULT FlushSourceBuffers ( )
290 HRESULT Discontinuity ( )
291 HRESULT ExitLoop ( UINT32 OperationSet )
292 void GetState ( XAUDIO2_VOICE_STATE* pVoiceState )
293 HRESULT SetFrequencyRatio ( FLOAT Ratio, UINT32 OperationSet )
294 void GetFrequencyRatio ( FLOAT* pRatio )
295 HRESULT SetSourceSampleRate ( UINT32 NewSourceSampleRate ) ;
297 COM-INTERFACE: IXAudio2SubmixVoice IXAudio2Voice {00000000-0000-0000-0000-000000000000} ;
298 COM-INTERFACE: IXAudio2MasteringVoice IXAudio2Voice {00000000-0000-0000-0000-000000000000} ;
300 COM-INTERFACE: IXAudio2EngineCallback f {00000000-0000-0000-0000-000000000000}
301 void OnProcessingPassStart ( )
302 void OnProcessingPassEnd ( )
303 void OnCriticalError ( HRESULT Error ) ;
305 COM-INTERFACE: IXAudio2VoiceCallback f {00000000-0000-0000-0000-000000000000}
306 void OnVoiceProcessingPassStart ( UINT32 BytesRequired )
307 void OnVoiceProcessingPassEnd ( )
309 void OnBufferStart ( void* pBufferContext )
310 void OnBufferEnd ( void* pBufferContext )
311 void OnLoopEnd ( void* pBufferContext )
312 void OnVoiceError ( void* pBufferContext, HRESULT Error ) ;