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* } ;
136 ENUM: XAUDIO2_FILTER_TYPE
142 STRUCT: XAUDIO2_FILTER_PARAMETERS
143 { Type XAUDIO2_FILTER_TYPE }
147 STRUCT: XAUDIO2_BUFFER
149 { AudioBytes UINT32 }
152 { PlayLength UINT32 }
154 { LoopLength UINT32 }
159 STRUCT: XAUDIO2_BUFFER_WMA
160 { pDecodedPacketCumulativeBytes UINT32* }
161 { PacketCount UINT32 } ;
163 STRUCT: XAUDIO2_VOICE_STATE
164 { pCurrentBufferContext void* }
165 { BuffersQueued UINT32 }
166 { SamplesPlayed UINT64 } ;
168 STRUCT: XAUDIO2_PERFORMANCE_DATA
169 { AudioCyclesSinceLastQuery UINT64 }
170 { TotalCyclesSinceLastQuery UINT64 }
171 { MinimumCyclesPerQuantum UINT32 }
172 { MaximumCyclesPerQuantum UINT32 }
173 { MemoryUsageInBytes UINT32 }
174 { CurrentLatencyInSamples UINT32 }
175 { GlitchesSinceEngineStarted UINT32 }
176 { ActiveSourceVoiceCount UINT32 }
177 { TotalSourceVoiceCount UINT32 }
178 { ActiveSubmixVoiceCount UINT32 }
179 { ActiveResamplerCount UINT32 }
180 { ActiveMatrixMixCount UINT32 }
181 { ActiveXmaSourceVoices UINT32 }
182 { ActiveXmaStreams UINT32 } ;
184 STRUCT: XAUDIO2_DEBUG_CONFIGURATION
189 { LogFunctionName BOOL }
192 CONSTANT: XAUDIO2_LOG_ERRORS HEX: 0001
193 CONSTANT: XAUDIO2_LOG_WARNINGS HEX: 0002
194 CONSTANT: XAUDIO2_LOG_INFO HEX: 0004
195 CONSTANT: XAUDIO2_LOG_DETAIL HEX: 0008
196 CONSTANT: XAUDIO2_LOG_API_CALLS HEX: 0010
197 CONSTANT: XAUDIO2_LOG_FUNC_CALLS HEX: 0020
198 CONSTANT: XAUDIO2_LOG_TIMING HEX: 0040
199 CONSTANT: XAUDIO2_LOG_LOCKS HEX: 0080
200 CONSTANT: XAUDIO2_LOG_MEMORY HEX: 0100
201 CONSTANT: XAUDIO2_LOG_STREAMING HEX: 1000
203 C-TYPE: IXAudio2EngineCallback
204 C-TYPE: IXAudio2VoiceCallback
205 C-TYPE: IXAudio2SourceVoice
206 C-TYPE: IXAudio2SubmixVoice
207 C-TYPE: IXAudio2MasteringVoice
209 COM-INTERFACE: IXAudio2 IUnknown {8bcf1f58-9fe7-4583-8ac6-e2adc465c8bb}
210 HRESULT GetDeviceCount ( UINT32* pCount )
211 HRESULT GetDeviceDetails ( UINT32 Index, XAUDIO2_DEVICE_DETAILS* pDeviceDetails )
212 HRESULT Initialize ( UINT32 Flags, XAUDIO2_PROCESSOR XAudio2Processor )
213 HRESULT RegisterForCallbacks ( IXAudio2EngineCallback* pCallback )
214 void UnregisterForCallbacks ( IXAudio2EngineCallback* pCallback )
215 HRESULT CreateSourceVoice (
216 IXAudio2SourceVoice** ppSourceVoice,
217 WAVEFORMATEX* pSourceFormat,
219 FLOAT MaxFrequencyRatio,
220 IXAudio2VoiceCallback* pCallback,
221 XAUDIO2_VOICE_SENDS* pSendList,
222 XAUDIO2_EFFECT_CHAIN* pEffectChain )
223 HRESULT CreateSubmixVoice (
224 IXAudio2SubmixVoice** ppSubmixVoice,
225 UINT32 InputChannels,
226 UINT32 InputSampleRate,
228 UINT32 ProcessingStage,
229 XAUDIO2_VOICE_SENDS* pSendList,
230 XAUDIO2_EFFECT_CHAIN* pEffectChain )
231 HRESULT CreateMasteringVoice (
232 IXAudio2MasteringVoice** ppMasteringVoice,
233 UINT32 InputChannels,
234 UINT32 InputSampleRate,
237 XAUDIO2_EFFECT_CHAIN* pEffectChain )
238 HRESULT StartEngine ( )
240 HRESULT CommitChanges ( UINT32 OperationSet )
241 void GetPerformanceData ( XAUDIO2_PERFORMANCE_DATA* pPerfData )
242 void SetDebugConfiguration ( XAUDIO2_DEBUG_CONFIGURATION* pDebugConfiguration, void* pReserved ) ;
244 COM-INTERFACE: IXAudio2Voice f {00000000-0000-0000-0000-000000000000}
245 void GetVoiceDetails ( XAUDIO2_VOICE_DETAILS* pVoiceDetails )
246 HRESULT SetOutputVoices ( XAUDIO2_VOICE_SENDS* pSendList )
247 HRESULT SetEffectChain ( XAUDIO2_EFFECT_CHAIN* pEffectChain )
248 HRESULT EnableEffect ( UINT32 EffectIndex, UINT32 OperationSet )
249 HRESULT DisableEffect ( UINT32 EffectIndex, UINT32 OperationSet )
250 void GetEffectState ( UINT32 EffectIndex, BOOL* pEnabled )
251 HRESULT SetEffectParameters (
254 UINT32 ParametersByteSize,
255 UINT32 OperationSet )
256 HRESULT GetEffectParameters (
259 UINT32 ParametersByteSize )
260 HRESULT SetFilterParameters ( XAUDIO2_FILTER_PARAMETERS* pParameters, UINT32 OperationSet )
261 void GetFilterParameters ( XAUDIO2_FILTER_PARAMETERS* pParameters )
262 HRESULT SetOutputFilterParameters ( IXAudio2Voice* pDestinationVoice,
263 XAUDIO2_FILTER_PARAMETERS* pParameters,
264 UINT32 OperationSet )
265 void GetOutputFilterParameters ( IXAudio2Voice* pDestinationVoice,
266 XAUDIO2_FILTER_PARAMETERS* pParameters )
267 HRESULT SetVolume ( FLOAT Volume,
268 UINT32 OperationSet )
269 void GetVolume ( FLOAT* pVolume )
270 HRESULT SetChannelVolumes ( UINT32 Channels,
272 UINT32 OperationSet )
273 void GetChannelVolumes ( UINT32 Channels, FLOAT* pVolumes )
274 HRESULT SetOutputMatrix (
275 IXAudio2Voice* pDestinationVoice,
276 UINT32 SourceChannels,
277 UINT32 DestinationChannels,
279 UINT32 OperationSet )
280 void GetOutputMatrix (
281 IXAudio2Voice* pDestinationVoice,
282 UINT32 SourceChannels,
283 UINT32 DestinationChannels,
284 FLOAT* pLevelMatrix )
285 void DestroyVoice ( ) ;
287 COM-INTERFACE: IXAudio2SourceVoice IXAudio2Voice {00000000-0000-0000-0000-000000000000}
288 HRESULT Start ( UINT32 Flags, UINT32 OperationSet )
289 HRESULT Stop ( UINT32 Flags, UINT32 OperationSet )
290 HRESULT SubmitSourceBuffer ( XAUDIO2_BUFFER* pBuffer, XAUDIO2_BUFFER_WMA* pBufferWMA )
291 HRESULT FlushSourceBuffers ( )
292 HRESULT Discontinuity ( )
293 HRESULT ExitLoop ( UINT32 OperationSet )
294 void GetState ( XAUDIO2_VOICE_STATE* pVoiceState )
295 HRESULT SetFrequencyRatio ( FLOAT Ratio, UINT32 OperationSet )
296 void GetFrequencyRatio ( FLOAT* pRatio )
297 HRESULT SetSourceSampleRate ( UINT32 NewSourceSampleRate ) ;
299 COM-INTERFACE: IXAudio2SubmixVoice IXAudio2Voice {00000000-0000-0000-0000-000000000000} ;
300 COM-INTERFACE: IXAudio2MasteringVoice IXAudio2Voice {00000000-0000-0000-0000-000000000000} ;
302 COM-INTERFACE: IXAudio2EngineCallback f {00000000-0000-0000-0000-000000000000}
303 void OnProcessingPassStart ( )
304 void OnProcessingPassEnd ( )
305 void OnCriticalError ( HRESULT Error ) ;
307 COM-INTERFACE: IXAudio2VoiceCallback f {00000000-0000-0000-0000-000000000000}
308 void OnVoiceProcessingPassStart ( UINT32 BytesRequired )
309 void OnVoiceProcessingPassEnd ( )
311 void OnBufferStart ( void* pBufferContext )
312 void OnBufferEnd ( void* pBufferContext )
313 void OnLoopEnd ( void* pBufferContext )
314 void OnVoiceError ( void* pBufferContext, HRESULT Error ) ;