]> gitweb.factorcode.org Git - factor.git/blob - basis/windows/directx/xaudio2/xaudio2.factor
use radix literals
[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
3 windows.directx.audiodefs windows.types ;
4 IN: windows.directx.xaudio2
5
6 LIBRARY: xaudio2
7
8 CONSTANT: XAUDIO2_MAX_BUFFER_BYTES        0x80000000
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           0xffffffff
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            0x0001
36 CONSTANT: XAUDIO2_VOICE_NOPITCH           0x0002
37 CONSTANT: XAUDIO2_VOICE_NOSRC             0x0004
38 CONSTANT: XAUDIO2_VOICE_USEFILTER         0x0008
39 CONSTANT: XAUDIO2_VOICE_MUSIC             0x0010
40 CONSTANT: XAUDIO2_PLAY_TAILS              0x0020
41 CONSTANT: XAUDIO2_END_OF_STREAM           0x0040
42 CONSTANT: XAUDIO2_SEND_USEFILTER          0x0080
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          0x88960001
56 CONSTANT: XAUDIO2_E_XMA_DECODER_ERROR     0x88960002
57 CONSTANT: XAUDIO2_E_XAPO_CREATION_FAILED  0x88960003
58 CONSTANT: XAUDIO2_E_DEVICE_INVALIDATED    0x88960004
59
60 CONSTANT: Processor1  0x00000001
61 CONSTANT: Processor2  0x00000002
62 CONSTANT: Processor3  0x00000004
63 CONSTANT: Processor4  0x00000008
64 CONSTANT: Processor5  0x00000010
65 CONSTANT: Processor6  0x00000020
66 CONSTANT: Processor7  0x00000040
67 CONSTANT: Processor8  0x00000080
68 CONSTANT: Processor9  0x00000100
69 CONSTANT: Processor10 0x00000200
70 CONSTANT: Processor11 0x00000400
71 CONSTANT: Processor12 0x00000800
72 CONSTANT: Processor13 0x00001000
73 CONSTANT: Processor14 0x00002000
74 CONSTANT: Processor15 0x00004000
75 CONSTANT: Processor16 0x00008000
76 CONSTANT: Processor17 0x00010000
77 CONSTANT: Processor18 0x00020000
78 CONSTANT: Processor19 0x00040000
79 CONSTANT: Processor20 0x00080000
80 CONSTANT: Processor21 0x00100000
81 CONSTANT: Processor22 0x00200000
82 CONSTANT: Processor23 0x00400000
83 CONSTANT: Processor24 0x00800000
84 CONSTANT: Processor25 0x01000000
85 CONSTANT: Processor26 0x02000000
86 CONSTANT: Processor27 0x04000000
87 CONSTANT: Processor28 0x08000000
88 CONSTANT: Processor29 0x10000000
89 CONSTANT: Processor30 0x20000000
90 CONSTANT: Processor31 0x40000000
91 CONSTANT: Processor32 0x80000000
92 CONSTANT: XAUDIO2_ANY_PROCESSOR 0xffffffff
93 CONSTANT: XAUDIO2_DEFAULT_PROCESSOR 0xffffffff
94 TYPEDEF: int XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER
95 TYPEDEF: int XAUDIO2_PROCESSOR
96
97 CONSTANT: NotDefaultDevice            0x0
98 CONSTANT: DefaultConsoleDevice        0x1
99 CONSTANT: DefaultMultimediaDevice     0x2
100 CONSTANT: DefaultCommunicationsDevice 0x4
101 CONSTANT: DefaultGameDevice           0x8
102 CONSTANT: GlobalDefaultDevice         0xf
103 CONSTANT: InvalidDeviceRole           0x0
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 ENUM: XAUDIO2_FILTER_TYPE
137     LowPassFilter
138     BandPassFilter
139     HighPassFilter
140     NotchFilter ;
141
142 STRUCT: XAUDIO2_FILTER_PARAMETERS
143     { Type      XAUDIO2_FILTER_TYPE }
144     { Frequency FLOAT               }
145     { OneOverQ  FLOAT               } ;
146
147 STRUCT: XAUDIO2_BUFFER
148     { Flags      UINT32 }
149     { AudioBytes UINT32 }
150     { pAudioData BYTE*  }
151     { PlayBegin  UINT32 }
152     { PlayLength UINT32 }
153     { LoopBegin  UINT32 }
154     { LoopLength UINT32 }
155     { LoopCount  UINT32 }
156     { pContext   void*  } ;
157
158
159 STRUCT: XAUDIO2_BUFFER_WMA
160     { pDecodedPacketCumulativeBytes UINT32* }
161     { PacketCount                   UINT32  } ;
162
163 STRUCT: XAUDIO2_VOICE_STATE
164     { pCurrentBufferContext void*  }
165     { BuffersQueued         UINT32 }
166     { SamplesPlayed         UINT64 } ;
167
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 } ;
183
184 STRUCT: XAUDIO2_DEBUG_CONFIGURATION
185     { TraceMask       UINT32 }
186     { BreakMask       UINT32 }
187     { LogThreadID     BOOL   }
188     { LogFileline     BOOL   }
189     { LogFunctionName BOOL   }
190     { LogTiming       BOOL   } ;
191
192 CONSTANT: XAUDIO2_LOG_ERRORS     0x0001
193 CONSTANT: XAUDIO2_LOG_WARNINGS   0x0002
194 CONSTANT: XAUDIO2_LOG_INFO       0x0004
195 CONSTANT: XAUDIO2_LOG_DETAIL     0x0008
196 CONSTANT: XAUDIO2_LOG_API_CALLS  0x0010
197 CONSTANT: XAUDIO2_LOG_FUNC_CALLS 0x0020
198 CONSTANT: XAUDIO2_LOG_TIMING     0x0040
199 CONSTANT: XAUDIO2_LOG_LOCKS      0x0080
200 CONSTANT: XAUDIO2_LOG_MEMORY     0x0100
201 CONSTANT: XAUDIO2_LOG_STREAMING  0x1000
202
203 C-TYPE: IXAudio2EngineCallback
204 C-TYPE: IXAudio2VoiceCallback
205 C-TYPE: IXAudio2SourceVoice
206 C-TYPE: IXAudio2SubmixVoice
207 C-TYPE: IXAudio2MasteringVoice
208
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,
218         UINT32                 Flags,
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,
227         UINT32                Flags,
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,
235         UINT32                   Flags
236         UINT32                   DeviceIndex,
237         XAUDIO2_EFFECT_CHAIN*    pEffectChain )
238     HRESULT StartEngine (   )
239     void StopEngine (   )
240     HRESULT CommitChanges ( UINT32 OperationSet )
241     void GetPerformanceData ( XAUDIO2_PERFORMANCE_DATA* pPerfData )
242     void SetDebugConfiguration ( XAUDIO2_DEBUG_CONFIGURATION* pDebugConfiguration, void* pReserved ) ;
243
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 (
252         UINT32 EffectIndex,
253         void*  pParameters,
254         UINT32 ParametersByteSize,
255         UINT32 OperationSet )
256     HRESULT GetEffectParameters (
257         UINT32 EffectIndex,
258         void*  pParameters,
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,
271                                 FLOAT* pVolumes,
272                                 UINT32 OperationSet )
273     void GetChannelVolumes ( UINT32 Channels, FLOAT* pVolumes )
274     HRESULT SetOutputMatrix (
275         IXAudio2Voice* pDestinationVoice,
276         UINT32         SourceChannels,
277         UINT32         DestinationChannels,
278         FLOAT*         pLevelMatrix,
279         UINT32         OperationSet    )
280     void GetOutputMatrix (
281         IXAudio2Voice* pDestinationVoice,
282         UINT32         SourceChannels,
283         UINT32         DestinationChannels,
284         FLOAT*         pLevelMatrix )
285     void DestroyVoice (  ) ;
286
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 ) ;
298
299 COM-INTERFACE: IXAudio2SubmixVoice IXAudio2Voice {00000000-0000-0000-0000-000000000000} ;
300 COM-INTERFACE: IXAudio2MasteringVoice IXAudio2Voice {00000000-0000-0000-0000-000000000000} ;
301     
302 COM-INTERFACE: IXAudio2EngineCallback f {00000000-0000-0000-0000-000000000000}
303     void OnProcessingPassStart (   )
304     void OnProcessingPassEnd (   )
305     void OnCriticalError ( HRESULT Error ) ;
306
307 COM-INTERFACE: IXAudio2VoiceCallback f {00000000-0000-0000-0000-000000000000}
308     void OnVoiceProcessingPassStart ( UINT32 BytesRequired )
309     void OnVoiceProcessingPassEnd (   )
310     void OnStreamEnd (   )
311     void OnBufferStart ( void* pBufferContext )
312     void OnBufferEnd ( void* pBufferContext )
313     void OnLoopEnd ( void* pBufferContext )
314     void OnVoiceError ( void* pBufferContext, HRESULT Error ) ;