xaudio2.h (79051B) - Raw
1 /*** Autogenerated by WIDL 10.4 from include/xaudio2.idl - Do not edit ***/ 2 3 #ifdef _WIN32 4 #ifndef __REQUIRED_RPCNDR_H_VERSION__ 5 #define __REQUIRED_RPCNDR_H_VERSION__ 475 6 #endif 7 #include <rpc.h> 8 #include <rpcndr.h> 9 #endif 10 11 #ifndef COM_NO_WINDOWS_H 12 #include <windows.h> 13 #include <ole2.h> 14 #endif 15 16 #ifndef __xaudio2_h__ 17 #define __xaudio2_h__ 18 19 /* Forward declarations */ 20 21 #ifndef __IXAudio2EngineCallback_FWD_DEFINED__ 22 #define __IXAudio2EngineCallback_FWD_DEFINED__ 23 typedef interface IXAudio2EngineCallback IXAudio2EngineCallback; 24 #ifdef __cplusplus 25 interface IXAudio2EngineCallback; 26 #endif /* __cplusplus */ 27 #endif 28 29 #ifndef __IXAudio2Voice_FWD_DEFINED__ 30 #define __IXAudio2Voice_FWD_DEFINED__ 31 typedef interface IXAudio2Voice IXAudio2Voice; 32 #ifdef __cplusplus 33 interface IXAudio2Voice; 34 #endif /* __cplusplus */ 35 #endif 36 37 #ifndef __IXAudio2SourceVoice_FWD_DEFINED__ 38 #define __IXAudio2SourceVoice_FWD_DEFINED__ 39 typedef interface IXAudio2SourceVoice IXAudio2SourceVoice; 40 #ifdef __cplusplus 41 interface IXAudio2SourceVoice; 42 #endif /* __cplusplus */ 43 #endif 44 45 #ifndef __IXAudio2SubmixVoice_FWD_DEFINED__ 46 #define __IXAudio2SubmixVoice_FWD_DEFINED__ 47 typedef interface IXAudio2SubmixVoice IXAudio2SubmixVoice; 48 #ifdef __cplusplus 49 interface IXAudio2SubmixVoice; 50 #endif /* __cplusplus */ 51 #endif 52 53 #ifndef __IXAudio2MasteringVoice_FWD_DEFINED__ 54 #define __IXAudio2MasteringVoice_FWD_DEFINED__ 55 typedef interface IXAudio2MasteringVoice IXAudio2MasteringVoice; 56 #ifdef __cplusplus 57 interface IXAudio2MasteringVoice; 58 #endif /* __cplusplus */ 59 #endif 60 61 #ifndef __IXAudio2VoiceCallback_FWD_DEFINED__ 62 #define __IXAudio2VoiceCallback_FWD_DEFINED__ 63 typedef interface IXAudio2VoiceCallback IXAudio2VoiceCallback; 64 #ifdef __cplusplus 65 interface IXAudio2VoiceCallback; 66 #endif /* __cplusplus */ 67 #endif 68 69 #ifndef __IXAudio2_FWD_DEFINED__ 70 #define __IXAudio2_FWD_DEFINED__ 71 typedef interface IXAudio2 IXAudio2; 72 #ifdef __cplusplus 73 interface IXAudio2; 74 #endif /* __cplusplus */ 75 #endif 76 77 #ifndef __IXAudio2Extension_FWD_DEFINED__ 78 #define __IXAudio2Extension_FWD_DEFINED__ 79 typedef interface IXAudio2Extension IXAudio2Extension; 80 #ifdef __cplusplus 81 interface IXAudio2Extension; 82 #endif /* __cplusplus */ 83 #endif 84 85 /* Headers for imported files */ 86 87 #include <unknwn.h> 88 #include <mmdeviceapi.h> 89 #include <audiosessiontypes.h> 90 #include <mmreg.h> 91 92 #ifdef __cplusplus 93 extern "C" { 94 #endif 95 96 #pragma pack(push,1) 97 #ifndef __IXAudio2Voice_FWD_DEFINED__ 98 #define __IXAudio2Voice_FWD_DEFINED__ 99 typedef interface IXAudio2Voice IXAudio2Voice; 100 #ifdef __cplusplus 101 interface IXAudio2Voice; 102 #endif /* __cplusplus */ 103 #endif 104 105 typedef enum XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER { 106 Processor1 = 0x1, 107 Processor2 = 0x2, 108 Processor3 = 0x4, 109 Processor4 = 0x8, 110 Processor5 = 0x10, 111 Processor6 = 0x20, 112 Processor7 = 0x40, 113 Processor8 = 0x80, 114 Processor9 = 0x100, 115 Processor10 = 0x200, 116 Processor11 = 0x400, 117 Processor12 = 0x800, 118 Processor13 = 0x1000, 119 Processor14 = 0x2000, 120 Processor15 = 0x4000, 121 Processor16 = 0x8000, 122 Processor17 = 0x10000, 123 Processor18 = 0x20000, 124 Processor19 = 0x40000, 125 Processor20 = 0x80000, 126 Processor21 = 0x100000, 127 Processor22 = 0x200000, 128 Processor23 = 0x400000, 129 Processor24 = 0x800000, 130 Processor25 = 0x1000000, 131 Processor26 = 0x2000000, 132 Processor27 = 0x4000000, 133 Processor28 = 0x8000000, 134 Processor29 = 0x10000000, 135 Processor30 = 0x20000000, 136 Processor31 = 0x40000000, 137 Processor32 = 0x80000000, 138 XAUDIO2_ANY_PROCESSOR = 0xffffffff, 139 XAUDIO2_DEFAULT_PROCESSOR = XAUDIO2_ANY_PROCESSOR 140 } XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER; 141 typedef enum XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER XAUDIO2_PROCESSOR; 142 typedef struct XAUDIO2_PERFORMANCE_DATA { 143 UINT64 AudioCyclesSinceLastQuery; 144 UINT64 TotalCyclesSinceLastQuery; 145 UINT32 MinimumCyclesPerQuantum; 146 UINT32 MaximumCyclesPerQuantum; 147 UINT32 MemoryUsageInBytes; 148 UINT32 CurrentLatencyInSamples; 149 UINT32 GlitchesSinceEngineStarted; 150 UINT32 ActiveSourceVoiceCount; 151 UINT32 TotalSourceVoiceCount; 152 UINT32 ActiveSubmixVoiceCount; 153 UINT32 ActiveResamplerCount; 154 UINT32 ActiveMatrixMixCount; 155 UINT32 ActiveXmaSourceVoices; 156 UINT32 ActiveXmaStreams; 157 } XAUDIO2_PERFORMANCE_DATA; 158 typedef enum XAUDIO2_DEVICE_ROLE { 159 NotDefaultDevice = 0x0, 160 DefaultConsoleDevice = 0x1, 161 DefaultMultimediaDevice = 0x2, 162 DefaultCommunicationsDevice = 0x4, 163 DefaultGameDevice = 0x8, 164 GlobalDefaultDevice = 0xf, 165 InvalidDeviceRole = ~GlobalDefaultDevice 166 } XAUDIO2_DEVICE_ROLE; 167 typedef struct XAUDIO2_VOICE_DETAILS { 168 UINT32 CreationFlags; 169 UINT32 ActiveFlags; 170 UINT32 InputChannels; 171 UINT32 InputSampleRate; 172 } XAUDIO2_VOICE_DETAILS; 173 typedef struct XAUDIO2_SEND_DESCRIPTOR { 174 UINT32 Flags; 175 IXAudio2Voice *pOutputVoice; 176 } XAUDIO2_SEND_DESCRIPTOR; 177 typedef struct XAUDIO2_VOICE_SENDS { 178 UINT32 SendCount; 179 XAUDIO2_SEND_DESCRIPTOR *pSends; 180 } XAUDIO2_VOICE_SENDS; 181 typedef struct XAUDIO2_EFFECT_DESCRIPTOR { 182 IUnknown *pEffect; 183 WINBOOL InitialState; 184 UINT32 OutputChannels; 185 } XAUDIO2_EFFECT_DESCRIPTOR; 186 typedef struct XAUDIO2_EFFECT_CHAIN { 187 UINT32 EffectCount; 188 XAUDIO2_EFFECT_DESCRIPTOR *pEffectDescriptors; 189 } XAUDIO2_EFFECT_CHAIN; 190 #define XAUDIO2_MAX_BUFFER_BYTES (0x80000000) 191 192 #define XAUDIO2_MAX_QUEUED_BUFFERS (64) 193 194 #define XAUDIO2_MAX_BUFFERS_SYSTEM (2) 195 196 #define XAUDIO2_MAX_AUDIO_CHANNELS (64) 197 198 #define XAUDIO2_MIN_SAMPLE_RATE (1000) 199 200 #define XAUDIO2_MAX_SAMPLE_RATE (200000) 201 202 #define XAUDIO2_MAX_VOLUME_LEVEL (16777216.0000000) 203 204 #define XAUDIO2_MIN_FREQ_RATIO (1 / 1024.00000000000) 205 206 #define XAUDIO2_MAX_FREQ_RATIO (1024.00000000000) 207 208 #define XAUDIO2_DEFAULT_FREQ_RATIO (2.00000000000000) 209 210 #define XAUDIO2_MAX_FILTER_ONEOVERQ (1.50000000000000) 211 212 #define XAUDIO2_MAX_FILTER_FREQUENCY (1.00000000000000) 213 214 #define XAUDIO2_MAX_LOOP_COUNT (254) 215 216 #define XAUDIO2_COMMIT_NOW (0) 217 218 #define XAUDIO2_COMMIT_ALL (0) 219 220 #define XAUDIO2_INVALID_OPSET (0xffffffff) 221 222 #define XAUDIO2_NO_LOOP_REGION (0) 223 224 #define XAUDIO2_LOOP_INFINITE (255) 225 226 #define XAUDIO2_DEFAULT_CHANNELS (0) 227 228 #define XAUDIO2_DEFAULT_SAMPLERATE (0) 229 230 /***************************************************************************** 231 * IXAudio2EngineCallback interface 232 */ 233 #ifndef __IXAudio2EngineCallback_INTERFACE_DEFINED__ 234 #define __IXAudio2EngineCallback_INTERFACE_DEFINED__ 235 236 #if defined(__cplusplus) && !defined(CINTERFACE) 237 interface IXAudio2EngineCallback 238 { 239 240 BEGIN_INTERFACE 241 242 virtual void STDMETHODCALLTYPE OnProcessingPassStart( 243 ) = 0; 244 245 virtual void STDMETHODCALLTYPE OnProcessingPassEnd( 246 ) = 0; 247 248 virtual void STDMETHODCALLTYPE OnCriticalError( 249 HRESULT Error) = 0; 250 251 END_INTERFACE 252 253 }; 254 #else 255 typedef struct IXAudio2EngineCallbackVtbl { 256 BEGIN_INTERFACE 257 258 /*** IXAudio2EngineCallback methods ***/ 259 void (STDMETHODCALLTYPE *OnProcessingPassStart)( 260 IXAudio2EngineCallback *This); 261 262 void (STDMETHODCALLTYPE *OnProcessingPassEnd)( 263 IXAudio2EngineCallback *This); 264 265 void (STDMETHODCALLTYPE *OnCriticalError)( 266 IXAudio2EngineCallback *This, 267 HRESULT Error); 268 269 END_INTERFACE 270 } IXAudio2EngineCallbackVtbl; 271 272 interface IXAudio2EngineCallback { 273 CONST_VTBL IXAudio2EngineCallbackVtbl* lpVtbl; 274 }; 275 276 #ifdef COBJMACROS 277 #ifndef WIDL_C_INLINE_WRAPPERS 278 /*** IXAudio2EngineCallback methods ***/ 279 #define IXAudio2EngineCallback_OnProcessingPassStart(This) (This)->lpVtbl->OnProcessingPassStart(This) 280 #define IXAudio2EngineCallback_OnProcessingPassEnd(This) (This)->lpVtbl->OnProcessingPassEnd(This) 281 #define IXAudio2EngineCallback_OnCriticalError(This,Error) (This)->lpVtbl->OnCriticalError(This,Error) 282 #else 283 /*** IXAudio2EngineCallback methods ***/ 284 static inline void IXAudio2EngineCallback_OnProcessingPassStart(IXAudio2EngineCallback* This) { 285 This->lpVtbl->OnProcessingPassStart(This); 286 } 287 static inline void IXAudio2EngineCallback_OnProcessingPassEnd(IXAudio2EngineCallback* This) { 288 This->lpVtbl->OnProcessingPassEnd(This); 289 } 290 static inline void IXAudio2EngineCallback_OnCriticalError(IXAudio2EngineCallback* This,HRESULT Error) { 291 This->lpVtbl->OnCriticalError(This,Error); 292 } 293 #endif 294 #endif 295 296 #endif 297 298 299 #endif /* __IXAudio2EngineCallback_INTERFACE_DEFINED__ */ 300 301 typedef enum XAUDIO2_FILTER_TYPE { 302 LowPassFilter = 0, 303 BandPassFilter = 1, 304 HighPassFilter = 2, 305 NotchFilter = 3 306 } XAUDIO2_FILTER_TYPE; 307 typedef struct XAUDIO2_FILTER_PARAMETERS { 308 XAUDIO2_FILTER_TYPE Type; 309 float Frequency; 310 float OneOverQ; 311 } XAUDIO2_FILTER_PARAMETERS; 312 /***************************************************************************** 313 * IXAudio2Voice interface 314 */ 315 #ifndef __IXAudio2Voice_INTERFACE_DEFINED__ 316 #define __IXAudio2Voice_INTERFACE_DEFINED__ 317 318 #if defined(__cplusplus) && !defined(CINTERFACE) 319 interface IXAudio2Voice 320 { 321 322 BEGIN_INTERFACE 323 324 virtual void STDMETHODCALLTYPE GetVoiceDetails( 325 XAUDIO2_VOICE_DETAILS *pVoiceDetails) = 0; 326 327 virtual HRESULT STDMETHODCALLTYPE SetOutputVoices( 328 const XAUDIO2_VOICE_SENDS *pSendList) = 0; 329 330 virtual HRESULT STDMETHODCALLTYPE SetEffectChain( 331 const XAUDIO2_EFFECT_CHAIN *pEffectChain) = 0; 332 333 virtual HRESULT STDMETHODCALLTYPE EnableEffect( 334 UINT32 EffectIndex, 335 UINT32 OperationSet = XAUDIO2_COMMIT_NOW) = 0; 336 337 virtual HRESULT STDMETHODCALLTYPE DisableEffect( 338 UINT32 EffectIndex, 339 UINT32 OperationSet = XAUDIO2_COMMIT_NOW) = 0; 340 341 virtual void STDMETHODCALLTYPE GetEffectState( 342 UINT32 EffectIndex, 343 WINBOOL *pEnabled) = 0; 344 345 virtual HRESULT STDMETHODCALLTYPE SetEffectParameters( 346 UINT32 EffectIndex, 347 const void *pParameters, 348 UINT32 ParametersByteSize, 349 UINT32 OperationSet = XAUDIO2_COMMIT_NOW) = 0; 350 351 virtual HRESULT STDMETHODCALLTYPE GetEffectParameters( 352 UINT32 EffectIndex, 353 void *pParameters, 354 UINT32 ParametersByteSize) = 0; 355 356 virtual HRESULT STDMETHODCALLTYPE SetFilterParameters( 357 const XAUDIO2_FILTER_PARAMETERS *pParameters, 358 UINT32 OperationSet = XAUDIO2_COMMIT_NOW) = 0; 359 360 virtual void STDMETHODCALLTYPE GetFilterParameters( 361 XAUDIO2_FILTER_PARAMETERS *pParameters) = 0; 362 363 virtual HRESULT STDMETHODCALLTYPE SetOutputFilterParameters( 364 IXAudio2Voice *pDestinationVoice, 365 const XAUDIO2_FILTER_PARAMETERS *pParameters, 366 UINT32 OperationSet = XAUDIO2_COMMIT_NOW) = 0; 367 368 virtual void STDMETHODCALLTYPE GetOutputFilterParameters( 369 IXAudio2Voice *pDestinationVoice, 370 XAUDIO2_FILTER_PARAMETERS *pParameters) = 0; 371 372 virtual HRESULT STDMETHODCALLTYPE SetVolume( 373 float Volume, 374 UINT32 OperationSet = XAUDIO2_COMMIT_NOW) = 0; 375 376 virtual void STDMETHODCALLTYPE GetVolume( 377 float *pVolume) = 0; 378 379 virtual HRESULT STDMETHODCALLTYPE SetChannelVolumes( 380 UINT32 Channels, 381 const float *pVolumes, 382 UINT32 OperationSet = XAUDIO2_COMMIT_NOW) = 0; 383 384 virtual void STDMETHODCALLTYPE GetChannelVolumes( 385 UINT32 Channels, 386 float *pVolumes) = 0; 387 388 virtual HRESULT STDMETHODCALLTYPE SetOutputMatrix( 389 IXAudio2Voice *pDestinationVoice, 390 UINT32 SourceChannels, 391 UINT32 DestinationChannels, 392 const float *pLevelMatrix, 393 UINT32 OperationSet = XAUDIO2_COMMIT_NOW) = 0; 394 395 virtual void STDMETHODCALLTYPE GetOutputMatrix( 396 IXAudio2Voice *pDestinationVoice, 397 UINT32 SourceChannels, 398 UINT32 DestinationChannels, 399 float *pLevelMatrix) = 0; 400 401 virtual void STDMETHODCALLTYPE DestroyVoice( 402 ) = 0; 403 404 END_INTERFACE 405 406 }; 407 #else 408 typedef struct IXAudio2VoiceVtbl { 409 BEGIN_INTERFACE 410 411 /*** IXAudio2Voice methods ***/ 412 void (STDMETHODCALLTYPE *GetVoiceDetails)( 413 IXAudio2Voice *This, 414 XAUDIO2_VOICE_DETAILS *pVoiceDetails); 415 416 HRESULT (STDMETHODCALLTYPE *SetOutputVoices)( 417 IXAudio2Voice *This, 418 const XAUDIO2_VOICE_SENDS *pSendList); 419 420 HRESULT (STDMETHODCALLTYPE *SetEffectChain)( 421 IXAudio2Voice *This, 422 const XAUDIO2_EFFECT_CHAIN *pEffectChain); 423 424 HRESULT (STDMETHODCALLTYPE *EnableEffect)( 425 IXAudio2Voice *This, 426 UINT32 EffectIndex, 427 UINT32 OperationSet); 428 429 HRESULT (STDMETHODCALLTYPE *DisableEffect)( 430 IXAudio2Voice *This, 431 UINT32 EffectIndex, 432 UINT32 OperationSet); 433 434 void (STDMETHODCALLTYPE *GetEffectState)( 435 IXAudio2Voice *This, 436 UINT32 EffectIndex, 437 WINBOOL *pEnabled); 438 439 HRESULT (STDMETHODCALLTYPE *SetEffectParameters)( 440 IXAudio2Voice *This, 441 UINT32 EffectIndex, 442 const void *pParameters, 443 UINT32 ParametersByteSize, 444 UINT32 OperationSet); 445 446 HRESULT (STDMETHODCALLTYPE *GetEffectParameters)( 447 IXAudio2Voice *This, 448 UINT32 EffectIndex, 449 void *pParameters, 450 UINT32 ParametersByteSize); 451 452 HRESULT (STDMETHODCALLTYPE *SetFilterParameters)( 453 IXAudio2Voice *This, 454 const XAUDIO2_FILTER_PARAMETERS *pParameters, 455 UINT32 OperationSet); 456 457 void (STDMETHODCALLTYPE *GetFilterParameters)( 458 IXAudio2Voice *This, 459 XAUDIO2_FILTER_PARAMETERS *pParameters); 460 461 HRESULT (STDMETHODCALLTYPE *SetOutputFilterParameters)( 462 IXAudio2Voice *This, 463 IXAudio2Voice *pDestinationVoice, 464 const XAUDIO2_FILTER_PARAMETERS *pParameters, 465 UINT32 OperationSet); 466 467 void (STDMETHODCALLTYPE *GetOutputFilterParameters)( 468 IXAudio2Voice *This, 469 IXAudio2Voice *pDestinationVoice, 470 XAUDIO2_FILTER_PARAMETERS *pParameters); 471 472 HRESULT (STDMETHODCALLTYPE *SetVolume)( 473 IXAudio2Voice *This, 474 float Volume, 475 UINT32 OperationSet); 476 477 void (STDMETHODCALLTYPE *GetVolume)( 478 IXAudio2Voice *This, 479 float *pVolume); 480 481 HRESULT (STDMETHODCALLTYPE *SetChannelVolumes)( 482 IXAudio2Voice *This, 483 UINT32 Channels, 484 const float *pVolumes, 485 UINT32 OperationSet); 486 487 void (STDMETHODCALLTYPE *GetChannelVolumes)( 488 IXAudio2Voice *This, 489 UINT32 Channels, 490 float *pVolumes); 491 492 HRESULT (STDMETHODCALLTYPE *SetOutputMatrix)( 493 IXAudio2Voice *This, 494 IXAudio2Voice *pDestinationVoice, 495 UINT32 SourceChannels, 496 UINT32 DestinationChannels, 497 const float *pLevelMatrix, 498 UINT32 OperationSet); 499 500 void (STDMETHODCALLTYPE *GetOutputMatrix)( 501 IXAudio2Voice *This, 502 IXAudio2Voice *pDestinationVoice, 503 UINT32 SourceChannels, 504 UINT32 DestinationChannels, 505 float *pLevelMatrix); 506 507 void (STDMETHODCALLTYPE *DestroyVoice)( 508 IXAudio2Voice *This); 509 510 END_INTERFACE 511 } IXAudio2VoiceVtbl; 512 513 interface IXAudio2Voice { 514 CONST_VTBL IXAudio2VoiceVtbl* lpVtbl; 515 }; 516 517 #ifdef COBJMACROS 518 #ifndef WIDL_C_INLINE_WRAPPERS 519 /*** IXAudio2Voice methods ***/ 520 #define IXAudio2Voice_GetVoiceDetails(This,pVoiceDetails) (This)->lpVtbl->GetVoiceDetails(This,pVoiceDetails) 521 #define IXAudio2Voice_SetOutputVoices(This,pSendList) (This)->lpVtbl->SetOutputVoices(This,pSendList) 522 #define IXAudio2Voice_SetEffectChain(This,pEffectChain) (This)->lpVtbl->SetEffectChain(This,pEffectChain) 523 #define IXAudio2Voice_EnableEffect(This,EffectIndex,OperationSet) (This)->lpVtbl->EnableEffect(This,EffectIndex,OperationSet) 524 #define IXAudio2Voice_DisableEffect(This,EffectIndex,OperationSet) (This)->lpVtbl->DisableEffect(This,EffectIndex,OperationSet) 525 #define IXAudio2Voice_GetEffectState(This,EffectIndex,pEnabled) (This)->lpVtbl->GetEffectState(This,EffectIndex,pEnabled) 526 #define IXAudio2Voice_SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet) (This)->lpVtbl->SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet) 527 #define IXAudio2Voice_GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize) (This)->lpVtbl->GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize) 528 #define IXAudio2Voice_SetFilterParameters(This,pParameters,OperationSet) (This)->lpVtbl->SetFilterParameters(This,pParameters,OperationSet) 529 #define IXAudio2Voice_GetFilterParameters(This,pParameters) (This)->lpVtbl->GetFilterParameters(This,pParameters) 530 #define IXAudio2Voice_SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet) (This)->lpVtbl->SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet) 531 #define IXAudio2Voice_GetOutputFilterParameters(This,pDestinationVoice,pParameters) (This)->lpVtbl->GetOutputFilterParameters(This,pDestinationVoice,pParameters) 532 #define IXAudio2Voice_SetVolume(This,Volume,OperationSet) (This)->lpVtbl->SetVolume(This,Volume,OperationSet) 533 #define IXAudio2Voice_GetVolume(This,pVolume) (This)->lpVtbl->GetVolume(This,pVolume) 534 #define IXAudio2Voice_SetChannelVolumes(This,Channels,pVolumes,OperationSet) (This)->lpVtbl->SetChannelVolumes(This,Channels,pVolumes,OperationSet) 535 #define IXAudio2Voice_GetChannelVolumes(This,Channels,pVolumes) (This)->lpVtbl->GetChannelVolumes(This,Channels,pVolumes) 536 #define IXAudio2Voice_SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet) (This)->lpVtbl->SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet) 537 #define IXAudio2Voice_GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix) (This)->lpVtbl->GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix) 538 #define IXAudio2Voice_DestroyVoice(This) (This)->lpVtbl->DestroyVoice(This) 539 #else 540 /*** IXAudio2Voice methods ***/ 541 static inline void IXAudio2Voice_GetVoiceDetails(IXAudio2Voice* This,XAUDIO2_VOICE_DETAILS *pVoiceDetails) { 542 This->lpVtbl->GetVoiceDetails(This,pVoiceDetails); 543 } 544 static inline HRESULT IXAudio2Voice_SetOutputVoices(IXAudio2Voice* This,const XAUDIO2_VOICE_SENDS *pSendList) { 545 return This->lpVtbl->SetOutputVoices(This,pSendList); 546 } 547 static inline HRESULT IXAudio2Voice_SetEffectChain(IXAudio2Voice* This,const XAUDIO2_EFFECT_CHAIN *pEffectChain) { 548 return This->lpVtbl->SetEffectChain(This,pEffectChain); 549 } 550 static inline HRESULT IXAudio2Voice_EnableEffect(IXAudio2Voice* This,UINT32 EffectIndex,UINT32 OperationSet) { 551 return This->lpVtbl->EnableEffect(This,EffectIndex,OperationSet); 552 } 553 static inline HRESULT IXAudio2Voice_DisableEffect(IXAudio2Voice* This,UINT32 EffectIndex,UINT32 OperationSet) { 554 return This->lpVtbl->DisableEffect(This,EffectIndex,OperationSet); 555 } 556 static inline void IXAudio2Voice_GetEffectState(IXAudio2Voice* This,UINT32 EffectIndex,WINBOOL *pEnabled) { 557 This->lpVtbl->GetEffectState(This,EffectIndex,pEnabled); 558 } 559 static inline HRESULT IXAudio2Voice_SetEffectParameters(IXAudio2Voice* This,UINT32 EffectIndex,const void *pParameters,UINT32 ParametersByteSize,UINT32 OperationSet) { 560 return This->lpVtbl->SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet); 561 } 562 static inline HRESULT IXAudio2Voice_GetEffectParameters(IXAudio2Voice* This,UINT32 EffectIndex,void *pParameters,UINT32 ParametersByteSize) { 563 return This->lpVtbl->GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize); 564 } 565 static inline HRESULT IXAudio2Voice_SetFilterParameters(IXAudio2Voice* This,const XAUDIO2_FILTER_PARAMETERS *pParameters,UINT32 OperationSet) { 566 return This->lpVtbl->SetFilterParameters(This,pParameters,OperationSet); 567 } 568 static inline void IXAudio2Voice_GetFilterParameters(IXAudio2Voice* This,XAUDIO2_FILTER_PARAMETERS *pParameters) { 569 This->lpVtbl->GetFilterParameters(This,pParameters); 570 } 571 static inline HRESULT IXAudio2Voice_SetOutputFilterParameters(IXAudio2Voice* This,IXAudio2Voice *pDestinationVoice,const XAUDIO2_FILTER_PARAMETERS *pParameters,UINT32 OperationSet) { 572 return This->lpVtbl->SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet); 573 } 574 static inline void IXAudio2Voice_GetOutputFilterParameters(IXAudio2Voice* This,IXAudio2Voice *pDestinationVoice,XAUDIO2_FILTER_PARAMETERS *pParameters) { 575 This->lpVtbl->GetOutputFilterParameters(This,pDestinationVoice,pParameters); 576 } 577 static inline HRESULT IXAudio2Voice_SetVolume(IXAudio2Voice* This,float Volume,UINT32 OperationSet) { 578 return This->lpVtbl->SetVolume(This,Volume,OperationSet); 579 } 580 static inline void IXAudio2Voice_GetVolume(IXAudio2Voice* This,float *pVolume) { 581 This->lpVtbl->GetVolume(This,pVolume); 582 } 583 static inline HRESULT IXAudio2Voice_SetChannelVolumes(IXAudio2Voice* This,UINT32 Channels,const float *pVolumes,UINT32 OperationSet) { 584 return This->lpVtbl->SetChannelVolumes(This,Channels,pVolumes,OperationSet); 585 } 586 static inline void IXAudio2Voice_GetChannelVolumes(IXAudio2Voice* This,UINT32 Channels,float *pVolumes) { 587 This->lpVtbl->GetChannelVolumes(This,Channels,pVolumes); 588 } 589 static inline HRESULT IXAudio2Voice_SetOutputMatrix(IXAudio2Voice* This,IXAudio2Voice *pDestinationVoice,UINT32 SourceChannels,UINT32 DestinationChannels,const float *pLevelMatrix,UINT32 OperationSet) { 590 return This->lpVtbl->SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet); 591 } 592 static inline void IXAudio2Voice_GetOutputMatrix(IXAudio2Voice* This,IXAudio2Voice *pDestinationVoice,UINT32 SourceChannels,UINT32 DestinationChannels,float *pLevelMatrix) { 593 This->lpVtbl->GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix); 594 } 595 static inline void IXAudio2Voice_DestroyVoice(IXAudio2Voice* This) { 596 This->lpVtbl->DestroyVoice(This); 597 } 598 #endif 599 #endif 600 601 #endif 602 603 604 #endif /* __IXAudio2Voice_INTERFACE_DEFINED__ */ 605 606 typedef struct XAUDIO2_BUFFER { 607 UINT32 Flags; 608 UINT32 AudioBytes; 609 const BYTE *pAudioData; 610 UINT32 PlayBegin; 611 UINT32 PlayLength; 612 UINT32 LoopBegin; 613 UINT32 LoopLength; 614 UINT32 LoopCount; 615 void *pContext; 616 } XAUDIO2_BUFFER; 617 typedef struct XAUDIO2_BUFFER_WMA { 618 const UINT32 *pDecodedPacketCumulativeBytes; 619 UINT32 PacketCount; 620 } XAUDIO2_BUFFER_WMA; 621 typedef struct XAUDIO2_VOICE_STATE { 622 void *pCurrentBufferContext; 623 UINT32 BuffersQueued; 624 UINT64 SamplesPlayed; 625 } XAUDIO2_VOICE_STATE; 626 /***************************************************************************** 627 * IXAudio2SourceVoice interface 628 */ 629 #ifndef __IXAudio2SourceVoice_INTERFACE_DEFINED__ 630 #define __IXAudio2SourceVoice_INTERFACE_DEFINED__ 631 632 #if defined(__cplusplus) && !defined(CINTERFACE) 633 interface IXAudio2SourceVoice : public IXAudio2Voice 634 { 635 virtual HRESULT STDMETHODCALLTYPE Start( 636 UINT32 Flags = 0, 637 UINT32 OperationSet = XAUDIO2_COMMIT_NOW) = 0; 638 639 virtual HRESULT STDMETHODCALLTYPE Stop( 640 UINT32 Flags = 0, 641 UINT32 OperationSet = XAUDIO2_COMMIT_NOW) = 0; 642 643 virtual HRESULT STDMETHODCALLTYPE SubmitSourceBuffer( 644 const XAUDIO2_BUFFER *pBuffer, 645 const XAUDIO2_BUFFER_WMA *pBufferWMA = 0) = 0; 646 647 virtual HRESULT STDMETHODCALLTYPE FlushSourceBuffers( 648 ) = 0; 649 650 virtual HRESULT STDMETHODCALLTYPE Discontinuity( 651 ) = 0; 652 653 virtual HRESULT STDMETHODCALLTYPE ExitLoop( 654 UINT32 OperationSet = XAUDIO2_COMMIT_NOW) = 0; 655 656 virtual void STDMETHODCALLTYPE GetState( 657 XAUDIO2_VOICE_STATE *pVoiceState, 658 UINT32 Flags = 0) = 0; 659 660 virtual HRESULT STDMETHODCALLTYPE SetFrequencyRatio( 661 float Ratio, 662 UINT32 OperationSet = XAUDIO2_COMMIT_NOW) = 0; 663 664 virtual void STDMETHODCALLTYPE GetFrequencyRatio( 665 float *pRatio) = 0; 666 667 virtual HRESULT STDMETHODCALLTYPE SetSourceSampleRate( 668 UINT32 NewSourceSampleRate) = 0; 669 670 }; 671 #else 672 typedef struct IXAudio2SourceVoiceVtbl { 673 BEGIN_INTERFACE 674 675 /*** IXAudio2Voice methods ***/ 676 void (STDMETHODCALLTYPE *GetVoiceDetails)( 677 IXAudio2SourceVoice *This, 678 XAUDIO2_VOICE_DETAILS *pVoiceDetails); 679 680 HRESULT (STDMETHODCALLTYPE *SetOutputVoices)( 681 IXAudio2SourceVoice *This, 682 const XAUDIO2_VOICE_SENDS *pSendList); 683 684 HRESULT (STDMETHODCALLTYPE *SetEffectChain)( 685 IXAudio2SourceVoice *This, 686 const XAUDIO2_EFFECT_CHAIN *pEffectChain); 687 688 HRESULT (STDMETHODCALLTYPE *EnableEffect)( 689 IXAudio2SourceVoice *This, 690 UINT32 EffectIndex, 691 UINT32 OperationSet); 692 693 HRESULT (STDMETHODCALLTYPE *DisableEffect)( 694 IXAudio2SourceVoice *This, 695 UINT32 EffectIndex, 696 UINT32 OperationSet); 697 698 void (STDMETHODCALLTYPE *GetEffectState)( 699 IXAudio2SourceVoice *This, 700 UINT32 EffectIndex, 701 WINBOOL *pEnabled); 702 703 HRESULT (STDMETHODCALLTYPE *SetEffectParameters)( 704 IXAudio2SourceVoice *This, 705 UINT32 EffectIndex, 706 const void *pParameters, 707 UINT32 ParametersByteSize, 708 UINT32 OperationSet); 709 710 HRESULT (STDMETHODCALLTYPE *GetEffectParameters)( 711 IXAudio2SourceVoice *This, 712 UINT32 EffectIndex, 713 void *pParameters, 714 UINT32 ParametersByteSize); 715 716 HRESULT (STDMETHODCALLTYPE *SetFilterParameters)( 717 IXAudio2SourceVoice *This, 718 const XAUDIO2_FILTER_PARAMETERS *pParameters, 719 UINT32 OperationSet); 720 721 void (STDMETHODCALLTYPE *GetFilterParameters)( 722 IXAudio2SourceVoice *This, 723 XAUDIO2_FILTER_PARAMETERS *pParameters); 724 725 HRESULT (STDMETHODCALLTYPE *SetOutputFilterParameters)( 726 IXAudio2SourceVoice *This, 727 IXAudio2Voice *pDestinationVoice, 728 const XAUDIO2_FILTER_PARAMETERS *pParameters, 729 UINT32 OperationSet); 730 731 void (STDMETHODCALLTYPE *GetOutputFilterParameters)( 732 IXAudio2SourceVoice *This, 733 IXAudio2Voice *pDestinationVoice, 734 XAUDIO2_FILTER_PARAMETERS *pParameters); 735 736 HRESULT (STDMETHODCALLTYPE *SetVolume)( 737 IXAudio2SourceVoice *This, 738 float Volume, 739 UINT32 OperationSet); 740 741 void (STDMETHODCALLTYPE *GetVolume)( 742 IXAudio2SourceVoice *This, 743 float *pVolume); 744 745 HRESULT (STDMETHODCALLTYPE *SetChannelVolumes)( 746 IXAudio2SourceVoice *This, 747 UINT32 Channels, 748 const float *pVolumes, 749 UINT32 OperationSet); 750 751 void (STDMETHODCALLTYPE *GetChannelVolumes)( 752 IXAudio2SourceVoice *This, 753 UINT32 Channels, 754 float *pVolumes); 755 756 HRESULT (STDMETHODCALLTYPE *SetOutputMatrix)( 757 IXAudio2SourceVoice *This, 758 IXAudio2Voice *pDestinationVoice, 759 UINT32 SourceChannels, 760 UINT32 DestinationChannels, 761 const float *pLevelMatrix, 762 UINT32 OperationSet); 763 764 void (STDMETHODCALLTYPE *GetOutputMatrix)( 765 IXAudio2SourceVoice *This, 766 IXAudio2Voice *pDestinationVoice, 767 UINT32 SourceChannels, 768 UINT32 DestinationChannels, 769 float *pLevelMatrix); 770 771 void (STDMETHODCALLTYPE *DestroyVoice)( 772 IXAudio2SourceVoice *This); 773 774 /*** IXAudio2SourceVoice methods ***/ 775 HRESULT (STDMETHODCALLTYPE *Start)( 776 IXAudio2SourceVoice *This, 777 UINT32 Flags, 778 UINT32 OperationSet); 779 780 HRESULT (STDMETHODCALLTYPE *Stop)( 781 IXAudio2SourceVoice *This, 782 UINT32 Flags, 783 UINT32 OperationSet); 784 785 HRESULT (STDMETHODCALLTYPE *SubmitSourceBuffer)( 786 IXAudio2SourceVoice *This, 787 const XAUDIO2_BUFFER *pBuffer, 788 const XAUDIO2_BUFFER_WMA *pBufferWMA); 789 790 HRESULT (STDMETHODCALLTYPE *FlushSourceBuffers)( 791 IXAudio2SourceVoice *This); 792 793 HRESULT (STDMETHODCALLTYPE *Discontinuity)( 794 IXAudio2SourceVoice *This); 795 796 HRESULT (STDMETHODCALLTYPE *ExitLoop)( 797 IXAudio2SourceVoice *This, 798 UINT32 OperationSet); 799 800 void (STDMETHODCALLTYPE *GetState)( 801 IXAudio2SourceVoice *This, 802 XAUDIO2_VOICE_STATE *pVoiceState, 803 UINT32 Flags); 804 805 HRESULT (STDMETHODCALLTYPE *SetFrequencyRatio)( 806 IXAudio2SourceVoice *This, 807 float Ratio, 808 UINT32 OperationSet); 809 810 void (STDMETHODCALLTYPE *GetFrequencyRatio)( 811 IXAudio2SourceVoice *This, 812 float *pRatio); 813 814 HRESULT (STDMETHODCALLTYPE *SetSourceSampleRate)( 815 IXAudio2SourceVoice *This, 816 UINT32 NewSourceSampleRate); 817 818 END_INTERFACE 819 } IXAudio2SourceVoiceVtbl; 820 821 interface IXAudio2SourceVoice { 822 CONST_VTBL IXAudio2SourceVoiceVtbl* lpVtbl; 823 }; 824 825 #ifdef COBJMACROS 826 #ifndef WIDL_C_INLINE_WRAPPERS 827 /*** IXAudio2Voice methods ***/ 828 #define IXAudio2SourceVoice_GetVoiceDetails(This,pVoiceDetails) (This)->lpVtbl->GetVoiceDetails(This,pVoiceDetails) 829 #define IXAudio2SourceVoice_SetOutputVoices(This,pSendList) (This)->lpVtbl->SetOutputVoices(This,pSendList) 830 #define IXAudio2SourceVoice_SetEffectChain(This,pEffectChain) (This)->lpVtbl->SetEffectChain(This,pEffectChain) 831 #define IXAudio2SourceVoice_EnableEffect(This,EffectIndex,OperationSet) (This)->lpVtbl->EnableEffect(This,EffectIndex,OperationSet) 832 #define IXAudio2SourceVoice_DisableEffect(This,EffectIndex,OperationSet) (This)->lpVtbl->DisableEffect(This,EffectIndex,OperationSet) 833 #define IXAudio2SourceVoice_GetEffectState(This,EffectIndex,pEnabled) (This)->lpVtbl->GetEffectState(This,EffectIndex,pEnabled) 834 #define IXAudio2SourceVoice_SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet) (This)->lpVtbl->SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet) 835 #define IXAudio2SourceVoice_GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize) (This)->lpVtbl->GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize) 836 #define IXAudio2SourceVoice_SetFilterParameters(This,pParameters,OperationSet) (This)->lpVtbl->SetFilterParameters(This,pParameters,OperationSet) 837 #define IXAudio2SourceVoice_GetFilterParameters(This,pParameters) (This)->lpVtbl->GetFilterParameters(This,pParameters) 838 #define IXAudio2SourceVoice_SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet) (This)->lpVtbl->SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet) 839 #define IXAudio2SourceVoice_GetOutputFilterParameters(This,pDestinationVoice,pParameters) (This)->lpVtbl->GetOutputFilterParameters(This,pDestinationVoice,pParameters) 840 #define IXAudio2SourceVoice_SetVolume(This,Volume,OperationSet) (This)->lpVtbl->SetVolume(This,Volume,OperationSet) 841 #define IXAudio2SourceVoice_GetVolume(This,pVolume) (This)->lpVtbl->GetVolume(This,pVolume) 842 #define IXAudio2SourceVoice_SetChannelVolumes(This,Channels,pVolumes,OperationSet) (This)->lpVtbl->SetChannelVolumes(This,Channels,pVolumes,OperationSet) 843 #define IXAudio2SourceVoice_GetChannelVolumes(This,Channels,pVolumes) (This)->lpVtbl->GetChannelVolumes(This,Channels,pVolumes) 844 #define IXAudio2SourceVoice_SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet) (This)->lpVtbl->SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet) 845 #define IXAudio2SourceVoice_GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix) (This)->lpVtbl->GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix) 846 #define IXAudio2SourceVoice_DestroyVoice(This) (This)->lpVtbl->DestroyVoice(This) 847 /*** IXAudio2SourceVoice methods ***/ 848 #define IXAudio2SourceVoice_Start(This,Flags,OperationSet) (This)->lpVtbl->Start(This,Flags,OperationSet) 849 #define IXAudio2SourceVoice_Stop(This,Flags,OperationSet) (This)->lpVtbl->Stop(This,Flags,OperationSet) 850 #define IXAudio2SourceVoice_SubmitSourceBuffer(This,pBuffer,pBufferWMA) (This)->lpVtbl->SubmitSourceBuffer(This,pBuffer,pBufferWMA) 851 #define IXAudio2SourceVoice_FlushSourceBuffers(This) (This)->lpVtbl->FlushSourceBuffers(This) 852 #define IXAudio2SourceVoice_Discontinuity(This) (This)->lpVtbl->Discontinuity(This) 853 #define IXAudio2SourceVoice_ExitLoop(This,OperationSet) (This)->lpVtbl->ExitLoop(This,OperationSet) 854 #define IXAudio2SourceVoice_GetState(This,pVoiceState,Flags) (This)->lpVtbl->GetState(This,pVoiceState,Flags) 855 #define IXAudio2SourceVoice_SetFrequencyRatio(This,Ratio,OperationSet) (This)->lpVtbl->SetFrequencyRatio(This,Ratio,OperationSet) 856 #define IXAudio2SourceVoice_GetFrequencyRatio(This,pRatio) (This)->lpVtbl->GetFrequencyRatio(This,pRatio) 857 #define IXAudio2SourceVoice_SetSourceSampleRate(This,NewSourceSampleRate) (This)->lpVtbl->SetSourceSampleRate(This,NewSourceSampleRate) 858 #else 859 /*** IXAudio2Voice methods ***/ 860 static inline void IXAudio2SourceVoice_GetVoiceDetails(IXAudio2SourceVoice* This,XAUDIO2_VOICE_DETAILS *pVoiceDetails) { 861 This->lpVtbl->GetVoiceDetails(This,pVoiceDetails); 862 } 863 static inline HRESULT IXAudio2SourceVoice_SetOutputVoices(IXAudio2SourceVoice* This,const XAUDIO2_VOICE_SENDS *pSendList) { 864 return This->lpVtbl->SetOutputVoices(This,pSendList); 865 } 866 static inline HRESULT IXAudio2SourceVoice_SetEffectChain(IXAudio2SourceVoice* This,const XAUDIO2_EFFECT_CHAIN *pEffectChain) { 867 return This->lpVtbl->SetEffectChain(This,pEffectChain); 868 } 869 static inline HRESULT IXAudio2SourceVoice_EnableEffect(IXAudio2SourceVoice* This,UINT32 EffectIndex,UINT32 OperationSet) { 870 return This->lpVtbl->EnableEffect(This,EffectIndex,OperationSet); 871 } 872 static inline HRESULT IXAudio2SourceVoice_DisableEffect(IXAudio2SourceVoice* This,UINT32 EffectIndex,UINT32 OperationSet) { 873 return This->lpVtbl->DisableEffect(This,EffectIndex,OperationSet); 874 } 875 static inline void IXAudio2SourceVoice_GetEffectState(IXAudio2SourceVoice* This,UINT32 EffectIndex,WINBOOL *pEnabled) { 876 This->lpVtbl->GetEffectState(This,EffectIndex,pEnabled); 877 } 878 static inline HRESULT IXAudio2SourceVoice_SetEffectParameters(IXAudio2SourceVoice* This,UINT32 EffectIndex,const void *pParameters,UINT32 ParametersByteSize,UINT32 OperationSet) { 879 return This->lpVtbl->SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet); 880 } 881 static inline HRESULT IXAudio2SourceVoice_GetEffectParameters(IXAudio2SourceVoice* This,UINT32 EffectIndex,void *pParameters,UINT32 ParametersByteSize) { 882 return This->lpVtbl->GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize); 883 } 884 static inline HRESULT IXAudio2SourceVoice_SetFilterParameters(IXAudio2SourceVoice* This,const XAUDIO2_FILTER_PARAMETERS *pParameters,UINT32 OperationSet) { 885 return This->lpVtbl->SetFilterParameters(This,pParameters,OperationSet); 886 } 887 static inline void IXAudio2SourceVoice_GetFilterParameters(IXAudio2SourceVoice* This,XAUDIO2_FILTER_PARAMETERS *pParameters) { 888 This->lpVtbl->GetFilterParameters(This,pParameters); 889 } 890 static inline HRESULT IXAudio2SourceVoice_SetOutputFilterParameters(IXAudio2SourceVoice* This,IXAudio2Voice *pDestinationVoice,const XAUDIO2_FILTER_PARAMETERS *pParameters,UINT32 OperationSet) { 891 return This->lpVtbl->SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet); 892 } 893 static inline void IXAudio2SourceVoice_GetOutputFilterParameters(IXAudio2SourceVoice* This,IXAudio2Voice *pDestinationVoice,XAUDIO2_FILTER_PARAMETERS *pParameters) { 894 This->lpVtbl->GetOutputFilterParameters(This,pDestinationVoice,pParameters); 895 } 896 static inline HRESULT IXAudio2SourceVoice_SetVolume(IXAudio2SourceVoice* This,float Volume,UINT32 OperationSet) { 897 return This->lpVtbl->SetVolume(This,Volume,OperationSet); 898 } 899 static inline void IXAudio2SourceVoice_GetVolume(IXAudio2SourceVoice* This,float *pVolume) { 900 This->lpVtbl->GetVolume(This,pVolume); 901 } 902 static inline HRESULT IXAudio2SourceVoice_SetChannelVolumes(IXAudio2SourceVoice* This,UINT32 Channels,const float *pVolumes,UINT32 OperationSet) { 903 return This->lpVtbl->SetChannelVolumes(This,Channels,pVolumes,OperationSet); 904 } 905 static inline void IXAudio2SourceVoice_GetChannelVolumes(IXAudio2SourceVoice* This,UINT32 Channels,float *pVolumes) { 906 This->lpVtbl->GetChannelVolumes(This,Channels,pVolumes); 907 } 908 static inline HRESULT IXAudio2SourceVoice_SetOutputMatrix(IXAudio2SourceVoice* This,IXAudio2Voice *pDestinationVoice,UINT32 SourceChannels,UINT32 DestinationChannels,const float *pLevelMatrix,UINT32 OperationSet) { 909 return This->lpVtbl->SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet); 910 } 911 static inline void IXAudio2SourceVoice_GetOutputMatrix(IXAudio2SourceVoice* This,IXAudio2Voice *pDestinationVoice,UINT32 SourceChannels,UINT32 DestinationChannels,float *pLevelMatrix) { 912 This->lpVtbl->GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix); 913 } 914 static inline void IXAudio2SourceVoice_DestroyVoice(IXAudio2SourceVoice* This) { 915 This->lpVtbl->DestroyVoice(This); 916 } 917 /*** IXAudio2SourceVoice methods ***/ 918 static inline HRESULT IXAudio2SourceVoice_Start(IXAudio2SourceVoice* This,UINT32 Flags,UINT32 OperationSet) { 919 return This->lpVtbl->Start(This,Flags,OperationSet); 920 } 921 static inline HRESULT IXAudio2SourceVoice_Stop(IXAudio2SourceVoice* This,UINT32 Flags,UINT32 OperationSet) { 922 return This->lpVtbl->Stop(This,Flags,OperationSet); 923 } 924 static inline HRESULT IXAudio2SourceVoice_SubmitSourceBuffer(IXAudio2SourceVoice* This,const XAUDIO2_BUFFER *pBuffer,const XAUDIO2_BUFFER_WMA *pBufferWMA) { 925 return This->lpVtbl->SubmitSourceBuffer(This,pBuffer,pBufferWMA); 926 } 927 static inline HRESULT IXAudio2SourceVoice_FlushSourceBuffers(IXAudio2SourceVoice* This) { 928 return This->lpVtbl->FlushSourceBuffers(This); 929 } 930 static inline HRESULT IXAudio2SourceVoice_Discontinuity(IXAudio2SourceVoice* This) { 931 return This->lpVtbl->Discontinuity(This); 932 } 933 static inline HRESULT IXAudio2SourceVoice_ExitLoop(IXAudio2SourceVoice* This,UINT32 OperationSet) { 934 return This->lpVtbl->ExitLoop(This,OperationSet); 935 } 936 static inline void IXAudio2SourceVoice_GetState(IXAudio2SourceVoice* This,XAUDIO2_VOICE_STATE *pVoiceState,UINT32 Flags) { 937 This->lpVtbl->GetState(This,pVoiceState,Flags); 938 } 939 static inline HRESULT IXAudio2SourceVoice_SetFrequencyRatio(IXAudio2SourceVoice* This,float Ratio,UINT32 OperationSet) { 940 return This->lpVtbl->SetFrequencyRatio(This,Ratio,OperationSet); 941 } 942 static inline void IXAudio2SourceVoice_GetFrequencyRatio(IXAudio2SourceVoice* This,float *pRatio) { 943 This->lpVtbl->GetFrequencyRatio(This,pRatio); 944 } 945 static inline HRESULT IXAudio2SourceVoice_SetSourceSampleRate(IXAudio2SourceVoice* This,UINT32 NewSourceSampleRate) { 946 return This->lpVtbl->SetSourceSampleRate(This,NewSourceSampleRate); 947 } 948 #endif 949 #endif 950 951 #endif 952 953 954 #endif /* __IXAudio2SourceVoice_INTERFACE_DEFINED__ */ 955 956 /***************************************************************************** 957 * IXAudio2SubmixVoice interface 958 */ 959 #ifndef __IXAudio2SubmixVoice_INTERFACE_DEFINED__ 960 #define __IXAudio2SubmixVoice_INTERFACE_DEFINED__ 961 962 #if defined(__cplusplus) && !defined(CINTERFACE) 963 interface IXAudio2SubmixVoice : public IXAudio2Voice 964 { 965 }; 966 #else 967 typedef struct IXAudio2SubmixVoiceVtbl { 968 BEGIN_INTERFACE 969 970 /*** IXAudio2Voice methods ***/ 971 void (STDMETHODCALLTYPE *GetVoiceDetails)( 972 IXAudio2SubmixVoice *This, 973 XAUDIO2_VOICE_DETAILS *pVoiceDetails); 974 975 HRESULT (STDMETHODCALLTYPE *SetOutputVoices)( 976 IXAudio2SubmixVoice *This, 977 const XAUDIO2_VOICE_SENDS *pSendList); 978 979 HRESULT (STDMETHODCALLTYPE *SetEffectChain)( 980 IXAudio2SubmixVoice *This, 981 const XAUDIO2_EFFECT_CHAIN *pEffectChain); 982 983 HRESULT (STDMETHODCALLTYPE *EnableEffect)( 984 IXAudio2SubmixVoice *This, 985 UINT32 EffectIndex, 986 UINT32 OperationSet); 987 988 HRESULT (STDMETHODCALLTYPE *DisableEffect)( 989 IXAudio2SubmixVoice *This, 990 UINT32 EffectIndex, 991 UINT32 OperationSet); 992 993 void (STDMETHODCALLTYPE *GetEffectState)( 994 IXAudio2SubmixVoice *This, 995 UINT32 EffectIndex, 996 WINBOOL *pEnabled); 997 998 HRESULT (STDMETHODCALLTYPE *SetEffectParameters)( 999 IXAudio2SubmixVoice *This, 1000 UINT32 EffectIndex, 1001 const void *pParameters, 1002 UINT32 ParametersByteSize, 1003 UINT32 OperationSet); 1004 1005 HRESULT (STDMETHODCALLTYPE *GetEffectParameters)( 1006 IXAudio2SubmixVoice *This, 1007 UINT32 EffectIndex, 1008 void *pParameters, 1009 UINT32 ParametersByteSize); 1010 1011 HRESULT (STDMETHODCALLTYPE *SetFilterParameters)( 1012 IXAudio2SubmixVoice *This, 1013 const XAUDIO2_FILTER_PARAMETERS *pParameters, 1014 UINT32 OperationSet); 1015 1016 void (STDMETHODCALLTYPE *GetFilterParameters)( 1017 IXAudio2SubmixVoice *This, 1018 XAUDIO2_FILTER_PARAMETERS *pParameters); 1019 1020 HRESULT (STDMETHODCALLTYPE *SetOutputFilterParameters)( 1021 IXAudio2SubmixVoice *This, 1022 IXAudio2Voice *pDestinationVoice, 1023 const XAUDIO2_FILTER_PARAMETERS *pParameters, 1024 UINT32 OperationSet); 1025 1026 void (STDMETHODCALLTYPE *GetOutputFilterParameters)( 1027 IXAudio2SubmixVoice *This, 1028 IXAudio2Voice *pDestinationVoice, 1029 XAUDIO2_FILTER_PARAMETERS *pParameters); 1030 1031 HRESULT (STDMETHODCALLTYPE *SetVolume)( 1032 IXAudio2SubmixVoice *This, 1033 float Volume, 1034 UINT32 OperationSet); 1035 1036 void (STDMETHODCALLTYPE *GetVolume)( 1037 IXAudio2SubmixVoice *This, 1038 float *pVolume); 1039 1040 HRESULT (STDMETHODCALLTYPE *SetChannelVolumes)( 1041 IXAudio2SubmixVoice *This, 1042 UINT32 Channels, 1043 const float *pVolumes, 1044 UINT32 OperationSet); 1045 1046 void (STDMETHODCALLTYPE *GetChannelVolumes)( 1047 IXAudio2SubmixVoice *This, 1048 UINT32 Channels, 1049 float *pVolumes); 1050 1051 HRESULT (STDMETHODCALLTYPE *SetOutputMatrix)( 1052 IXAudio2SubmixVoice *This, 1053 IXAudio2Voice *pDestinationVoice, 1054 UINT32 SourceChannels, 1055 UINT32 DestinationChannels, 1056 const float *pLevelMatrix, 1057 UINT32 OperationSet); 1058 1059 void (STDMETHODCALLTYPE *GetOutputMatrix)( 1060 IXAudio2SubmixVoice *This, 1061 IXAudio2Voice *pDestinationVoice, 1062 UINT32 SourceChannels, 1063 UINT32 DestinationChannels, 1064 float *pLevelMatrix); 1065 1066 void (STDMETHODCALLTYPE *DestroyVoice)( 1067 IXAudio2SubmixVoice *This); 1068 1069 END_INTERFACE 1070 } IXAudio2SubmixVoiceVtbl; 1071 1072 interface IXAudio2SubmixVoice { 1073 CONST_VTBL IXAudio2SubmixVoiceVtbl* lpVtbl; 1074 }; 1075 1076 #ifdef COBJMACROS 1077 #ifndef WIDL_C_INLINE_WRAPPERS 1078 /*** IXAudio2Voice methods ***/ 1079 #define IXAudio2SubmixVoice_GetVoiceDetails(This,pVoiceDetails) (This)->lpVtbl->GetVoiceDetails(This,pVoiceDetails) 1080 #define IXAudio2SubmixVoice_SetOutputVoices(This,pSendList) (This)->lpVtbl->SetOutputVoices(This,pSendList) 1081 #define IXAudio2SubmixVoice_SetEffectChain(This,pEffectChain) (This)->lpVtbl->SetEffectChain(This,pEffectChain) 1082 #define IXAudio2SubmixVoice_EnableEffect(This,EffectIndex,OperationSet) (This)->lpVtbl->EnableEffect(This,EffectIndex,OperationSet) 1083 #define IXAudio2SubmixVoice_DisableEffect(This,EffectIndex,OperationSet) (This)->lpVtbl->DisableEffect(This,EffectIndex,OperationSet) 1084 #define IXAudio2SubmixVoice_GetEffectState(This,EffectIndex,pEnabled) (This)->lpVtbl->GetEffectState(This,EffectIndex,pEnabled) 1085 #define IXAudio2SubmixVoice_SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet) (This)->lpVtbl->SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet) 1086 #define IXAudio2SubmixVoice_GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize) (This)->lpVtbl->GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize) 1087 #define IXAudio2SubmixVoice_SetFilterParameters(This,pParameters,OperationSet) (This)->lpVtbl->SetFilterParameters(This,pParameters,OperationSet) 1088 #define IXAudio2SubmixVoice_GetFilterParameters(This,pParameters) (This)->lpVtbl->GetFilterParameters(This,pParameters) 1089 #define IXAudio2SubmixVoice_SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet) (This)->lpVtbl->SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet) 1090 #define IXAudio2SubmixVoice_GetOutputFilterParameters(This,pDestinationVoice,pParameters) (This)->lpVtbl->GetOutputFilterParameters(This,pDestinationVoice,pParameters) 1091 #define IXAudio2SubmixVoice_SetVolume(This,Volume,OperationSet) (This)->lpVtbl->SetVolume(This,Volume,OperationSet) 1092 #define IXAudio2SubmixVoice_GetVolume(This,pVolume) (This)->lpVtbl->GetVolume(This,pVolume) 1093 #define IXAudio2SubmixVoice_SetChannelVolumes(This,Channels,pVolumes,OperationSet) (This)->lpVtbl->SetChannelVolumes(This,Channels,pVolumes,OperationSet) 1094 #define IXAudio2SubmixVoice_GetChannelVolumes(This,Channels,pVolumes) (This)->lpVtbl->GetChannelVolumes(This,Channels,pVolumes) 1095 #define IXAudio2SubmixVoice_SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet) (This)->lpVtbl->SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet) 1096 #define IXAudio2SubmixVoice_GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix) (This)->lpVtbl->GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix) 1097 #define IXAudio2SubmixVoice_DestroyVoice(This) (This)->lpVtbl->DestroyVoice(This) 1098 #else 1099 /*** IXAudio2Voice methods ***/ 1100 static inline void IXAudio2SubmixVoice_GetVoiceDetails(IXAudio2SubmixVoice* This,XAUDIO2_VOICE_DETAILS *pVoiceDetails) { 1101 This->lpVtbl->GetVoiceDetails(This,pVoiceDetails); 1102 } 1103 static inline HRESULT IXAudio2SubmixVoice_SetOutputVoices(IXAudio2SubmixVoice* This,const XAUDIO2_VOICE_SENDS *pSendList) { 1104 return This->lpVtbl->SetOutputVoices(This,pSendList); 1105 } 1106 static inline HRESULT IXAudio2SubmixVoice_SetEffectChain(IXAudio2SubmixVoice* This,const XAUDIO2_EFFECT_CHAIN *pEffectChain) { 1107 return This->lpVtbl->SetEffectChain(This,pEffectChain); 1108 } 1109 static inline HRESULT IXAudio2SubmixVoice_EnableEffect(IXAudio2SubmixVoice* This,UINT32 EffectIndex,UINT32 OperationSet) { 1110 return This->lpVtbl->EnableEffect(This,EffectIndex,OperationSet); 1111 } 1112 static inline HRESULT IXAudio2SubmixVoice_DisableEffect(IXAudio2SubmixVoice* This,UINT32 EffectIndex,UINT32 OperationSet) { 1113 return This->lpVtbl->DisableEffect(This,EffectIndex,OperationSet); 1114 } 1115 static inline void IXAudio2SubmixVoice_GetEffectState(IXAudio2SubmixVoice* This,UINT32 EffectIndex,WINBOOL *pEnabled) { 1116 This->lpVtbl->GetEffectState(This,EffectIndex,pEnabled); 1117 } 1118 static inline HRESULT IXAudio2SubmixVoice_SetEffectParameters(IXAudio2SubmixVoice* This,UINT32 EffectIndex,const void *pParameters,UINT32 ParametersByteSize,UINT32 OperationSet) { 1119 return This->lpVtbl->SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet); 1120 } 1121 static inline HRESULT IXAudio2SubmixVoice_GetEffectParameters(IXAudio2SubmixVoice* This,UINT32 EffectIndex,void *pParameters,UINT32 ParametersByteSize) { 1122 return This->lpVtbl->GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize); 1123 } 1124 static inline HRESULT IXAudio2SubmixVoice_SetFilterParameters(IXAudio2SubmixVoice* This,const XAUDIO2_FILTER_PARAMETERS *pParameters,UINT32 OperationSet) { 1125 return This->lpVtbl->SetFilterParameters(This,pParameters,OperationSet); 1126 } 1127 static inline void IXAudio2SubmixVoice_GetFilterParameters(IXAudio2SubmixVoice* This,XAUDIO2_FILTER_PARAMETERS *pParameters) { 1128 This->lpVtbl->GetFilterParameters(This,pParameters); 1129 } 1130 static inline HRESULT IXAudio2SubmixVoice_SetOutputFilterParameters(IXAudio2SubmixVoice* This,IXAudio2Voice *pDestinationVoice,const XAUDIO2_FILTER_PARAMETERS *pParameters,UINT32 OperationSet) { 1131 return This->lpVtbl->SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet); 1132 } 1133 static inline void IXAudio2SubmixVoice_GetOutputFilterParameters(IXAudio2SubmixVoice* This,IXAudio2Voice *pDestinationVoice,XAUDIO2_FILTER_PARAMETERS *pParameters) { 1134 This->lpVtbl->GetOutputFilterParameters(This,pDestinationVoice,pParameters); 1135 } 1136 static inline HRESULT IXAudio2SubmixVoice_SetVolume(IXAudio2SubmixVoice* This,float Volume,UINT32 OperationSet) { 1137 return This->lpVtbl->SetVolume(This,Volume,OperationSet); 1138 } 1139 static inline void IXAudio2SubmixVoice_GetVolume(IXAudio2SubmixVoice* This,float *pVolume) { 1140 This->lpVtbl->GetVolume(This,pVolume); 1141 } 1142 static inline HRESULT IXAudio2SubmixVoice_SetChannelVolumes(IXAudio2SubmixVoice* This,UINT32 Channels,const float *pVolumes,UINT32 OperationSet) { 1143 return This->lpVtbl->SetChannelVolumes(This,Channels,pVolumes,OperationSet); 1144 } 1145 static inline void IXAudio2SubmixVoice_GetChannelVolumes(IXAudio2SubmixVoice* This,UINT32 Channels,float *pVolumes) { 1146 This->lpVtbl->GetChannelVolumes(This,Channels,pVolumes); 1147 } 1148 static inline HRESULT IXAudio2SubmixVoice_SetOutputMatrix(IXAudio2SubmixVoice* This,IXAudio2Voice *pDestinationVoice,UINT32 SourceChannels,UINT32 DestinationChannels,const float *pLevelMatrix,UINT32 OperationSet) { 1149 return This->lpVtbl->SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet); 1150 } 1151 static inline void IXAudio2SubmixVoice_GetOutputMatrix(IXAudio2SubmixVoice* This,IXAudio2Voice *pDestinationVoice,UINT32 SourceChannels,UINT32 DestinationChannels,float *pLevelMatrix) { 1152 This->lpVtbl->GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix); 1153 } 1154 static inline void IXAudio2SubmixVoice_DestroyVoice(IXAudio2SubmixVoice* This) { 1155 This->lpVtbl->DestroyVoice(This); 1156 } 1157 #endif 1158 #endif 1159 1160 #endif 1161 1162 1163 #endif /* __IXAudio2SubmixVoice_INTERFACE_DEFINED__ */ 1164 1165 /***************************************************************************** 1166 * IXAudio2MasteringVoice interface 1167 */ 1168 #ifndef __IXAudio2MasteringVoice_INTERFACE_DEFINED__ 1169 #define __IXAudio2MasteringVoice_INTERFACE_DEFINED__ 1170 1171 #if defined(__cplusplus) && !defined(CINTERFACE) 1172 interface IXAudio2MasteringVoice : public IXAudio2Voice 1173 { 1174 virtual HRESULT STDMETHODCALLTYPE GetChannelMask( 1175 DWORD *pChannelMask) = 0; 1176 1177 }; 1178 #else 1179 typedef struct IXAudio2MasteringVoiceVtbl { 1180 BEGIN_INTERFACE 1181 1182 /*** IXAudio2Voice methods ***/ 1183 void (STDMETHODCALLTYPE *GetVoiceDetails)( 1184 IXAudio2MasteringVoice *This, 1185 XAUDIO2_VOICE_DETAILS *pVoiceDetails); 1186 1187 HRESULT (STDMETHODCALLTYPE *SetOutputVoices)( 1188 IXAudio2MasteringVoice *This, 1189 const XAUDIO2_VOICE_SENDS *pSendList); 1190 1191 HRESULT (STDMETHODCALLTYPE *SetEffectChain)( 1192 IXAudio2MasteringVoice *This, 1193 const XAUDIO2_EFFECT_CHAIN *pEffectChain); 1194 1195 HRESULT (STDMETHODCALLTYPE *EnableEffect)( 1196 IXAudio2MasteringVoice *This, 1197 UINT32 EffectIndex, 1198 UINT32 OperationSet); 1199 1200 HRESULT (STDMETHODCALLTYPE *DisableEffect)( 1201 IXAudio2MasteringVoice *This, 1202 UINT32 EffectIndex, 1203 UINT32 OperationSet); 1204 1205 void (STDMETHODCALLTYPE *GetEffectState)( 1206 IXAudio2MasteringVoice *This, 1207 UINT32 EffectIndex, 1208 WINBOOL *pEnabled); 1209 1210 HRESULT (STDMETHODCALLTYPE *SetEffectParameters)( 1211 IXAudio2MasteringVoice *This, 1212 UINT32 EffectIndex, 1213 const void *pParameters, 1214 UINT32 ParametersByteSize, 1215 UINT32 OperationSet); 1216 1217 HRESULT (STDMETHODCALLTYPE *GetEffectParameters)( 1218 IXAudio2MasteringVoice *This, 1219 UINT32 EffectIndex, 1220 void *pParameters, 1221 UINT32 ParametersByteSize); 1222 1223 HRESULT (STDMETHODCALLTYPE *SetFilterParameters)( 1224 IXAudio2MasteringVoice *This, 1225 const XAUDIO2_FILTER_PARAMETERS *pParameters, 1226 UINT32 OperationSet); 1227 1228 void (STDMETHODCALLTYPE *GetFilterParameters)( 1229 IXAudio2MasteringVoice *This, 1230 XAUDIO2_FILTER_PARAMETERS *pParameters); 1231 1232 HRESULT (STDMETHODCALLTYPE *SetOutputFilterParameters)( 1233 IXAudio2MasteringVoice *This, 1234 IXAudio2Voice *pDestinationVoice, 1235 const XAUDIO2_FILTER_PARAMETERS *pParameters, 1236 UINT32 OperationSet); 1237 1238 void (STDMETHODCALLTYPE *GetOutputFilterParameters)( 1239 IXAudio2MasteringVoice *This, 1240 IXAudio2Voice *pDestinationVoice, 1241 XAUDIO2_FILTER_PARAMETERS *pParameters); 1242 1243 HRESULT (STDMETHODCALLTYPE *SetVolume)( 1244 IXAudio2MasteringVoice *This, 1245 float Volume, 1246 UINT32 OperationSet); 1247 1248 void (STDMETHODCALLTYPE *GetVolume)( 1249 IXAudio2MasteringVoice *This, 1250 float *pVolume); 1251 1252 HRESULT (STDMETHODCALLTYPE *SetChannelVolumes)( 1253 IXAudio2MasteringVoice *This, 1254 UINT32 Channels, 1255 const float *pVolumes, 1256 UINT32 OperationSet); 1257 1258 void (STDMETHODCALLTYPE *GetChannelVolumes)( 1259 IXAudio2MasteringVoice *This, 1260 UINT32 Channels, 1261 float *pVolumes); 1262 1263 HRESULT (STDMETHODCALLTYPE *SetOutputMatrix)( 1264 IXAudio2MasteringVoice *This, 1265 IXAudio2Voice *pDestinationVoice, 1266 UINT32 SourceChannels, 1267 UINT32 DestinationChannels, 1268 const float *pLevelMatrix, 1269 UINT32 OperationSet); 1270 1271 void (STDMETHODCALLTYPE *GetOutputMatrix)( 1272 IXAudio2MasteringVoice *This, 1273 IXAudio2Voice *pDestinationVoice, 1274 UINT32 SourceChannels, 1275 UINT32 DestinationChannels, 1276 float *pLevelMatrix); 1277 1278 void (STDMETHODCALLTYPE *DestroyVoice)( 1279 IXAudio2MasteringVoice *This); 1280 1281 /*** IXAudio2MasteringVoice methods ***/ 1282 HRESULT (STDMETHODCALLTYPE *GetChannelMask)( 1283 IXAudio2MasteringVoice *This, 1284 DWORD *pChannelMask); 1285 1286 END_INTERFACE 1287 } IXAudio2MasteringVoiceVtbl; 1288 1289 interface IXAudio2MasteringVoice { 1290 CONST_VTBL IXAudio2MasteringVoiceVtbl* lpVtbl; 1291 }; 1292 1293 #ifdef COBJMACROS 1294 #ifndef WIDL_C_INLINE_WRAPPERS 1295 /*** IXAudio2Voice methods ***/ 1296 #define IXAudio2MasteringVoice_GetVoiceDetails(This,pVoiceDetails) (This)->lpVtbl->GetVoiceDetails(This,pVoiceDetails) 1297 #define IXAudio2MasteringVoice_SetOutputVoices(This,pSendList) (This)->lpVtbl->SetOutputVoices(This,pSendList) 1298 #define IXAudio2MasteringVoice_SetEffectChain(This,pEffectChain) (This)->lpVtbl->SetEffectChain(This,pEffectChain) 1299 #define IXAudio2MasteringVoice_EnableEffect(This,EffectIndex,OperationSet) (This)->lpVtbl->EnableEffect(This,EffectIndex,OperationSet) 1300 #define IXAudio2MasteringVoice_DisableEffect(This,EffectIndex,OperationSet) (This)->lpVtbl->DisableEffect(This,EffectIndex,OperationSet) 1301 #define IXAudio2MasteringVoice_GetEffectState(This,EffectIndex,pEnabled) (This)->lpVtbl->GetEffectState(This,EffectIndex,pEnabled) 1302 #define IXAudio2MasteringVoice_SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet) (This)->lpVtbl->SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet) 1303 #define IXAudio2MasteringVoice_GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize) (This)->lpVtbl->GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize) 1304 #define IXAudio2MasteringVoice_SetFilterParameters(This,pParameters,OperationSet) (This)->lpVtbl->SetFilterParameters(This,pParameters,OperationSet) 1305 #define IXAudio2MasteringVoice_GetFilterParameters(This,pParameters) (This)->lpVtbl->GetFilterParameters(This,pParameters) 1306 #define IXAudio2MasteringVoice_SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet) (This)->lpVtbl->SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet) 1307 #define IXAudio2MasteringVoice_GetOutputFilterParameters(This,pDestinationVoice,pParameters) (This)->lpVtbl->GetOutputFilterParameters(This,pDestinationVoice,pParameters) 1308 #define IXAudio2MasteringVoice_SetVolume(This,Volume,OperationSet) (This)->lpVtbl->SetVolume(This,Volume,OperationSet) 1309 #define IXAudio2MasteringVoice_GetVolume(This,pVolume) (This)->lpVtbl->GetVolume(This,pVolume) 1310 #define IXAudio2MasteringVoice_SetChannelVolumes(This,Channels,pVolumes,OperationSet) (This)->lpVtbl->SetChannelVolumes(This,Channels,pVolumes,OperationSet) 1311 #define IXAudio2MasteringVoice_GetChannelVolumes(This,Channels,pVolumes) (This)->lpVtbl->GetChannelVolumes(This,Channels,pVolumes) 1312 #define IXAudio2MasteringVoice_SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet) (This)->lpVtbl->SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet) 1313 #define IXAudio2MasteringVoice_GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix) (This)->lpVtbl->GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix) 1314 #define IXAudio2MasteringVoice_DestroyVoice(This) (This)->lpVtbl->DestroyVoice(This) 1315 /*** IXAudio2MasteringVoice methods ***/ 1316 #define IXAudio2MasteringVoice_GetChannelMask(This,pChannelMask) (This)->lpVtbl->GetChannelMask(This,pChannelMask) 1317 #else 1318 /*** IXAudio2Voice methods ***/ 1319 static inline void IXAudio2MasteringVoice_GetVoiceDetails(IXAudio2MasteringVoice* This,XAUDIO2_VOICE_DETAILS *pVoiceDetails) { 1320 This->lpVtbl->GetVoiceDetails(This,pVoiceDetails); 1321 } 1322 static inline HRESULT IXAudio2MasteringVoice_SetOutputVoices(IXAudio2MasteringVoice* This,const XAUDIO2_VOICE_SENDS *pSendList) { 1323 return This->lpVtbl->SetOutputVoices(This,pSendList); 1324 } 1325 static inline HRESULT IXAudio2MasteringVoice_SetEffectChain(IXAudio2MasteringVoice* This,const XAUDIO2_EFFECT_CHAIN *pEffectChain) { 1326 return This->lpVtbl->SetEffectChain(This,pEffectChain); 1327 } 1328 static inline HRESULT IXAudio2MasteringVoice_EnableEffect(IXAudio2MasteringVoice* This,UINT32 EffectIndex,UINT32 OperationSet) { 1329 return This->lpVtbl->EnableEffect(This,EffectIndex,OperationSet); 1330 } 1331 static inline HRESULT IXAudio2MasteringVoice_DisableEffect(IXAudio2MasteringVoice* This,UINT32 EffectIndex,UINT32 OperationSet) { 1332 return This->lpVtbl->DisableEffect(This,EffectIndex,OperationSet); 1333 } 1334 static inline void IXAudio2MasteringVoice_GetEffectState(IXAudio2MasteringVoice* This,UINT32 EffectIndex,WINBOOL *pEnabled) { 1335 This->lpVtbl->GetEffectState(This,EffectIndex,pEnabled); 1336 } 1337 static inline HRESULT IXAudio2MasteringVoice_SetEffectParameters(IXAudio2MasteringVoice* This,UINT32 EffectIndex,const void *pParameters,UINT32 ParametersByteSize,UINT32 OperationSet) { 1338 return This->lpVtbl->SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet); 1339 } 1340 static inline HRESULT IXAudio2MasteringVoice_GetEffectParameters(IXAudio2MasteringVoice* This,UINT32 EffectIndex,void *pParameters,UINT32 ParametersByteSize) { 1341 return This->lpVtbl->GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize); 1342 } 1343 static inline HRESULT IXAudio2MasteringVoice_SetFilterParameters(IXAudio2MasteringVoice* This,const XAUDIO2_FILTER_PARAMETERS *pParameters,UINT32 OperationSet) { 1344 return This->lpVtbl->SetFilterParameters(This,pParameters,OperationSet); 1345 } 1346 static inline void IXAudio2MasteringVoice_GetFilterParameters(IXAudio2MasteringVoice* This,XAUDIO2_FILTER_PARAMETERS *pParameters) { 1347 This->lpVtbl->GetFilterParameters(This,pParameters); 1348 } 1349 static inline HRESULT IXAudio2MasteringVoice_SetOutputFilterParameters(IXAudio2MasteringVoice* This,IXAudio2Voice *pDestinationVoice,const XAUDIO2_FILTER_PARAMETERS *pParameters,UINT32 OperationSet) { 1350 return This->lpVtbl->SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet); 1351 } 1352 static inline void IXAudio2MasteringVoice_GetOutputFilterParameters(IXAudio2MasteringVoice* This,IXAudio2Voice *pDestinationVoice,XAUDIO2_FILTER_PARAMETERS *pParameters) { 1353 This->lpVtbl->GetOutputFilterParameters(This,pDestinationVoice,pParameters); 1354 } 1355 static inline HRESULT IXAudio2MasteringVoice_SetVolume(IXAudio2MasteringVoice* This,float Volume,UINT32 OperationSet) { 1356 return This->lpVtbl->SetVolume(This,Volume,OperationSet); 1357 } 1358 static inline void IXAudio2MasteringVoice_GetVolume(IXAudio2MasteringVoice* This,float *pVolume) { 1359 This->lpVtbl->GetVolume(This,pVolume); 1360 } 1361 static inline HRESULT IXAudio2MasteringVoice_SetChannelVolumes(IXAudio2MasteringVoice* This,UINT32 Channels,const float *pVolumes,UINT32 OperationSet) { 1362 return This->lpVtbl->SetChannelVolumes(This,Channels,pVolumes,OperationSet); 1363 } 1364 static inline void IXAudio2MasteringVoice_GetChannelVolumes(IXAudio2MasteringVoice* This,UINT32 Channels,float *pVolumes) { 1365 This->lpVtbl->GetChannelVolumes(This,Channels,pVolumes); 1366 } 1367 static inline HRESULT IXAudio2MasteringVoice_SetOutputMatrix(IXAudio2MasteringVoice* This,IXAudio2Voice *pDestinationVoice,UINT32 SourceChannels,UINT32 DestinationChannels,const float *pLevelMatrix,UINT32 OperationSet) { 1368 return This->lpVtbl->SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet); 1369 } 1370 static inline void IXAudio2MasteringVoice_GetOutputMatrix(IXAudio2MasteringVoice* This,IXAudio2Voice *pDestinationVoice,UINT32 SourceChannels,UINT32 DestinationChannels,float *pLevelMatrix) { 1371 This->lpVtbl->GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix); 1372 } 1373 static inline void IXAudio2MasteringVoice_DestroyVoice(IXAudio2MasteringVoice* This) { 1374 This->lpVtbl->DestroyVoice(This); 1375 } 1376 /*** IXAudio2MasteringVoice methods ***/ 1377 static inline HRESULT IXAudio2MasteringVoice_GetChannelMask(IXAudio2MasteringVoice* This,DWORD *pChannelMask) { 1378 return This->lpVtbl->GetChannelMask(This,pChannelMask); 1379 } 1380 #endif 1381 #endif 1382 1383 #endif 1384 1385 1386 #endif /* __IXAudio2MasteringVoice_INTERFACE_DEFINED__ */ 1387 1388 /***************************************************************************** 1389 * IXAudio2VoiceCallback interface 1390 */ 1391 #ifndef __IXAudio2VoiceCallback_INTERFACE_DEFINED__ 1392 #define __IXAudio2VoiceCallback_INTERFACE_DEFINED__ 1393 1394 #if defined(__cplusplus) && !defined(CINTERFACE) 1395 interface IXAudio2VoiceCallback 1396 { 1397 1398 BEGIN_INTERFACE 1399 1400 virtual void STDMETHODCALLTYPE OnVoiceProcessingPassStart( 1401 UINT32 BytesRequired) = 0; 1402 1403 virtual void STDMETHODCALLTYPE OnVoiceProcessingPassEnd( 1404 ) = 0; 1405 1406 virtual void STDMETHODCALLTYPE OnStreamEnd( 1407 ) = 0; 1408 1409 virtual void STDMETHODCALLTYPE OnBufferStart( 1410 void *pBufferContext) = 0; 1411 1412 virtual void STDMETHODCALLTYPE OnBufferEnd( 1413 void *pBufferContext) = 0; 1414 1415 virtual void STDMETHODCALLTYPE OnLoopEnd( 1416 void *pBufferContext) = 0; 1417 1418 virtual void STDMETHODCALLTYPE OnVoiceError( 1419 void *pBuffercontext, 1420 HRESULT Error) = 0; 1421 1422 END_INTERFACE 1423 1424 }; 1425 #else 1426 typedef struct IXAudio2VoiceCallbackVtbl { 1427 BEGIN_INTERFACE 1428 1429 /*** IXAudio2VoiceCallback methods ***/ 1430 void (STDMETHODCALLTYPE *OnVoiceProcessingPassStart)( 1431 IXAudio2VoiceCallback *This, 1432 UINT32 BytesRequired); 1433 1434 void (STDMETHODCALLTYPE *OnVoiceProcessingPassEnd)( 1435 IXAudio2VoiceCallback *This); 1436 1437 void (STDMETHODCALLTYPE *OnStreamEnd)( 1438 IXAudio2VoiceCallback *This); 1439 1440 void (STDMETHODCALLTYPE *OnBufferStart)( 1441 IXAudio2VoiceCallback *This, 1442 void *pBufferContext); 1443 1444 void (STDMETHODCALLTYPE *OnBufferEnd)( 1445 IXAudio2VoiceCallback *This, 1446 void *pBufferContext); 1447 1448 void (STDMETHODCALLTYPE *OnLoopEnd)( 1449 IXAudio2VoiceCallback *This, 1450 void *pBufferContext); 1451 1452 void (STDMETHODCALLTYPE *OnVoiceError)( 1453 IXAudio2VoiceCallback *This, 1454 void *pBuffercontext, 1455 HRESULT Error); 1456 1457 END_INTERFACE 1458 } IXAudio2VoiceCallbackVtbl; 1459 1460 interface IXAudio2VoiceCallback { 1461 CONST_VTBL IXAudio2VoiceCallbackVtbl* lpVtbl; 1462 }; 1463 1464 #ifdef COBJMACROS 1465 #ifndef WIDL_C_INLINE_WRAPPERS 1466 /*** IXAudio2VoiceCallback methods ***/ 1467 #define IXAudio2VoiceCallback_OnVoiceProcessingPassStart(This,BytesRequired) (This)->lpVtbl->OnVoiceProcessingPassStart(This,BytesRequired) 1468 #define IXAudio2VoiceCallback_OnVoiceProcessingPassEnd(This) (This)->lpVtbl->OnVoiceProcessingPassEnd(This) 1469 #define IXAudio2VoiceCallback_OnStreamEnd(This) (This)->lpVtbl->OnStreamEnd(This) 1470 #define IXAudio2VoiceCallback_OnBufferStart(This,pBufferContext) (This)->lpVtbl->OnBufferStart(This,pBufferContext) 1471 #define IXAudio2VoiceCallback_OnBufferEnd(This,pBufferContext) (This)->lpVtbl->OnBufferEnd(This,pBufferContext) 1472 #define IXAudio2VoiceCallback_OnLoopEnd(This,pBufferContext) (This)->lpVtbl->OnLoopEnd(This,pBufferContext) 1473 #define IXAudio2VoiceCallback_OnVoiceError(This,pBuffercontext,Error) (This)->lpVtbl->OnVoiceError(This,pBuffercontext,Error) 1474 #else 1475 /*** IXAudio2VoiceCallback methods ***/ 1476 static inline void IXAudio2VoiceCallback_OnVoiceProcessingPassStart(IXAudio2VoiceCallback* This,UINT32 BytesRequired) { 1477 This->lpVtbl->OnVoiceProcessingPassStart(This,BytesRequired); 1478 } 1479 static inline void IXAudio2VoiceCallback_OnVoiceProcessingPassEnd(IXAudio2VoiceCallback* This) { 1480 This->lpVtbl->OnVoiceProcessingPassEnd(This); 1481 } 1482 static inline void IXAudio2VoiceCallback_OnStreamEnd(IXAudio2VoiceCallback* This) { 1483 This->lpVtbl->OnStreamEnd(This); 1484 } 1485 static inline void IXAudio2VoiceCallback_OnBufferStart(IXAudio2VoiceCallback* This,void *pBufferContext) { 1486 This->lpVtbl->OnBufferStart(This,pBufferContext); 1487 } 1488 static inline void IXAudio2VoiceCallback_OnBufferEnd(IXAudio2VoiceCallback* This,void *pBufferContext) { 1489 This->lpVtbl->OnBufferEnd(This,pBufferContext); 1490 } 1491 static inline void IXAudio2VoiceCallback_OnLoopEnd(IXAudio2VoiceCallback* This,void *pBufferContext) { 1492 This->lpVtbl->OnLoopEnd(This,pBufferContext); 1493 } 1494 static inline void IXAudio2VoiceCallback_OnVoiceError(IXAudio2VoiceCallback* This,void *pBuffercontext,HRESULT Error) { 1495 This->lpVtbl->OnVoiceError(This,pBuffercontext,Error); 1496 } 1497 #endif 1498 #endif 1499 1500 #endif 1501 1502 1503 #endif /* __IXAudio2VoiceCallback_INTERFACE_DEFINED__ */ 1504 1505 typedef struct XAUDIO2_DEBUG_CONFIGURATION { 1506 UINT32 TraceMask; 1507 UINT32 BreakMask; 1508 WINBOOL LogThreadID; 1509 WINBOOL LogFileline; 1510 WINBOOL LogFunctionName; 1511 WINBOOL LogTiming; 1512 } XAUDIO2_DEBUG_CONFIGURATION; 1513 /***************************************************************************** 1514 * IXAudio2 interface 1515 */ 1516 #ifndef __IXAudio2_INTERFACE_DEFINED__ 1517 #define __IXAudio2_INTERFACE_DEFINED__ 1518 1519 DEFINE_GUID(IID_IXAudio2, 0x2b02e3cf, 0x2e0b, 0x4ec3, 0xbe,0x45, 0x1b,0x2a,0x3f,0xe7,0x21,0x0d); 1520 #if defined(__cplusplus) && !defined(CINTERFACE) 1521 MIDL_INTERFACE("2b02e3cf-2e0b-4ec3-be45-1b2a3fe7210d") 1522 IXAudio2 : public IUnknown 1523 { 1524 virtual HRESULT STDMETHODCALLTYPE RegisterForCallbacks( 1525 IXAudio2EngineCallback *pCallback) = 0; 1526 1527 virtual void STDMETHODCALLTYPE UnregisterForCallbacks( 1528 IXAudio2EngineCallback *pCallback) = 0; 1529 1530 virtual HRESULT STDMETHODCALLTYPE CreateSourceVoice( 1531 IXAudio2SourceVoice **ppSourceVoice, 1532 const WAVEFORMATEX *pSourceFormat, 1533 UINT32 Flags = 0, 1534 float MaxFrequencyRatio = XAUDIO2_DEFAULT_FREQ_RATIO, 1535 IXAudio2VoiceCallback *pCallback = 0, 1536 const XAUDIO2_VOICE_SENDS *pSendList = 0, 1537 const XAUDIO2_EFFECT_CHAIN *pEffectChain = 0) = 0; 1538 1539 virtual HRESULT STDMETHODCALLTYPE CreateSubmixVoice( 1540 IXAudio2SubmixVoice **ppSubmixVoice, 1541 UINT32 InputChannels, 1542 UINT32 InputSampleRate, 1543 UINT32 Flags = 0, 1544 UINT32 ProcessingStage = 0, 1545 const XAUDIO2_VOICE_SENDS *pSendList = 0, 1546 const XAUDIO2_EFFECT_CHAIN *pEffectChain = 0) = 0; 1547 1548 virtual HRESULT STDMETHODCALLTYPE CreateMasteringVoice( 1549 IXAudio2MasteringVoice **ppMasteringVoice, 1550 UINT32 InputChannels = XAUDIO2_DEFAULT_CHANNELS, 1551 UINT32 InputSampleRate = XAUDIO2_DEFAULT_SAMPLERATE, 1552 UINT32 Flags = 0, 1553 LPCWSTR DeviceId = 0, 1554 const XAUDIO2_EFFECT_CHAIN *pEffectChain = 0, 1555 AUDIO_STREAM_CATEGORY category = AudioCategory_GameEffects) = 0; 1556 1557 virtual HRESULT STDMETHODCALLTYPE StartEngine( 1558 ) = 0; 1559 1560 virtual void STDMETHODCALLTYPE StopEngine( 1561 ) = 0; 1562 1563 virtual HRESULT STDMETHODCALLTYPE CommitChanges( 1564 UINT32 OperationSet) = 0; 1565 1566 virtual void STDMETHODCALLTYPE GetPerformanceData( 1567 XAUDIO2_PERFORMANCE_DATA *pPerfData) = 0; 1568 1569 virtual void STDMETHODCALLTYPE SetDebugConfiguration( 1570 const XAUDIO2_DEBUG_CONFIGURATION *pDebugConfiguration, 1571 void *pReserved = 0) = 0; 1572 1573 }; 1574 #ifdef __CRT_UUID_DECL 1575 __CRT_UUID_DECL(IXAudio2, 0x2b02e3cf, 0x2e0b, 0x4ec3, 0xbe,0x45, 0x1b,0x2a,0x3f,0xe7,0x21,0x0d) 1576 #endif 1577 #else 1578 typedef struct IXAudio2Vtbl { 1579 BEGIN_INTERFACE 1580 1581 /*** IUnknown methods ***/ 1582 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 1583 IXAudio2 *This, 1584 REFIID riid, 1585 void **ppvObject); 1586 1587 ULONG (STDMETHODCALLTYPE *AddRef)( 1588 IXAudio2 *This); 1589 1590 ULONG (STDMETHODCALLTYPE *Release)( 1591 IXAudio2 *This); 1592 1593 /*** IXAudio2 methods ***/ 1594 HRESULT (STDMETHODCALLTYPE *RegisterForCallbacks)( 1595 IXAudio2 *This, 1596 IXAudio2EngineCallback *pCallback); 1597 1598 void (STDMETHODCALLTYPE *UnregisterForCallbacks)( 1599 IXAudio2 *This, 1600 IXAudio2EngineCallback *pCallback); 1601 1602 HRESULT (STDMETHODCALLTYPE *CreateSourceVoice)( 1603 IXAudio2 *This, 1604 IXAudio2SourceVoice **ppSourceVoice, 1605 const WAVEFORMATEX *pSourceFormat, 1606 UINT32 Flags, 1607 float MaxFrequencyRatio, 1608 IXAudio2VoiceCallback *pCallback, 1609 const XAUDIO2_VOICE_SENDS *pSendList, 1610 const XAUDIO2_EFFECT_CHAIN *pEffectChain); 1611 1612 HRESULT (STDMETHODCALLTYPE *CreateSubmixVoice)( 1613 IXAudio2 *This, 1614 IXAudio2SubmixVoice **ppSubmixVoice, 1615 UINT32 InputChannels, 1616 UINT32 InputSampleRate, 1617 UINT32 Flags, 1618 UINT32 ProcessingStage, 1619 const XAUDIO2_VOICE_SENDS *pSendList, 1620 const XAUDIO2_EFFECT_CHAIN *pEffectChain); 1621 1622 HRESULT (STDMETHODCALLTYPE *CreateMasteringVoice)( 1623 IXAudio2 *This, 1624 IXAudio2MasteringVoice **ppMasteringVoice, 1625 UINT32 InputChannels, 1626 UINT32 InputSampleRate, 1627 UINT32 Flags, 1628 LPCWSTR DeviceId, 1629 const XAUDIO2_EFFECT_CHAIN *pEffectChain, 1630 AUDIO_STREAM_CATEGORY category); 1631 1632 HRESULT (STDMETHODCALLTYPE *StartEngine)( 1633 IXAudio2 *This); 1634 1635 void (STDMETHODCALLTYPE *StopEngine)( 1636 IXAudio2 *This); 1637 1638 HRESULT (STDMETHODCALLTYPE *CommitChanges)( 1639 IXAudio2 *This, 1640 UINT32 OperationSet); 1641 1642 void (STDMETHODCALLTYPE *GetPerformanceData)( 1643 IXAudio2 *This, 1644 XAUDIO2_PERFORMANCE_DATA *pPerfData); 1645 1646 void (STDMETHODCALLTYPE *SetDebugConfiguration)( 1647 IXAudio2 *This, 1648 const XAUDIO2_DEBUG_CONFIGURATION *pDebugConfiguration, 1649 void *pReserved); 1650 1651 END_INTERFACE 1652 } IXAudio2Vtbl; 1653 1654 interface IXAudio2 { 1655 CONST_VTBL IXAudio2Vtbl* lpVtbl; 1656 }; 1657 1658 #ifdef COBJMACROS 1659 #ifndef WIDL_C_INLINE_WRAPPERS 1660 /*** IUnknown methods ***/ 1661 #define IXAudio2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 1662 #define IXAudio2_AddRef(This) (This)->lpVtbl->AddRef(This) 1663 #define IXAudio2_Release(This) (This)->lpVtbl->Release(This) 1664 /*** IXAudio2 methods ***/ 1665 #define IXAudio2_RegisterForCallbacks(This,pCallback) (This)->lpVtbl->RegisterForCallbacks(This,pCallback) 1666 #define IXAudio2_UnregisterForCallbacks(This,pCallback) (This)->lpVtbl->UnregisterForCallbacks(This,pCallback) 1667 #define IXAudio2_CreateSourceVoice(This,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain) (This)->lpVtbl->CreateSourceVoice(This,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain) 1668 #define IXAudio2_CreateSubmixVoice(This,ppSubmixVoice,InputChannels,InputSampleRate,Flags,ProcessingStage,pSendList,pEffectChain) (This)->lpVtbl->CreateSubmixVoice(This,ppSubmixVoice,InputChannels,InputSampleRate,Flags,ProcessingStage,pSendList,pEffectChain) 1669 #define IXAudio2_CreateMasteringVoice(This,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceId,pEffectChain,category) (This)->lpVtbl->CreateMasteringVoice(This,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceId,pEffectChain,category) 1670 #define IXAudio2_StartEngine(This) (This)->lpVtbl->StartEngine(This) 1671 #define IXAudio2_StopEngine(This) (This)->lpVtbl->StopEngine(This) 1672 #define IXAudio2_CommitChanges(This,OperationSet) (This)->lpVtbl->CommitChanges(This,OperationSet) 1673 #define IXAudio2_GetPerformanceData(This,pPerfData) (This)->lpVtbl->GetPerformanceData(This,pPerfData) 1674 #define IXAudio2_SetDebugConfiguration(This,pDebugConfiguration,pReserved) (This)->lpVtbl->SetDebugConfiguration(This,pDebugConfiguration,pReserved) 1675 #else 1676 /*** IUnknown methods ***/ 1677 static inline HRESULT IXAudio2_QueryInterface(IXAudio2* This,REFIID riid,void **ppvObject) { 1678 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 1679 } 1680 static inline ULONG IXAudio2_AddRef(IXAudio2* This) { 1681 return This->lpVtbl->AddRef(This); 1682 } 1683 static inline ULONG IXAudio2_Release(IXAudio2* This) { 1684 return This->lpVtbl->Release(This); 1685 } 1686 /*** IXAudio2 methods ***/ 1687 static inline HRESULT IXAudio2_RegisterForCallbacks(IXAudio2* This,IXAudio2EngineCallback *pCallback) { 1688 return This->lpVtbl->RegisterForCallbacks(This,pCallback); 1689 } 1690 static inline void IXAudio2_UnregisterForCallbacks(IXAudio2* This,IXAudio2EngineCallback *pCallback) { 1691 This->lpVtbl->UnregisterForCallbacks(This,pCallback); 1692 } 1693 static inline HRESULT IXAudio2_CreateSourceVoice(IXAudio2* This,IXAudio2SourceVoice **ppSourceVoice,const WAVEFORMATEX *pSourceFormat,UINT32 Flags,float MaxFrequencyRatio,IXAudio2VoiceCallback *pCallback,const XAUDIO2_VOICE_SENDS *pSendList,const XAUDIO2_EFFECT_CHAIN *pEffectChain) { 1694 return This->lpVtbl->CreateSourceVoice(This,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain); 1695 } 1696 static inline HRESULT IXAudio2_CreateSubmixVoice(IXAudio2* This,IXAudio2SubmixVoice **ppSubmixVoice,UINT32 InputChannels,UINT32 InputSampleRate,UINT32 Flags,UINT32 ProcessingStage,const XAUDIO2_VOICE_SENDS *pSendList,const XAUDIO2_EFFECT_CHAIN *pEffectChain) { 1697 return This->lpVtbl->CreateSubmixVoice(This,ppSubmixVoice,InputChannels,InputSampleRate,Flags,ProcessingStage,pSendList,pEffectChain); 1698 } 1699 static inline HRESULT IXAudio2_CreateMasteringVoice(IXAudio2* This,IXAudio2MasteringVoice **ppMasteringVoice,UINT32 InputChannels,UINT32 InputSampleRate,UINT32 Flags,LPCWSTR DeviceId,const XAUDIO2_EFFECT_CHAIN *pEffectChain,AUDIO_STREAM_CATEGORY category) { 1700 return This->lpVtbl->CreateMasteringVoice(This,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceId,pEffectChain,category); 1701 } 1702 static inline HRESULT IXAudio2_StartEngine(IXAudio2* This) { 1703 return This->lpVtbl->StartEngine(This); 1704 } 1705 static inline void IXAudio2_StopEngine(IXAudio2* This) { 1706 This->lpVtbl->StopEngine(This); 1707 } 1708 static inline HRESULT IXAudio2_CommitChanges(IXAudio2* This,UINT32 OperationSet) { 1709 return This->lpVtbl->CommitChanges(This,OperationSet); 1710 } 1711 static inline void IXAudio2_GetPerformanceData(IXAudio2* This,XAUDIO2_PERFORMANCE_DATA *pPerfData) { 1712 This->lpVtbl->GetPerformanceData(This,pPerfData); 1713 } 1714 static inline void IXAudio2_SetDebugConfiguration(IXAudio2* This,const XAUDIO2_DEBUG_CONFIGURATION *pDebugConfiguration,void *pReserved) { 1715 This->lpVtbl->SetDebugConfiguration(This,pDebugConfiguration,pReserved); 1716 } 1717 #endif 1718 #endif 1719 1720 #endif 1721 1722 1723 #endif /* __IXAudio2_INTERFACE_DEFINED__ */ 1724 1725 /***************************************************************************** 1726 * IXAudio2Extension interface 1727 */ 1728 #ifndef __IXAudio2Extension_INTERFACE_DEFINED__ 1729 #define __IXAudio2Extension_INTERFACE_DEFINED__ 1730 1731 DEFINE_GUID(IID_IXAudio2Extension, 0x84ac29bb, 0xd619, 0x44d2, 0xb1,0x97, 0xe4,0xac,0xf7,0xdf,0x3e,0xd6); 1732 #if defined(__cplusplus) && !defined(CINTERFACE) 1733 MIDL_INTERFACE("84ac29bb-d619-44d2-b197-e4acf7df3ed6") 1734 IXAudio2Extension : public IUnknown 1735 { 1736 virtual void STDMETHODCALLTYPE GetProcessingQuantum( 1737 UINT32 *quantum_numerator, 1738 UINT32 *quantum_denominator) = 0; 1739 1740 virtual void STDMETHODCALLTYPE GetProcessor( 1741 XAUDIO2_PROCESSOR *processor) = 0; 1742 1743 }; 1744 #ifdef __CRT_UUID_DECL 1745 __CRT_UUID_DECL(IXAudio2Extension, 0x84ac29bb, 0xd619, 0x44d2, 0xb1,0x97, 0xe4,0xac,0xf7,0xdf,0x3e,0xd6) 1746 #endif 1747 #else 1748 typedef struct IXAudio2ExtensionVtbl { 1749 BEGIN_INTERFACE 1750 1751 /*** IUnknown methods ***/ 1752 HRESULT (STDMETHODCALLTYPE *QueryInterface)( 1753 IXAudio2Extension *This, 1754 REFIID riid, 1755 void **ppvObject); 1756 1757 ULONG (STDMETHODCALLTYPE *AddRef)( 1758 IXAudio2Extension *This); 1759 1760 ULONG (STDMETHODCALLTYPE *Release)( 1761 IXAudio2Extension *This); 1762 1763 /*** IXAudio2Extension methods ***/ 1764 void (STDMETHODCALLTYPE *GetProcessingQuantum)( 1765 IXAudio2Extension *This, 1766 UINT32 *quantum_numerator, 1767 UINT32 *quantum_denominator); 1768 1769 void (STDMETHODCALLTYPE *GetProcessor)( 1770 IXAudio2Extension *This, 1771 XAUDIO2_PROCESSOR *processor); 1772 1773 END_INTERFACE 1774 } IXAudio2ExtensionVtbl; 1775 1776 interface IXAudio2Extension { 1777 CONST_VTBL IXAudio2ExtensionVtbl* lpVtbl; 1778 }; 1779 1780 #ifdef COBJMACROS 1781 #ifndef WIDL_C_INLINE_WRAPPERS 1782 /*** IUnknown methods ***/ 1783 #define IXAudio2Extension_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 1784 #define IXAudio2Extension_AddRef(This) (This)->lpVtbl->AddRef(This) 1785 #define IXAudio2Extension_Release(This) (This)->lpVtbl->Release(This) 1786 /*** IXAudio2Extension methods ***/ 1787 #define IXAudio2Extension_GetProcessingQuantum(This,quantum_numerator,quantum_denominator) (This)->lpVtbl->GetProcessingQuantum(This,quantum_numerator,quantum_denominator) 1788 #define IXAudio2Extension_GetProcessor(This,processor) (This)->lpVtbl->GetProcessor(This,processor) 1789 #else 1790 /*** IUnknown methods ***/ 1791 static inline HRESULT IXAudio2Extension_QueryInterface(IXAudio2Extension* This,REFIID riid,void **ppvObject) { 1792 return This->lpVtbl->QueryInterface(This,riid,ppvObject); 1793 } 1794 static inline ULONG IXAudio2Extension_AddRef(IXAudio2Extension* This) { 1795 return This->lpVtbl->AddRef(This); 1796 } 1797 static inline ULONG IXAudio2Extension_Release(IXAudio2Extension* This) { 1798 return This->lpVtbl->Release(This); 1799 } 1800 /*** IXAudio2Extension methods ***/ 1801 static inline void IXAudio2Extension_GetProcessingQuantum(IXAudio2Extension* This,UINT32 *quantum_numerator,UINT32 *quantum_denominator) { 1802 This->lpVtbl->GetProcessingQuantum(This,quantum_numerator,quantum_denominator); 1803 } 1804 static inline void IXAudio2Extension_GetProcessor(IXAudio2Extension* This,XAUDIO2_PROCESSOR *processor) { 1805 This->lpVtbl->GetProcessor(This,processor); 1806 } 1807 #endif 1808 #endif 1809 1810 #endif 1811 1812 1813 #endif /* __IXAudio2Extension_INTERFACE_DEFINED__ */ 1814 1815 #define XAUDIO2_DEBUG_ENGINE (0x1) 1816 1817 #define XAUDIO2_VOICE_NOPITCH (0x2) 1818 1819 #define XAUDIO2_VOICE_NOSRC (0x4) 1820 1821 #define XAUDIO2_VOICE_USEFILTER (0x8) 1822 1823 #define XAUDIO2_VOICE_MUSIC (0x10) 1824 1825 #define XAUDIO2_PLAY_TAILS (0x20) 1826 1827 #define XAUDIO2_END_OF_STREAM (0x40) 1828 1829 #define XAUDIO2_SEND_USEFILTER (0x80) 1830 1831 #define XAUDIO2_VOICE_NOSAMPLESPLAYED (0x100) 1832 1833 #define XAUDIO2_DEFAULT_FILTER_TYPE (LowPassFilter) 1834 1835 #define XAUDIO2_DEFAULT_FILTER_FREQUENCY (XAUDIO2_MAX_FILTER_FREQUENCY) 1836 1837 #define XAUDIO2_DEFAULT_FILTER_ONEOVERQ (1.00000000000000) 1838 1839 #define XAUDIO2_QUANTUM_NUMERATOR (1) 1840 1841 #define XAUDIO2_QUANTUM_DENOMINATOR (100) 1842 1843 #define XAUDIO2_QUANTUM_MS ((1000.00000000000 * XAUDIO2_QUANTUM_NUMERATOR) / XAUDIO2_QUANTUM_DENOMINATOR) 1844 1845 #define XAUDIO2_E_INVALID_CALL ((HRESULT)0x88960001) 1846 #define XAUDIO2_E_XMA_DECODER_ERROR ((HRESULT)0x88960002) 1847 #define XAUDIO2_E_XAPO_CREATION_FAILED ((HRESULT)0x88960003) 1848 #define XAUDIO2_E_DEVICE_INVALIDATED ((HRESULT)0x88960004) 1849 #ifdef XAUDIO2_HELPER_FUNCTIONS 1850 #define _USE_MATH_DEFINES 1851 #include <math.h> 1852 inline static float XAudio2DecibelsToAmplitudeRatio(float decibels) { return powf(10.0f, decibels/20.0f); } 1853 inline static float XAudio2AmplitudeRatioToDecibels(float volume) { if (volume == 0) { return -3.402823466e+38f; } return 20.0f * log10f(volume); } 1854 inline static float XAudio2SemitonesToFrequencyRatio(float semitones) { return powf(2.0f, semitones/12.0f); } 1855 inline static float XAudio2FrequencyRatioToSemitones(float freqratio) { return 39.86313713864835f * log10f(freqratio); } 1856 inline static float XAudio2CutoffFrequencyToRadians(float cutofffreq, UINT32 samplerate) { if ((UINT32)(cutofffreq * 6.0f) >= samplerate) { return XAUDIO2_MAX_FILTER_FREQUENCY; } return 2.0f * sinf((float)M_PI * cutofffreq / samplerate); } 1857 inline static float XAudio2RadiansToCutoffFrequency(float radians, float samplerate) { return samplerate * asinf(radians/2.0f) / (float)M_PI; } 1858 #endif 1859 #pragma pack(pop) 1860 HRESULT WINAPI XAudio2Create(IXAudio2** pxaudio2, UINT32 flags, XAUDIO2_PROCESSOR processor); 1861 /* Begin additional prototypes for all interfaces */ 1862 1863 1864 /* End additional prototypes */ 1865 1866 #ifdef __cplusplus 1867 } 1868 #endif 1869 1870 #endif /* __xaudio2_h__ */