]> gitweb.factorcode.org Git - factor.git/blob - basis/windows/directx/xaudio2/xaudio2.factor
Fix windows.directx compile errors
[factor.git] / basis / windows / directx / xaudio2 / xaudio2.factor
1 USING: alien.c-types alien.syntax classes.struct math
2 windows.com windows.com.syntax windows.directx.audiodefs
3 windows.types ;
4 IN: windows.directx.xaudio2
5
6 LIBRARY: xaudio2
7
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
22
23 CONSTANT: XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO         600000
24 CONSTANT: XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL 300000
25
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
33
34
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
43
44
45 CONSTANT: XAUDIO2_DEFAULT_FILTER_TYPE      0
46 CONSTANT: XAUDIO2_DEFAULT_FILTER_FREQUENCY 1.0
47 CONSTANT: XAUDIO2_DEFAULT_FILTER_ONEOVERQ  1.0
48
49 CONSTANT: XAUDIO2_QUANTUM_NUMERATOR   1
50 CONSTANT: XAUDIO2_QUANTUM_DENOMINATOR 100
51
52 : XAUDIO2_QUANTUM_MS ( -- z )
53     XAUDIO2_QUANTUM_DENOMINATOR 1000.0 XAUDIO2_QUANTUM_NUMERATOR * / ; inline
54
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
59
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
96
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
105
106 STRUCT: XAUDIO2_DEVICE_DETAILS
107     { DeviceID     WCHAR[256]           }
108     { DisplayName  WCHAR[256]           }
109     { Role         XAUDIO2_DEVICE_ROLE  }
110     { OutputFormat WAVEFORMATEXTENSIBLE } ;
111
112 STRUCT: XAUDIO2_VOICE_DETAILS
113     { CreationFlags   UINT32 }
114     { InputChannels   UINT32 }
115     { InputSampleRate UINT32 } ;
116
117 C-TYPE: IXAudio2Voice
118
119 STRUCT: XAUDIO2_SEND_DESCRIPTOR
120     { Flags        UINT32         }
121     { pOutputVoice IXAudio2Voice* } ;
122
123 STRUCT: XAUDIO2_VOICE_SENDS
124     { SendCount UINT32                   }
125     { pSends    XAUDIO2_SEND_DESCRIPTOR* } ;
126
127 STRUCT: XAUDIO2_EFFECT_DESCRIPTOR
128     { pEffect        IUnknown* }
129     { InitialState   BOOL      }
130     { OutputChannels UINT32    } ;
131
132 STRUCT: XAUDIO2_EFFECT_CHAIN
133     { EffectCount        UINT32                     }
134     { pEffectDescriptors XAUDIO2_EFFECT_DESCRIPTOR* } ;
135
136 C-ENUM:
137     LowPassFilter
138     BandPassFilter
139     HighPassFilter
140     NotchFilter ;
141 TYPEDEF: int XAUDIO2_FILTER_TYPE
142
143 STRUCT: XAUDIO2_FILTER_PARAMETERS
144     { Type      XAUDIO2_FILTER_TYPE }
145     { Frequency FLOAT               }
146     { OneOverQ  FLOAT               } ;
147
148 STRUCT: XAUDIO2_BUFFER
149     { Flags      UINT32 }
150     { AudioBytes UINT32 }
151     { pAudioData BYTE*  }
152     { PlayBegin  UINT32 }
153     { PlayLength UINT32 }
154     { LoopBegin  UINT32 }
155     { LoopLength UINT32 }
156     { LoopCount  UINT32 }
157     { pContext   void*  } ;
158
159
160 STRUCT: XAUDIO2_BUFFER_WMA
161     { pDecodedPacketCumulativeBytes UINT32* }
162     { PacketCount                   UINT32  } ;
163
164 STRUCT: XAUDIO2_VOICE_STATE
165     { pCurrentBufferContext void*  }
166     { BuffersQueued         UINT32 }
167     { SamplesPlayed         UINT64 } ;
168
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 } ;
184
185 STRUCT: XAUDIO2_DEBUG_CONFIGURATION
186     { TraceMask       UINT32 }
187     { BreakMask       UINT32 }
188     { LogThreadID     BOOL   }
189     { LogFileline     BOOL   }
190     { LogFunctionName BOOL   }
191     { LogTiming       BOOL   } ;
192
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
203
204 C-TYPE: IXAudio2EngineCallback
205 C-TYPE: IXAudio2VoiceCallback
206 C-TYPE: IXAudio2SourceVoice
207 C-TYPE: IXAudio2SubmixVoice
208 C-TYPE: IXAudio2MasteringVoice
209
210 COM-INTERFACE: IXAudio2 IUnknown {8bcf1f58-9fe7-4583-8ac6-e2adc465c8bb}
211     HRESULT GetDeviceCount ( UINT32* pCount )
212     HRESULT GetDeviceDetails ( UINT32 Index, XAUDIO2_DEVICE_DETAILS* pDeviceDetails )
213     HRESULT Initialize ( UINT32 Flags, XAUDIO2_PROCESSOR XAudio2Processor )
214     HRESULT RegisterForCallbacks ( IXAudio2EngineCallback* pCallback )
215     void UnregisterForCallbacks ( IXAudio2EngineCallback* pCallback )
216     HRESULT CreateSourceVoice (
217         IXAudio2SourceVoice**  ppSourceVoice,
218         WAVEFORMATEX*          pSourceFormat,
219         UINT32                 Flags,
220         FLOAT                  MaxFrequencyRatio,
221         IXAudio2VoiceCallback* pCallback,
222         XAUDIO2_VOICE_SENDS*   pSendList,
223         XAUDIO2_EFFECT_CHAIN*  pEffectChain )
224     HRESULT CreateSubmixVoice (
225         IXAudio2SubmixVoice** ppSubmixVoice,
226         UINT32                InputChannels,
227         UINT32                InputSampleRate,
228         UINT32                Flags,
229         UINT32                ProcessingStage,
230         XAUDIO2_VOICE_SENDS*  pSendList,
231         XAUDIO2_EFFECT_CHAIN* pEffectChain )
232     HRESULT CreateMasteringVoice (
233         IXAudio2MasteringVoice** ppMasteringVoice,
234         UINT32                   InputChannels,
235         UINT32                   InputSampleRate,
236         UINT32                   Flags
237         UINT32                   DeviceIndex,
238         XAUDIO2_EFFECT_CHAIN*    pEffectChain )
239     HRESULT StartEngine (   )
240     void StopEngine (   )
241     HRESULT CommitChanges ( UINT32 OperationSet )
242     void GetPerformanceData ( XAUDIO2_PERFORMANCE_DATA* pPerfData )
243     void SetDebugConfiguration ( XAUDIO2_DEBUG_CONFIGURATION* pDebugConfiguration, void* pReserved ) ;
244
245 COM-INTERFACE: IXAudio2Voice f {00000000-0000-0000-0000-000000000000}
246     void GetVoiceDetails ( XAUDIO2_VOICE_DETAILS* pVoiceDetails )
247     HRESULT SetOutputVoices ( XAUDIO2_VOICE_SENDS* pSendList )
248     HRESULT SetEffectChain ( XAUDIO2_EFFECT_CHAIN* pEffectChain )
249     HRESULT EnableEffect ( UINT32 EffectIndex, UINT32 OperationSet )
250     HRESULT DisableEffect ( UINT32 EffectIndex, UINT32 OperationSet )
251     void GetEffectState ( UINT32 EffectIndex, BOOL* pEnabled )
252     HRESULT SetEffectParameters (
253         UINT32 EffectIndex,
254         void*  pParameters,
255         UINT32 ParametersByteSize,
256         UINT32 OperationSet )
257     HRESULT GetEffectParameters (
258         UINT32 EffectIndex,
259         void*  pParameters,
260         UINT32 ParametersByteSize )
261     HRESULT SetFilterParameters ( XAUDIO2_FILTER_PARAMETERS* pParameters, UINT32 OperationSet )
262     void GetFilterParameters ( XAUDIO2_FILTER_PARAMETERS* pParameters )
263     HRESULT SetOutputFilterParameters ( IXAudio2Voice*             pDestinationVoice,
264                                         XAUDIO2_FILTER_PARAMETERS* pParameters,
265                                         UINT32                     OperationSet )
266     void GetOutputFilterParameters ( IXAudio2Voice*             pDestinationVoice,
267                                      XAUDIO2_FILTER_PARAMETERS* pParameters )
268     HRESULT SetVolume ( FLOAT  Volume,
269                         UINT32 OperationSet )
270     void GetVolume ( FLOAT* pVolume )
271     HRESULT SetChannelVolumes ( UINT32 Channels,
272                                 FLOAT* pVolumes,
273                                 UINT32 OperationSet )
274     void GetChannelVolumes ( UINT32 Channels, FLOAT* pVolumes )
275     HRESULT SetOutputMatrix (
276         IXAudio2Voice* pDestinationVoice,
277         UINT32         SourceChannels,
278         UINT32         DestinationChannels,
279         FLOAT*         pLevelMatrix,
280         UINT32         OperationSet    )
281     void GetOutputMatrix (
282         IXAudio2Voice* pDestinationVoice,
283         UINT32         SourceChannels,
284         UINT32         DestinationChannels,
285         FLOAT*         pLevelMatrix )
286     void DestroyVoice (  ) ;
287
288 COM-INTERFACE: IXAudio2SourceVoice IXAudio2Voice {00000000-0000-0000-0000-000000000000}
289     HRESULT Start ( UINT32 Flags, UINT32 OperationSet )
290     HRESULT Stop ( UINT32 Flags, UINT32 OperationSet )
291     HRESULT SubmitSourceBuffer ( XAUDIO2_BUFFER* pBuffer, XAUDIO2_BUFFER_WMA* pBufferWMA )
292     HRESULT FlushSourceBuffers ( )
293     HRESULT Discontinuity ( )
294     HRESULT ExitLoop ( UINT32 OperationSet )
295     void GetState ( XAUDIO2_VOICE_STATE* pVoiceState )
296     HRESULT SetFrequencyRatio ( FLOAT Ratio, UINT32 OperationSet )
297     void GetFrequencyRatio ( FLOAT* pRatio )
298     HRESULT SetSourceSampleRate ( UINT32 NewSourceSampleRate ) ;
299
300 COM-INTERFACE: IXAudio2SubmixVoice IXAudio2Voice {00000000-0000-0000-0000-000000000000} ;
301 COM-INTERFACE: IXAudio2MasteringVoice IXAudio2Voice {00000000-0000-0000-0000-000000000000} ;
302     
303 COM-INTERFACE: IXAudio2EngineCallback f {00000000-0000-0000-0000-000000000000}
304     void OnProcessingPassStart (   )
305     void OnProcessingPassEnd (   )
306     void OnCriticalError ( HRESULT Error ) ;
307
308 COM-INTERFACE: IXAudio2VoiceCallback f {00000000-0000-0000-0000-000000000000}
309     void OnVoiceProcessingPassStart ( UINT32 BytesRequired )
310     void OnVoiceProcessingPassEnd (   )
311     void OnStreamEnd (   )
312     void OnBufferStart ( void* pBufferContext )
313     void OnBufferEnd ( void* pBufferContext )
314     void OnLoopEnd ( void* pBufferContext )
315     void OnVoiceError ( void* pBufferContext, HRESULT Error ) ;