From d1e582864405ae689814ee455324c6142f6e0a84 Mon Sep 17 00:00:00 2001 From: Ani Date: Sun, 28 Aug 2022 18:17:00 +0100 Subject: [PATCH] XAudio2: Update from 1.2.8 to 1.2.9 --- .../XAudio2Redist/include/xaudio2redist.h | 2551 +++++++++-------- .../XAudio2Redist/libs/xaudio2_9redist.lib | Bin 2980 -> 2980 bytes bin/xaudio2_9redist.dll | Bin 969104 -> 969120 bytes 3 files changed, 1276 insertions(+), 1275 deletions(-) diff --git a/3rdparty/XAudio2Redist/include/xaudio2redist.h b/3rdparty/XAudio2Redist/include/xaudio2redist.h index c27a9218a6..fd10847c99 100644 --- a/3rdparty/XAudio2Redist/include/xaudio2redist.h +++ b/3rdparty/XAudio2Redist/include/xaudio2redist.h @@ -1,1275 +1,1276 @@ -/************************************************************************** - * - * Copyright (c) Microsoft Corporation. All rights reserved. - * - * File: xaudio2.h - * Content: Declarations for the XAudio2 game audio API. - * - **************************************************************************/ - -#ifdef _MSC_VER -#pragma once -#endif - -#ifndef __XAUDIO2_INCLUDED__ -#define __XAUDIO2_INCLUDED__ - -#include - -// Current name of the DLL shipped in the same SDK as this header. -// The name reflects the current version -#define XAUDIO2_DLL_A "xaudio2_9redist.dll" -#define XAUDIO2_DLL_W L"xaudio2_9redist.dll" -#define XAUDIO2D_DLL_A "xaudio2_9redist.dll" -#define XAUDIO2D_DLL_W L"xaudio2_9redist.dll" - -#ifdef UNICODE - #define XAUDIO2_DLL XAUDIO2_DLL_W - #define XAUDIO2D_DLL XAUDIO2D_DLL_W -#else - #define XAUDIO2_DLL XAUDIO2_DLL_A - #define XAUDIO2D_DLL XAUDIO2D_DLL_A -#endif - - -/************************************************************************** - * - * XAudio2 COM object class and interface IDs. - * - **************************************************************************/ - -#include - -#ifdef __cplusplus - // XAudio 2.9 - interface __declspec(uuid("2B02E3CF-2E0B-4ec3-BE45-1B2A3FE7210D")) IXAudio2; - interface __declspec(uuid("84ac29bb-d619-44d2-b197-e4acf7df3ed6")) IXAudio2Extension; - EXTERN_C const GUID DECLSPEC_SELECTANY IID_IXAudio2Extension = __uuidof(IXAudio2Extension); - EXTERN_C const GUID DECLSPEC_SELECTANY IID_IXAudio2 = __uuidof(IXAudio2); - -#else // #ifdef __cplusplus - // Compiling with C for Windows 10 and later - DEFINE_GUID(IID_IXAudio2, 0x2B02E3CF, 0x2E0B, 0x4ec3, 0xBE, 0x45, 0x1B, 0x2A, 0x3F, 0xE7, 0x21, 0x0D); - DEFINE_GUID(IID_IXAudio2Extension, 0x84ac29bb, 0xd619, 0x44d2, 0xb1, 0x97, 0xe4, 0xac, 0xf7, 0xdf, 0x3e, 0xd6); -#endif // #ifdef __cplusplus - - -// Ignore the rest of this header if only the GUID definitions were requested -#ifndef GUID_DEFS_ONLY - -#include // Windows COM declarations -#include // Markers for documenting API semantics -#include // Basic data types and constants for audio work -#include // For AUDIO_STREAM_CATEGORY - -// The Windows 7 version of audiosessiontypes.h does not define AUDIO_STREAM_CATEGORY, so if we are targeting -// Windows 7 we might have to define it here, depending on which SDK is used. -#if _WIN32_WINNT < _WIN32_WINNT_WIN8 - -// If we are compiling for Windows 7, we might be using the Windows 7 Platform SDK, which does not have AUDIO_STREAM_CATEGORY. -// But we might be using a newer SDK (such as the Win8 Platform SDK), which has AUDIO_STREAM_CATEGORY. -// Determine if we are using the Windows 7 Platform SDK by checking if WAVE_FORMAT_WM9_SPECTRUM_ANALYZER is defined. -#ifndef WAVE_FORMAT_WM9_SPECTRUM_ANALYZER -typedef enum _AUDIO_STREAM_CATEGORY -{ - AudioCategory_Other = 0, - AudioCategory_ForegroundOnlyMedia = 1, - AudioCategory_Communications = 3, - AudioCategory_Alerts = 4, - AudioCategory_SoundEffects = 5, - AudioCategory_GameEffects = 6, - AudioCategory_GameMedia = 7, - AudioCategory_GameChat = 8, - AudioCategory_Speech = 9, - AudioCategory_Movie = 10, - AudioCategory_Media = 11, -} AUDIO_STREAM_CATEGORY; -#endif /* WAVE_FORMAT_WM9_SPECTRUM_ANALYZER */ -#endif /* NTDDI_VERSION < NTDDI_WIN8 */ - -// All structures defined in this file use tight field packing -#pragma pack(push, 1) - - -/************************************************************************** - * - * XAudio2 constants, flags and error codes. - * - **************************************************************************/ - -// Numeric boundary values -#define XAUDIO2_MAX_BUFFER_BYTES 0x80000000 // Maximum bytes allowed in a source buffer -#define XAUDIO2_MAX_QUEUED_BUFFERS 64 // Maximum buffers allowed in a voice queue -#define XAUDIO2_MAX_BUFFERS_SYSTEM 2 // Maximum buffers allowed for system threads (Xbox 360 only) -#define XAUDIO2_MAX_AUDIO_CHANNELS 64 // Maximum channels in an audio stream -#define XAUDIO2_MIN_SAMPLE_RATE 1000 // Minimum audio sample rate supported -#define XAUDIO2_MAX_SAMPLE_RATE 200000 // Maximum audio sample rate supported -#define XAUDIO2_MAX_VOLUME_LEVEL 16777216.0f // Maximum acceptable volume level (2^24) -#define XAUDIO2_MIN_FREQ_RATIO (1/1024.0f) // Minimum SetFrequencyRatio argument -#define XAUDIO2_MAX_FREQ_RATIO 1024.0f // Maximum MaxFrequencyRatio argument -#define XAUDIO2_DEFAULT_FREQ_RATIO 2.0f // Default MaxFrequencyRatio argument -#define XAUDIO2_MAX_FILTER_ONEOVERQ 1.5f // Maximum XAUDIO2_FILTER_PARAMETERS.OneOverQ -#define XAUDIO2_MAX_FILTER_FREQUENCY 1.0f // Maximum XAUDIO2_FILTER_PARAMETERS.Frequency -#define XAUDIO2_MAX_LOOP_COUNT 254 // Maximum non-infinite XAUDIO2_BUFFER.LoopCount -#define XAUDIO2_MAX_INSTANCES 8 // Maximum simultaneous XAudio2 objects on Xbox 360 - -// For XMA voices on Xbox 360 there is an additional restriction on the MaxFrequencyRatio -// argument and the voice's sample rate: the product of these numbers cannot exceed 600000 -// for one-channel voices or 300000 for voices with more than one channel. -#define XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO 600000 -#define XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL 300000 - -// Numeric values with special meanings -#define XAUDIO2_COMMIT_NOW 0 // Used as an OperationSet argument -#define XAUDIO2_COMMIT_ALL 0 // Used in IXAudio2::CommitChanges -#define XAUDIO2_INVALID_OPSET (UINT32)(-1) // Not allowed for OperationSet arguments -#define XAUDIO2_NO_LOOP_REGION 0 // Used in XAUDIO2_BUFFER.LoopCount -#define XAUDIO2_LOOP_INFINITE 255 // Used in XAUDIO2_BUFFER.LoopCount -#define XAUDIO2_DEFAULT_CHANNELS 0 // Used in CreateMasteringVoice -#define XAUDIO2_DEFAULT_SAMPLERATE 0 // Used in CreateMasteringVoice - -// Flags -#define XAUDIO2_DEBUG_ENGINE 0x0001 // Used in XAudio2Create -#define XAUDIO2_VOICE_NOPITCH 0x0002 // Used in IXAudio2::CreateSourceVoice -#define XAUDIO2_VOICE_NOSRC 0x0004 // Used in IXAudio2::CreateSourceVoice -#define XAUDIO2_VOICE_USEFILTER 0x0008 // Used in IXAudio2::CreateSource/SubmixVoice -#define XAUDIO2_PLAY_TAILS 0x0020 // Used in IXAudio2SourceVoice::Stop -#define XAUDIO2_END_OF_STREAM 0x0040 // Used in XAUDIO2_BUFFER.Flags -#define XAUDIO2_SEND_USEFILTER 0x0080 // Used in XAUDIO2_SEND_DESCRIPTOR.Flags -#define XAUDIO2_VOICE_NOSAMPLESPLAYED 0x0100 // Used in IXAudio2SourceVoice::GetState -#define XAUDIO2_STOP_ENGINE_WHEN_IDLE 0x2000 // Used in XAudio2Create to force the engine to Stop when no source voices are Started, and Start when a voice is Started -#define XAUDIO2_1024_QUANTUM 0x8000 // Used in XAudio2Create to specify nondefault processing quantum of 21.33 ms (1024 samples at 48KHz) -#define XAUDIO2_NO_VIRTUAL_AUDIO_CLIENT 0x10000 // Used in CreateMasteringVoice to create a virtual audio client - -// Default parameters for the built-in filter -#define XAUDIO2_DEFAULT_FILTER_TYPE LowPassFilter -#define XAUDIO2_DEFAULT_FILTER_FREQUENCY XAUDIO2_MAX_FILTER_FREQUENCY -#define XAUDIO2_DEFAULT_FILTER_ONEOVERQ 1.0f - -// Internal XAudio2 constants -// The audio frame quantum can be calculated by reducing the fraction: -// SamplesPerAudioFrame / SamplesPerSecond -#define XAUDIO2_QUANTUM_NUMERATOR 1 // On Windows, XAudio2 processes audio -#define XAUDIO2_QUANTUM_DENOMINATOR 100 // in 10ms chunks (= 1/100 seconds) -#define XAUDIO2_QUANTUM_MS (1000.0f * XAUDIO2_QUANTUM_NUMERATOR / XAUDIO2_QUANTUM_DENOMINATOR) - -// XAudio2 error codes -#define FACILITY_XAUDIO2 0x896 -#define XAUDIO2_E_INVALID_CALL ((HRESULT)0x88960001) // An API call or one of its arguments was illegal -#define XAUDIO2_E_XMA_DECODER_ERROR ((HRESULT)0x88960002) // The XMA hardware suffered an unrecoverable error -#define XAUDIO2_E_XAPO_CREATION_FAILED ((HRESULT)0x88960003) // XAudio2 failed to initialize an XAPO effect -#define XAUDIO2_E_DEVICE_INVALIDATED ((HRESULT)0x88960004) // An audio device became unusable (unplugged, etc) - -/************************************************************************** - * - * Forward declarations for the XAudio2 interfaces. - * - **************************************************************************/ - -#ifdef __cplusplus - #define FWD_DECLARE(x) interface x -#else - #define FWD_DECLARE(x) typedef interface x x -#endif - -FWD_DECLARE(IXAudio2); -FWD_DECLARE(IXAudio2Voice); -FWD_DECLARE(IXAudio2SourceVoice); -FWD_DECLARE(IXAudio2SubmixVoice); -FWD_DECLARE(IXAudio2MasteringVoice); -FWD_DECLARE(IXAudio2EngineCallback); -FWD_DECLARE(IXAudio2VoiceCallback); - - -/************************************************************************** - * - * XAudio2 structures and enumerations. - * - **************************************************************************/ - -// Used in XAudio2Create, specifies which CPU(s) to use. -typedef UINT32 XAUDIO2_PROCESSOR; -#define Processor1 0x00000001 -#define Processor2 0x00000002 -#define Processor3 0x00000004 -#define Processor4 0x00000008 -#define Processor5 0x00000010 -#define Processor6 0x00000020 -#define Processor7 0x00000040 -#define Processor8 0x00000080 -#define Processor9 0x00000100 -#define Processor10 0x00000200 -#define Processor11 0x00000400 -#define Processor12 0x00000800 -#define Processor13 0x00001000 -#define Processor14 0x00002000 -#define Processor15 0x00004000 -#define Processor16 0x00008000 -#define Processor17 0x00010000 -#define Processor18 0x00020000 -#define Processor19 0x00040000 -#define Processor20 0x00080000 -#define Processor21 0x00100000 -#define Processor22 0x00200000 -#define Processor23 0x00400000 -#define Processor24 0x00800000 -#define Processor25 0x01000000 -#define Processor26 0x02000000 -#define Processor27 0x04000000 -#define Processor28 0x08000000 -#define Processor29 0x10000000 -#define Processor30 0x20000000 -#define Processor31 0x40000000 -#define Processor32 0x80000000 -#define XAUDIO2_ANY_PROCESSOR 0xffffffff - -// This value indicates that XAudio2 will choose the default processor by itself. The actual value chosen -// may vary depending on the hardware platform. -#define XAUDIO2_USE_DEFAULT_PROCESSOR 0x00000000 - -// This definition is included for backwards compatibilty. New implementations should use -// XAUDIO2_USE_DEFAULT_PROCESSOR instead to let XAudio2 select the appropriate default processor for the hardware platform. -#define XAUDIO2_DEFAULT_PROCESSOR Processor1 - -// Returned by IXAudio2Voice::GetVoiceDetails -typedef struct XAUDIO2_VOICE_DETAILS -{ - UINT32 CreationFlags; // Flags the voice was created with. - UINT32 ActiveFlags; // Flags currently active. - UINT32 InputChannels; // Channels in the voice's input audio. - UINT32 InputSampleRate; // Sample rate of the voice's input audio. -} XAUDIO2_VOICE_DETAILS; - -// Used in XAUDIO2_VOICE_SENDS below -typedef struct XAUDIO2_SEND_DESCRIPTOR -{ - UINT32 Flags; // Either 0 or XAUDIO2_SEND_USEFILTER. - IXAudio2Voice* pOutputVoice; // This send's destination voice. -} XAUDIO2_SEND_DESCRIPTOR; - -// Used in the voice creation functions and in IXAudio2Voice::SetOutputVoices -typedef struct XAUDIO2_VOICE_SENDS -{ - UINT32 SendCount; // Number of sends from this voice. - XAUDIO2_SEND_DESCRIPTOR* pSends; // Array of SendCount send descriptors. -} XAUDIO2_VOICE_SENDS; - -// Used in XAUDIO2_EFFECT_CHAIN below -typedef struct XAUDIO2_EFFECT_DESCRIPTOR -{ - IUnknown* pEffect; // Pointer to the effect object's IUnknown interface. - BOOL InitialState; // TRUE if the effect should begin in the enabled state. - UINT32 OutputChannels; // How many output channels the effect should produce. -} XAUDIO2_EFFECT_DESCRIPTOR; - -// Used in the voice creation functions and in IXAudio2Voice::SetEffectChain -typedef struct XAUDIO2_EFFECT_CHAIN -{ - UINT32 EffectCount; // Number of effects in this voice's effect chain. - XAUDIO2_EFFECT_DESCRIPTOR* pEffectDescriptors; // Array of effect descriptors. -} XAUDIO2_EFFECT_CHAIN; - -// Used in XAUDIO2_FILTER_PARAMETERS below -typedef enum XAUDIO2_FILTER_TYPE -{ - LowPassFilter, // Attenuates frequencies above the cutoff frequency (state-variable filter). - BandPassFilter, // Attenuates frequencies outside a given range (state-variable filter). - HighPassFilter, // Attenuates frequencies below the cutoff frequency (state-variable filter). - NotchFilter, // Attenuates frequencies inside a given range (state-variable filter). - LowPassOnePoleFilter, // Attenuates frequencies above the cutoff frequency (one-pole filter, XAUDIO2_FILTER_PARAMETERS.OneOverQ has no effect) - HighPassOnePoleFilter // Attenuates frequencies below the cutoff frequency (one-pole filter, XAUDIO2_FILTER_PARAMETERS.OneOverQ has no effect) -} XAUDIO2_FILTER_TYPE; - -// Used in IXAudio2Voice::Set/GetFilterParameters and Set/GetOutputFilterParameters -typedef struct XAUDIO2_FILTER_PARAMETERS -{ - XAUDIO2_FILTER_TYPE Type; // Filter type. - float Frequency; // Filter coefficient. - // must be >= 0 and <= XAUDIO2_MAX_FILTER_FREQUENCY - // See XAudio2CutoffFrequencyToRadians() for state-variable filter types and - // XAudio2CutoffFrequencyToOnePoleCoefficient() for one-pole filter types. - float OneOverQ; // Reciprocal of the filter's quality factor Q; - // must be > 0 and <= XAUDIO2_MAX_FILTER_ONEOVERQ. - // Has no effect for one-pole filters. -} XAUDIO2_FILTER_PARAMETERS; - -// Used in IXAudio2SourceVoice::SubmitSourceBuffer -typedef struct XAUDIO2_BUFFER -{ - UINT32 Flags; // Either 0 or XAUDIO2_END_OF_STREAM. - UINT32 AudioBytes; // Size of the audio data buffer in bytes. - const BYTE* pAudioData; // Pointer to the audio data buffer. - UINT32 PlayBegin; // First sample in this buffer to be played. - UINT32 PlayLength; // Length of the region to be played in samples, - // or 0 to play the whole buffer. - UINT32 LoopBegin; // First sample of the region to be looped. - UINT32 LoopLength; // Length of the desired loop region in samples, - // or 0 to loop the entire buffer. - UINT32 LoopCount; // Number of times to repeat the loop region, - // or XAUDIO2_LOOP_INFINITE to loop forever. - void* pContext; // Context value to be passed back in callbacks. -} XAUDIO2_BUFFER; - -// Used in IXAudio2SourceVoice::SubmitSourceBuffer when submitting XWMA data. -// NOTE: If an XWMA sound is submitted in more than one buffer, each buffer's -// pDecodedPacketCumulativeBytes[PacketCount-1] value must be subtracted from -// all the entries in the next buffer's pDecodedPacketCumulativeBytes array. -// And whether a sound is submitted in more than one buffer or not, the final -// buffer of the sound should use the XAUDIO2_END_OF_STREAM flag, or else the -// client must call IXAudio2SourceVoice::Discontinuity after submitting it. -typedef struct XAUDIO2_BUFFER_WMA -{ - const UINT32* pDecodedPacketCumulativeBytes; // Decoded packet's cumulative size array. - // Each element is the number of bytes accumulated - // when the corresponding XWMA packet is decoded in - // order. The array must have PacketCount elements. - UINT32 PacketCount; // Number of XWMA packets submitted. Must be >= 1 and - // divide evenly into XAUDIO2_BUFFER.AudioBytes. -} XAUDIO2_BUFFER_WMA; - -// Returned by IXAudio2SourceVoice::GetState -typedef struct XAUDIO2_VOICE_STATE -{ - void* pCurrentBufferContext; // The pContext value provided in the XAUDIO2_BUFFER - // that is currently being processed, or NULL if - // there are no buffers in the queue. - UINT32 BuffersQueued; // Number of buffers currently queued on the voice - // (including the one that is being processed). - UINT64 SamplesPlayed; // Total number of samples produced by the voice since - // it began processing the current audio stream. - // If XAUDIO2_VOICE_NOSAMPLESPLAYED is specified - // in the call to IXAudio2SourceVoice::GetState, - // this member will not be calculated, saving CPU. -} XAUDIO2_VOICE_STATE; - -// Returned by IXAudio2::GetPerformanceData -typedef struct XAUDIO2_PERFORMANCE_DATA -{ - // CPU usage information - UINT64 AudioCyclesSinceLastQuery; // CPU cycles spent on audio processing since the - // last call to StartEngine or GetPerformanceData. - UINT64 TotalCyclesSinceLastQuery; // Total CPU cycles elapsed since the last call - // (only counts the CPU XAudio2 is running on). - UINT32 MinimumCyclesPerQuantum; // Fewest CPU cycles spent processing any one - // audio quantum since the last call. - UINT32 MaximumCyclesPerQuantum; // Most CPU cycles spent processing any one - // audio quantum since the last call. - - // Memory usage information - UINT32 MemoryUsageInBytes; // Total heap space currently in use. - - // Audio latency and glitching information - UINT32 CurrentLatencyInSamples; // Minimum delay from when a sample is read from a - // source buffer to when it reaches the speakers. - UINT32 GlitchesSinceEngineStarted; // Audio dropouts since the engine was started. - - // Data about XAudio2's current workload - UINT32 ActiveSourceVoiceCount; // Source voices currently playing. - UINT32 TotalSourceVoiceCount; // Source voices currently existing. - UINT32 ActiveSubmixVoiceCount; // Submix voices currently playing/existing. - - UINT32 ActiveResamplerCount; // Resample xAPOs currently active. - UINT32 ActiveMatrixMixCount; // MatrixMix xAPOs currently active. - - // Usage of the hardware XMA decoder (Xbox 360 only) - UINT32 ActiveXmaSourceVoices; // Number of source voices decoding XMA data. - UINT32 ActiveXmaStreams; // A voice can use more than one XMA stream. -} XAUDIO2_PERFORMANCE_DATA; - -// Used in IXAudio2::SetDebugConfiguration -typedef struct XAUDIO2_DEBUG_CONFIGURATION -{ - UINT32 TraceMask; // Bitmap of enabled debug message types. - UINT32 BreakMask; // Message types that will break into the debugger. - BOOL LogThreadID; // Whether to log the thread ID with each message. - BOOL LogFileline; // Whether to log the source file and line number. - BOOL LogFunctionName; // Whether to log the function name. - BOOL LogTiming; // Whether to log message timestamps. -} XAUDIO2_DEBUG_CONFIGURATION; - -// Values for the TraceMask and BreakMask bitmaps. Only ERRORS and WARNINGS -// are valid in BreakMask. WARNINGS implies ERRORS, DETAIL implies INFO, and -// FUNC_CALLS implies API_CALLS. By default, TraceMask is ERRORS and WARNINGS -// and all the other settings are zero. -#define XAUDIO2_LOG_ERRORS 0x0001 // For handled errors with serious effects. -#define XAUDIO2_LOG_WARNINGS 0x0002 // For handled errors that may be recoverable. -#define XAUDIO2_LOG_INFO 0x0004 // Informational chit-chat (e.g. state changes). -#define XAUDIO2_LOG_DETAIL 0x0008 // More detailed chit-chat. -#define XAUDIO2_LOG_API_CALLS 0x0010 // Public API function entries and exits. -#define XAUDIO2_LOG_FUNC_CALLS 0x0020 // Internal function entries and exits. -#define XAUDIO2_LOG_TIMING 0x0040 // Delays detected and other timing data. -#define XAUDIO2_LOG_LOCKS 0x0080 // Usage of critical sections and mutexes. -#define XAUDIO2_LOG_MEMORY 0x0100 // Memory heap usage information. -#define XAUDIO2_LOG_STREAMING 0x1000 // Audio streaming information. - - -/************************************************************************** - * - * IXAudio2: Top-level XAudio2 COM interface. - * - **************************************************************************/ - -// Use default arguments if compiling as C++ -#ifdef __cplusplus - #define X2DEFAULT(x) =x -#else - #define X2DEFAULT(x) -#endif - -#undef INTERFACE -#define INTERFACE IXAudio2 -DECLARE_INTERFACE_(IXAudio2, IUnknown) -{ - // NAME: IXAudio2::QueryInterface - // DESCRIPTION: Queries for a given COM interface on the XAudio2 object. - // Only IID_IUnknown, IID_IXAudio2 and IID_IXaudio2Extension are supported. - // - // ARGUMENTS: - // riid - IID of the interface to be obtained. - // ppvInterface - Returns a pointer to the requested interface. - // - STDMETHOD(QueryInterface) (THIS_ REFIID riid, _COM_Outptr_ void** ppvInterface) PURE; - - // NAME: IXAudio2::AddRef - // DESCRIPTION: Adds a reference to the XAudio2 object. - // - STDMETHOD_(ULONG, AddRef) (THIS) PURE; - - // NAME: IXAudio2::Release - // DESCRIPTION: Releases a reference to the XAudio2 object. - // - STDMETHOD_(ULONG, Release) (THIS) PURE; - - // NAME: IXAudio2::RegisterForCallbacks - // DESCRIPTION: Adds a new client to receive XAudio2's engine callbacks. - // - // ARGUMENTS: - // pCallback - Callback interface to be called during each processing pass. - // - STDMETHOD(RegisterForCallbacks) (THIS_ _In_ IXAudio2EngineCallback* pCallback) PURE; - - // NAME: IXAudio2::UnregisterForCallbacks - // DESCRIPTION: Removes an existing receiver of XAudio2 engine callbacks. - // - // ARGUMENTS: - // pCallback - Previously registered callback interface to be removed. - // - STDMETHOD_(void, UnregisterForCallbacks) (THIS_ _In_ IXAudio2EngineCallback* pCallback) PURE; - - // NAME: IXAudio2::CreateSourceVoice - // DESCRIPTION: Creates and configures a source voice. - // - // ARGUMENTS: - // ppSourceVoice - Returns the new object's IXAudio2SourceVoice interface. - // pSourceFormat - Format of the audio that will be fed to the voice. - // Flags - XAUDIO2_VOICE flags specifying the source voice's behavior. - // MaxFrequencyRatio - Maximum SetFrequencyRatio argument to be allowed. - // pCallback - Optional pointer to a client-provided callback interface. - // pSendList - Optional list of voices this voice should send audio to. - // pEffectChain - Optional list of effects to apply to the audio data. - // - STDMETHOD(CreateSourceVoice) (THIS_ _Outptr_ IXAudio2SourceVoice** ppSourceVoice, - _In_ const WAVEFORMATEX* pSourceFormat, - UINT32 Flags X2DEFAULT(0), - float MaxFrequencyRatio X2DEFAULT(XAUDIO2_DEFAULT_FREQ_RATIO), - _In_opt_ IXAudio2VoiceCallback* pCallback X2DEFAULT(NULL), - _In_opt_ const XAUDIO2_VOICE_SENDS* pSendList X2DEFAULT(NULL), - _In_opt_ const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE; - - // NAME: IXAudio2::CreateSubmixVoice - // DESCRIPTION: Creates and configures a submix voice. - // - // ARGUMENTS: - // ppSubmixVoice - Returns the new object's IXAudio2SubmixVoice interface. - // InputChannels - Number of channels in this voice's input audio data. - // InputSampleRate - Sample rate of this voice's input audio data. - // Flags - XAUDIO2_VOICE flags specifying the submix voice's behavior. - // ProcessingStage - Arbitrary number that determines the processing order. - // pSendList - Optional list of voices this voice should send audio to. - // pEffectChain - Optional list of effects to apply to the audio data. - // - STDMETHOD(CreateSubmixVoice) (THIS_ _Outptr_ IXAudio2SubmixVoice** ppSubmixVoice, - UINT32 InputChannels, UINT32 InputSampleRate, - UINT32 Flags X2DEFAULT(0), UINT32 ProcessingStage X2DEFAULT(0), - _In_opt_ const XAUDIO2_VOICE_SENDS* pSendList X2DEFAULT(NULL), - _In_opt_ const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE; - - - // NAME: IXAudio2::CreateMasteringVoice - // DESCRIPTION: Creates and configures a mastering voice. - // - // ARGUMENTS: - // ppMasteringVoice - Returns the new object's IXAudio2MasteringVoice interface. - // InputChannels - Number of channels in this voice's input audio data. - // InputSampleRate - Sample rate of this voice's input audio data. - // Flags - XAUDIO2_VOICE flags specifying the mastering voice's behavior. - // szDeviceId - Identifier of the device to receive the output audio. - // pEffectChain - Optional list of effects to apply to the audio data. - // StreamCategory - The audio stream category to use for this mastering voice - // - STDMETHOD(CreateMasteringVoice) (THIS_ _Outptr_ IXAudio2MasteringVoice** ppMasteringVoice, - UINT32 InputChannels X2DEFAULT(XAUDIO2_DEFAULT_CHANNELS), - UINT32 InputSampleRate X2DEFAULT(XAUDIO2_DEFAULT_SAMPLERATE), - UINT32 Flags X2DEFAULT(0), _In_opt_z_ LPCWSTR szDeviceId X2DEFAULT(NULL), - _In_opt_ const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL), - _In_ AUDIO_STREAM_CATEGORY StreamCategory X2DEFAULT(AudioCategory_GameEffects)) PURE; - - // NAME: IXAudio2::StartEngine - // DESCRIPTION: Creates and starts the audio processing thread. - // - STDMETHOD(StartEngine) (THIS) PURE; - - // NAME: IXAudio2::StopEngine - // DESCRIPTION: Stops and destroys the audio processing thread. - // - STDMETHOD_(void, StopEngine) (THIS) PURE; - - // NAME: IXAudio2::CommitChanges - // DESCRIPTION: Atomically applies a set of operations previously tagged - // with a given identifier. - // - // ARGUMENTS: - // OperationSet - Identifier of the set of operations to be applied. - // - STDMETHOD(CommitChanges) (THIS_ UINT32 OperationSet) PURE; - - // NAME: IXAudio2::GetPerformanceData - // DESCRIPTION: Returns current resource usage details: memory, CPU, etc. - // - // ARGUMENTS: - // pPerfData - Returns the performance data structure. - // - STDMETHOD_(void, GetPerformanceData) (THIS_ _Out_ XAUDIO2_PERFORMANCE_DATA* pPerfData) PURE; - - // NAME: IXAudio2::SetDebugConfiguration - // DESCRIPTION: Configures XAudio2's debug output (in debug builds only). - // - // ARGUMENTS: - // pDebugConfiguration - Structure describing the debug output behavior. - // pReserved - Optional parameter; must be NULL. - // - STDMETHOD_(void, SetDebugConfiguration) (THIS_ _In_opt_ const XAUDIO2_DEBUG_CONFIGURATION* pDebugConfiguration, - _Reserved_ void* pReserved X2DEFAULT(NULL)) PURE; -}; - -// This interface extends IXAudio2 with additional functionality. -// Use IXAudio2::QueryInterface to obtain a pointer to this interface. -#undef INTERFACE -#define INTERFACE IXAudio2Extension -DECLARE_INTERFACE_(IXAudio2Extension, IUnknown) -{ - // NAME: IXAudio2Extension::QueryInterface - // DESCRIPTION: Queries for a given COM interface on the XAudio2 object. - // Only IID_IUnknown, IID_IXAudio2 and IID_IXaudio2Extension are supported. - // - // ARGUMENTS: - // riid - IID of the interface to be obtained. - // ppvInterface - Returns a pointer to the requested interface. - // - STDMETHOD(QueryInterface) (THIS_ REFIID riid, _COM_Outptr_ void** ppvInterface) PURE; - - // NAME: IXAudio2Extension::AddRef - // DESCRIPTION: Adds a reference to the XAudio2 object. - // - STDMETHOD_(ULONG, AddRef) (THIS) PURE; - - // NAME: IXAudio2Extension::Release - // DESCRIPTION: Releases a reference to the XAudio2 object. - // - STDMETHOD_(ULONG, Release) (THIS) PURE; - - // NAME: IXAudio2Extension::GetProcessingQuantum - // DESCRIPTION: Returns the processing quantum - // quantumMilliseconds = (1000.0f * quantumNumerator / quantumDenominator) - // - // ARGUMENTS: - // quantumNumerator - Quantum numerator - // quantumDenominator - Quantum denominator - // - STDMETHOD_(void, GetProcessingQuantum)(THIS_ _Out_ UINT32* quantumNumerator, _Out_range_(!= , 0) UINT32* quantumDenominator); - - // NAME: IXAudio2Extension::GetProcessor - // DESCRIPTION: Returns the number of the processor used by XAudio2 - // - // ARGUMENTS: - // processor - Non-zero Processor number - // - STDMETHOD_(void, GetProcessor)(THIS_ _Out_range_(!= , 0) XAUDIO2_PROCESSOR* processor); -}; - -/************************************************************************** - * - * IXAudio2Voice: Base voice management interface. - * - **************************************************************************/ - -#undef INTERFACE -#define INTERFACE IXAudio2Voice -DECLARE_INTERFACE(IXAudio2Voice) -{ - // These methods are declared in a macro so that the same declarations - // can be used in the derived voice types (IXAudio2SourceVoice, etc). - - #define Declare_IXAudio2Voice_Methods() \ - \ - /* NAME: IXAudio2Voice::GetVoiceDetails - // DESCRIPTION: Returns the basic characteristics of this voice. - // - // ARGUMENTS: - // pVoiceDetails - Returns the voice's details. - */\ - STDMETHOD_(void, GetVoiceDetails) (THIS_ _Out_ XAUDIO2_VOICE_DETAILS* pVoiceDetails) PURE; \ - \ - /* NAME: IXAudio2Voice::SetOutputVoices - // DESCRIPTION: Replaces the set of submix/mastering voices that receive - // this voice's output. - // - // ARGUMENTS: - // pSendList - Optional list of voices this voice should send audio to. - */\ - STDMETHOD(SetOutputVoices) (THIS_ _In_opt_ const XAUDIO2_VOICE_SENDS* pSendList) PURE; \ - \ - /* NAME: IXAudio2Voice::SetEffectChain - // DESCRIPTION: Replaces this voice's current effect chain with a new one. - // - // ARGUMENTS: - // pEffectChain - Structure describing the new effect chain to be used. - */\ - STDMETHOD(SetEffectChain) (THIS_ _In_opt_ const XAUDIO2_EFFECT_CHAIN* pEffectChain) PURE; \ - \ - /* NAME: IXAudio2Voice::EnableEffect - // DESCRIPTION: Enables an effect in this voice's effect chain. - // - // ARGUMENTS: - // EffectIndex - Index of an effect within this voice's effect chain. - // OperationSet - Used to identify this call as part of a deferred batch. - */\ - STDMETHOD(EnableEffect) (THIS_ UINT32 EffectIndex, \ - UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ - \ - /* NAME: IXAudio2Voice::DisableEffect - // DESCRIPTION: Disables an effect in this voice's effect chain. - // - // ARGUMENTS: - // EffectIndex - Index of an effect within this voice's effect chain. - // OperationSet - Used to identify this call as part of a deferred batch. - */\ - STDMETHOD(DisableEffect) (THIS_ UINT32 EffectIndex, \ - UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ - \ - /* NAME: IXAudio2Voice::GetEffectState - // DESCRIPTION: Returns the running state of an effect. - // - // ARGUMENTS: - // EffectIndex - Index of an effect within this voice's effect chain. - // pEnabled - Returns the enabled/disabled state of the given effect. - */\ - STDMETHOD_(void, GetEffectState) (THIS_ UINT32 EffectIndex, _Out_ BOOL* pEnabled) PURE; \ - \ - /* NAME: IXAudio2Voice::SetEffectParameters - // DESCRIPTION: Sets effect-specific parameters. - // - // REMARKS: Unlike IXAPOParameters::SetParameters, this method may - // be called from any thread. XAudio2 implements - // appropriate synchronization to copy the parameters to the - // realtime audio processing thread. - // - // ARGUMENTS: - // EffectIndex - Index of an effect within this voice's effect chain. - // pParameters - Pointer to an effect-specific parameters block. - // ParametersByteSize - Size of the pParameters array in bytes. - // OperationSet - Used to identify this call as part of a deferred batch. - */\ - STDMETHOD(SetEffectParameters) (THIS_ UINT32 EffectIndex, \ - _In_reads_bytes_(ParametersByteSize) const void* pParameters, \ - UINT32 ParametersByteSize, \ - UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ - \ - /* NAME: IXAudio2Voice::GetEffectParameters - // DESCRIPTION: Obtains the current effect-specific parameters. - // - // ARGUMENTS: - // EffectIndex - Index of an effect within this voice's effect chain. - // pParameters - Returns the current values of the effect-specific parameters. - // ParametersByteSize - Size of the pParameters array in bytes. - */\ - STDMETHOD(GetEffectParameters) (THIS_ UINT32 EffectIndex, \ - _Out_writes_bytes_(ParametersByteSize) void* pParameters, \ - UINT32 ParametersByteSize) PURE; \ - \ - /* NAME: IXAudio2Voice::SetFilterParameters - // DESCRIPTION: Sets this voice's filter parameters. - // - // ARGUMENTS: - // pParameters - Pointer to the filter's parameter structure. - // OperationSet - Used to identify this call as part of a deferred batch. - */\ - STDMETHOD(SetFilterParameters) (THIS_ _In_ const XAUDIO2_FILTER_PARAMETERS* pParameters, \ - UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ - \ - /* NAME: IXAudio2Voice::GetFilterParameters - // DESCRIPTION: Returns this voice's current filter parameters. - // - // ARGUMENTS: - // pParameters - Returns the filter parameters. - */\ - STDMETHOD_(void, GetFilterParameters) (THIS_ _Out_ XAUDIO2_FILTER_PARAMETERS* pParameters) PURE; \ - \ - /* NAME: IXAudio2Voice::SetOutputFilterParameters - // DESCRIPTION: Sets the filter parameters on one of this voice's sends. - // - // ARGUMENTS: - // pDestinationVoice - Destination voice of the send whose filter parameters will be set. - // pParameters - Pointer to the filter's parameter structure. - // OperationSet - Used to identify this call as part of a deferred batch. - */\ - STDMETHOD(SetOutputFilterParameters) (THIS_ _In_opt_ IXAudio2Voice* pDestinationVoice, \ - _In_ const XAUDIO2_FILTER_PARAMETERS* pParameters, \ - UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ - \ - /* NAME: IXAudio2Voice::GetOutputFilterParameters - // DESCRIPTION: Returns the filter parameters from one of this voice's sends. - // - // ARGUMENTS: - // pDestinationVoice - Destination voice of the send whose filter parameters will be read. - // pParameters - Returns the filter parameters. - */\ - STDMETHOD_(void, GetOutputFilterParameters) (THIS_ _In_opt_ IXAudio2Voice* pDestinationVoice, \ - _Out_ XAUDIO2_FILTER_PARAMETERS* pParameters) PURE; \ - \ - /* NAME: IXAudio2Voice::SetVolume - // DESCRIPTION: Sets this voice's overall volume level. - // - // ARGUMENTS: - // Volume - New overall volume level to be used, as an amplitude factor. - // OperationSet - Used to identify this call as part of a deferred batch. - */\ - STDMETHOD(SetVolume) (THIS_ float Volume, \ - UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ - \ - /* NAME: IXAudio2Voice::GetVolume - // DESCRIPTION: Obtains this voice's current overall volume level. - // - // ARGUMENTS: - // pVolume: Returns the voice's current overall volume level. - */\ - STDMETHOD_(void, GetVolume) (THIS_ _Out_ float* pVolume) PURE; \ - \ - /* NAME: IXAudio2Voice::SetChannelVolumes - // DESCRIPTION: Sets this voice's per-channel volume levels. - // - // ARGUMENTS: - // Channels - Used to confirm the voice's channel count. - // pVolumes - Array of per-channel volume levels to be used. - // OperationSet - Used to identify this call as part of a deferred batch. - */\ - STDMETHOD(SetChannelVolumes) (THIS_ UINT32 Channels, _In_reads_(Channels) const float* pVolumes, \ - UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ - \ - /* NAME: IXAudio2Voice::GetChannelVolumes - // DESCRIPTION: Returns this voice's current per-channel volume levels. - // - // ARGUMENTS: - // Channels - Used to confirm the voice's channel count. - // pVolumes - Returns an array of the current per-channel volume levels. - */\ - STDMETHOD_(void, GetChannelVolumes) (THIS_ UINT32 Channels, _Out_writes_(Channels) float* pVolumes) PURE; \ - \ - /* NAME: IXAudio2Voice::SetOutputMatrix - // DESCRIPTION: Sets the volume levels used to mix from each channel of this - // voice's output audio to each channel of a given destination - // voice's input audio. - // - // ARGUMENTS: - // pDestinationVoice - The destination voice whose mix matrix to change. - // SourceChannels - Used to confirm this voice's output channel count - // (the number of channels produced by the last effect in the chain). - // DestinationChannels - Confirms the destination voice's input channels. - // pLevelMatrix - Array of [SourceChannels * DestinationChannels] send - // levels. The level used to send from source channel S to destination - // channel D should be in pLevelMatrix[S + SourceChannels * D]. - // OperationSet - Used to identify this call as part of a deferred batch. - */\ - STDMETHOD(SetOutputMatrix) (THIS_ _In_opt_ IXAudio2Voice* pDestinationVoice, \ - UINT32 SourceChannels, UINT32 DestinationChannels, \ - _In_reads_(SourceChannels * DestinationChannels) const float* pLevelMatrix, \ - UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ - \ - /* NAME: IXAudio2Voice::GetOutputMatrix - // DESCRIPTION: Obtains the volume levels used to send each channel of this - // voice's output audio to each channel of a given destination - // voice's input audio. - // - // ARGUMENTS: - // pDestinationVoice - The destination voice whose mix matrix to obtain. - // SourceChannels - Used to confirm this voice's output channel count - // (the number of channels produced by the last effect in the chain). - // DestinationChannels - Confirms the destination voice's input channels. - // pLevelMatrix - Array of send levels, as above. - */\ - STDMETHOD_(void, GetOutputMatrix) (THIS_ _In_opt_ IXAudio2Voice* pDestinationVoice, \ - UINT32 SourceChannels, UINT32 DestinationChannels, \ - _Out_writes_(SourceChannels * DestinationChannels) float* pLevelMatrix) PURE; \ - \ - /* NAME: IXAudio2Voice::DestroyVoice - // DESCRIPTION: Destroys this voice, stopping it if necessary and removing - // it from the XAudio2 graph. - */\ - STDMETHOD_(void, DestroyVoice) (THIS) PURE - - Declare_IXAudio2Voice_Methods(); -}; - - -/************************************************************************** - * - * IXAudio2SourceVoice: Source voice management interface. - * - **************************************************************************/ - -#undef INTERFACE -#define INTERFACE IXAudio2SourceVoice -DECLARE_INTERFACE_(IXAudio2SourceVoice, IXAudio2Voice) -{ - // Methods from IXAudio2Voice base interface - Declare_IXAudio2Voice_Methods(); - - // NAME: IXAudio2SourceVoice::Start - // DESCRIPTION: Makes this voice start consuming and processing audio. - // - // ARGUMENTS: - // Flags - Flags controlling how the voice should be started. - // OperationSet - Used to identify this call as part of a deferred batch. - // - STDMETHOD(Start) (THIS_ UINT32 Flags X2DEFAULT(0), UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; - - // NAME: IXAudio2SourceVoice::Stop - // DESCRIPTION: Makes this voice stop consuming audio. - // - // ARGUMENTS: - // Flags - Flags controlling how the voice should be stopped. - // OperationSet - Used to identify this call as part of a deferred batch. - // - STDMETHOD(Stop) (THIS_ UINT32 Flags X2DEFAULT(0), UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; - - // NAME: IXAudio2SourceVoice::SubmitSourceBuffer - // DESCRIPTION: Adds a new audio buffer to this voice's input queue. - // - // ARGUMENTS: - // pBuffer - Pointer to the buffer structure to be queued. - // pBufferWMA - Additional structure used only when submitting XWMA data. - // - STDMETHOD(SubmitSourceBuffer) (THIS_ _In_ const XAUDIO2_BUFFER* pBuffer, _In_opt_ const XAUDIO2_BUFFER_WMA* pBufferWMA X2DEFAULT(NULL)) PURE; - - // NAME: IXAudio2SourceVoice::FlushSourceBuffers - // DESCRIPTION: Removes all pending audio buffers from this voice's queue. - // - STDMETHOD(FlushSourceBuffers) (THIS) PURE; - - // NAME: IXAudio2SourceVoice::Discontinuity - // DESCRIPTION: Notifies the voice of an intentional break in the stream of - // audio buffers (e.g. the end of a sound), to prevent XAudio2 - // from interpreting an empty buffer queue as a glitch. - // - STDMETHOD(Discontinuity) (THIS) PURE; - - // NAME: IXAudio2SourceVoice::ExitLoop - // DESCRIPTION: Breaks out of the current loop when its end is reached. - // - // ARGUMENTS: - // OperationSet - Used to identify this call as part of a deferred batch. - // - STDMETHOD(ExitLoop) (THIS_ UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; - - // NAME: IXAudio2SourceVoice::GetState - // DESCRIPTION: Returns the number of buffers currently queued on this voice, - // the pContext value associated with the currently processing - // buffer (if any), and other voice state information. - // - // ARGUMENTS: - // pVoiceState - Returns the state information. - // Flags - Flags controlling what voice state is returned. - // - STDMETHOD_(void, GetState) (THIS_ _Out_ XAUDIO2_VOICE_STATE* pVoiceState, UINT32 Flags X2DEFAULT(0)) PURE; - - // NAME: IXAudio2SourceVoice::SetFrequencyRatio - // DESCRIPTION: Sets this voice's frequency adjustment, i.e. its pitch. - // - // ARGUMENTS: - // Ratio - Frequency change, expressed as source frequency / target frequency. - // OperationSet - Used to identify this call as part of a deferred batch. - // - STDMETHOD(SetFrequencyRatio) (THIS_ float Ratio, - UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; - - // NAME: IXAudio2SourceVoice::GetFrequencyRatio - // DESCRIPTION: Returns this voice's current frequency adjustment ratio. - // - // ARGUMENTS: - // pRatio - Returns the frequency adjustment. - // - STDMETHOD_(void, GetFrequencyRatio) (THIS_ _Out_ float* pRatio) PURE; - - // NAME: IXAudio2SourceVoice::SetSourceSampleRate - // DESCRIPTION: Reconfigures this voice to treat its source data as being - // at a different sample rate than the original one specified - // in CreateSourceVoice's pSourceFormat argument. - // - // ARGUMENTS: - // UINT32 - The intended sample rate of further submitted source data. - // - STDMETHOD(SetSourceSampleRate) (THIS_ UINT32 NewSourceSampleRate) PURE; -}; - - -/************************************************************************** - * - * IXAudio2SubmixVoice: Submixing voice management interface. - * - **************************************************************************/ - -#undef INTERFACE -#define INTERFACE IXAudio2SubmixVoice -DECLARE_INTERFACE_(IXAudio2SubmixVoice, IXAudio2Voice) -{ - // Methods from IXAudio2Voice base interface - Declare_IXAudio2Voice_Methods(); - - // There are currently no methods specific to submix voices. -}; - - -/************************************************************************** - * - * IXAudio2MasteringVoice: Mastering voice management interface. - * - **************************************************************************/ - -#undef INTERFACE -#define INTERFACE IXAudio2MasteringVoice -DECLARE_INTERFACE_(IXAudio2MasteringVoice, IXAudio2Voice) -{ - // Methods from IXAudio2Voice base interface - Declare_IXAudio2Voice_Methods(); - - // NAME: IXAudio2MasteringVoice::GetChannelMask - // DESCRIPTION: Returns the channel mask for this voice - // - // ARGUMENTS: - // pChannelMask - returns the channel mask for this voice. This corresponds - // to the dwChannelMask member of WAVEFORMATEXTENSIBLE. - // - STDMETHOD(GetChannelMask) (THIS_ _Out_ DWORD* pChannelmask) PURE; -}; - - -/************************************************************************** - * - * IXAudio2EngineCallback: Client notification interface for engine events. - * - * REMARKS: Contains methods to notify the client when certain events happen - * in the XAudio2 engine. This interface should be implemented by - * the client. XAudio2 will call these methods via the interface - * pointer provided by the client when it calls - * IXAudio2::RegisterForCallbacks. - * - **************************************************************************/ - -#undef INTERFACE -#define INTERFACE IXAudio2EngineCallback -DECLARE_INTERFACE(IXAudio2EngineCallback) -{ - // Called by XAudio2 just before an audio processing pass begins. - STDMETHOD_(void, OnProcessingPassStart) (THIS) PURE; - - // Called just after an audio processing pass ends. - STDMETHOD_(void, OnProcessingPassEnd) (THIS) PURE; - - // Called in the event of a critical system error which requires XAudio2 - // to be closed down and restarted. The error code is given in Error. - STDMETHOD_(void, OnCriticalError) (THIS_ HRESULT Error) PURE; -}; - - -/************************************************************************** - * - * IXAudio2VoiceCallback: Client notification interface for voice events. - * - * REMARKS: Contains methods to notify the client when certain events happen - * in an XAudio2 voice. This interface should be implemented by the - * client. XAudio2 will call these methods via an interface pointer - * provided by the client in the IXAudio2::CreateSourceVoice call. - * - **************************************************************************/ - -#undef INTERFACE -#define INTERFACE IXAudio2VoiceCallback -DECLARE_INTERFACE(IXAudio2VoiceCallback) -{ - // Called just before this voice's processing pass begins. - STDMETHOD_(void, OnVoiceProcessingPassStart) (THIS_ UINT32 BytesRequired) PURE; - - // Called just after this voice's processing pass ends. - STDMETHOD_(void, OnVoiceProcessingPassEnd) (THIS) PURE; - - // Called when this voice has just finished playing a buffer stream - // (as marked with the XAUDIO2_END_OF_STREAM flag on the last buffer). - STDMETHOD_(void, OnStreamEnd) (THIS) PURE; - - // Called when this voice is about to start processing a new buffer. - STDMETHOD_(void, OnBufferStart) (THIS_ void* pBufferContext) PURE; - - // Called when this voice has just finished processing a buffer. - // The buffer can now be reused or destroyed. - STDMETHOD_(void, OnBufferEnd) (THIS_ void* pBufferContext) PURE; - - // Called when this voice has just reached the end position of a loop. - STDMETHOD_(void, OnLoopEnd) (THIS_ void* pBufferContext) PURE; - - // Called in the event of a critical error during voice processing, - // such as a failing xAPO or an error from the hardware XMA decoder. - // The voice may have to be destroyed and re-created to recover from - // the error. The callback arguments report which buffer was being - // processed when the error occurred, and its HRESULT code. - STDMETHOD_(void, OnVoiceError) (THIS_ void* pBufferContext, HRESULT Error) PURE; -}; - - -/************************************************************************** - * - * Macros to make it easier to use the XAudio2 COM interfaces in C code. - * - **************************************************************************/ - -#ifndef __cplusplus - -// IXAudio2 -#define IXAudio2_QueryInterface(This,riid,ppvInterface) ((This)->lpVtbl->QueryInterface(This,riid,ppvInterface)) -#define IXAudio2_AddRef(This) ((This)->lpVtbl->AddRef(This)) -#define IXAudio2_Release(This) ((This)->lpVtbl->Release(This)) -#define IXAudio2_RegisterForCallbacks(This,pCallback) ((This)->lpVtbl->RegisterForCallbacks(This,pCallback)) -#define IXAudio2_UnregisterForCallbacks(This,pCallback) ((This)->lpVtbl->UnregisterForCallbacks(This,pCallback)) -#define IXAudio2_CreateSourceVoice(This,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain) ((This)->lpVtbl->CreateSourceVoice(This,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain)) -#define IXAudio2_CreateSubmixVoice(This,ppSubmixVoice,InputChannels,InputSampleRate,Flags,ProcessingStage,pSendList,pEffectChain) ((This)->lpVtbl->CreateSubmixVoice(This,ppSubmixVoice,InputChannels,InputSampleRate,Flags,ProcessingStage,pSendList,pEffectChain)) -#define IXAudio2_CreateMasteringVoice(This,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceId,pEffectChain,StreamCategory) ((This)->lpVtbl->CreateMasteringVoice(This,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceId,pEffectChain,StreamCategory)) -#define IXAudio2_StartEngine(This) ((This)->lpVtbl->StartEngine(This)) -#define IXAudio2_StopEngine(This) ((This)->lpVtbl->StopEngine(This)) -#define IXAudio2_CommitChanges(This,OperationSet) ((This)->lpVtbl->CommitChanges(This,OperationSet)) -#define IXAudio2_GetPerformanceData(This,pPerfData) ((This)->lpVtbl->GetPerformanceData(This,pPerfData)) -#define IXAudio2_SetDebugConfiguration(This,pDebugConfiguration,pReserved) ((This)->lpVtbl->SetDebugConfiguration(This,pDebugConfiguration,pReserved)) - -// IXAudio2Extension -#define IXAudio2Extension_GetProcessingQuantum(This,quantumNumerator,quantumDenominator) ((This)->lpVtbl->GetProcessingQuantum(This,quantumNumerator,quantumDenominator)) -#define IXAudio2Extension_GetProcessor(This,processor) ((This)->lpVtbl->GetProcessor(This,processor)) - -// IXAudio2Voice -#define IXAudio2Voice_GetVoiceDetails(This,pVoiceDetails) ((This)->lpVtbl->GetVoiceDetails(This,pVoiceDetails)) -#define IXAudio2Voice_SetOutputVoices(This,pSendList) ((This)->lpVtbl->SetOutputVoices(This,pSendList)) -#define IXAudio2Voice_SetEffectChain(This,pEffectChain) ((This)->lpVtbl->SetEffectChain(This,pEffectChain)) -#define IXAudio2Voice_EnableEffect(This,EffectIndex,OperationSet) ((This)->lpVtbl->EnableEffect(This,EffectIndex,OperationSet)) -#define IXAudio2Voice_DisableEffect(This,EffectIndex,OperationSet) ((This)->lpVtbl->DisableEffect(This,EffectIndex,OperationSet)) -#define IXAudio2Voice_GetEffectState(This,EffectIndex,pEnabled) ((This)->lpVtbl->GetEffectState(This,EffectIndex,pEnabled)) -#define IXAudio2Voice_SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize, OperationSet) ((This)->lpVtbl->SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet)) -#define IXAudio2Voice_GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize) ((This)->lpVtbl->GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize)) -#define IXAudio2Voice_SetFilterParameters(This,pParameters,OperationSet) ((This)->lpVtbl->SetFilterParameters(This,pParameters,OperationSet)) -#define IXAudio2Voice_GetFilterParameters(This,pParameters) ((This)->lpVtbl->GetFilterParameters(This,pParameters)) -#define IXAudio2Voice_SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet) ((This)->lpVtbl->SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet)) -#define IXAudio2Voice_GetOutputFilterParameters(This,pDestinationVoice,pParameters) ((This)->lpVtbl->GetOutputFilterParameters(This,pDestinationVoice,pParameters)) -#define IXAudio2Voice_SetVolume(This,Volume,OperationSet) ((This)->lpVtbl->SetVolume(This,Volume,OperationSet)) -#define IXAudio2Voice_GetVolume(This,pVolume) ((This)->lpVtbl->GetVolume(This,pVolume)) -#define IXAudio2Voice_SetChannelVolumes(This,Channels,pVolumes,OperationSet) ((This)->lpVtbl->SetChannelVolumes(This,Channels,pVolumes,OperationSet)) -#define IXAudio2Voice_GetChannelVolumes(This,Channels,pVolumes) ((This)->lpVtbl->GetChannelVolumes(This,Channels,pVolumes)) -#define IXAudio2Voice_SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet) ((This)->lpVtbl->SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet)) -#define IXAudio2Voice_GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix) ((This)->lpVtbl->GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix)) -#define IXAudio2Voice_DestroyVoice(This) ((This)->lpVtbl->DestroyVoice(This)) - -// IXAudio2SourceVoice -#define IXAudio2SourceVoice_GetVoiceDetails IXAudio2Voice_GetVoiceDetails -#define IXAudio2SourceVoice_SetOutputVoices IXAudio2Voice_SetOutputVoices -#define IXAudio2SourceVoice_SetEffectChain IXAudio2Voice_SetEffectChain -#define IXAudio2SourceVoice_EnableEffect IXAudio2Voice_EnableEffect -#define IXAudio2SourceVoice_DisableEffect IXAudio2Voice_DisableEffect -#define IXAudio2SourceVoice_GetEffectState IXAudio2Voice_GetEffectState -#define IXAudio2SourceVoice_SetEffectParameters IXAudio2Voice_SetEffectParameters -#define IXAudio2SourceVoice_GetEffectParameters IXAudio2Voice_GetEffectParameters -#define IXAudio2SourceVoice_SetFilterParameters IXAudio2Voice_SetFilterParameters -#define IXAudio2SourceVoice_GetFilterParameters IXAudio2Voice_GetFilterParameters -#define IXAudio2SourceVoice_SetOutputFilterParameters IXAudio2Voice_SetOutputFilterParameters -#define IXAudio2SourceVoice_GetOutputFilterParameters IXAudio2Voice_GetOutputFilterParameters -#define IXAudio2SourceVoice_SetVolume IXAudio2Voice_SetVolume -#define IXAudio2SourceVoice_GetVolume IXAudio2Voice_GetVolume -#define IXAudio2SourceVoice_SetChannelVolumes IXAudio2Voice_SetChannelVolumes -#define IXAudio2SourceVoice_GetChannelVolumes IXAudio2Voice_GetChannelVolumes -#define IXAudio2SourceVoice_SetOutputMatrix IXAudio2Voice_SetOutputMatrix -#define IXAudio2SourceVoice_GetOutputMatrix IXAudio2Voice_GetOutputMatrix -#define IXAudio2SourceVoice_DestroyVoice IXAudio2Voice_DestroyVoice -#define IXAudio2SourceVoice_Start(This,Flags,OperationSet) ((This)->lpVtbl->Start(This,Flags,OperationSet)) -#define IXAudio2SourceVoice_Stop(This,Flags,OperationSet) ((This)->lpVtbl->Stop(This,Flags,OperationSet)) -#define IXAudio2SourceVoice_SubmitSourceBuffer(This,pBuffer,pBufferWMA) ((This)->lpVtbl->SubmitSourceBuffer(This,pBuffer,pBufferWMA)) -#define IXAudio2SourceVoice_FlushSourceBuffers(This) ((This)->lpVtbl->FlushSourceBuffers(This)) -#define IXAudio2SourceVoice_Discontinuity(This) ((This)->lpVtbl->Discontinuity(This)) -#define IXAudio2SourceVoice_ExitLoop(This,OperationSet) ((This)->lpVtbl->ExitLoop(This,OperationSet)) -#define IXAudio2SourceVoice_GetState(This,pVoiceState,Flags) ((This)->lpVtbl->GetState(This,pVoiceState,Flags)) -#define IXAudio2SourceVoice_SetFrequencyRatio(This,Ratio,OperationSet) ((This)->lpVtbl->SetFrequencyRatio(This,Ratio,OperationSet)) -#define IXAudio2SourceVoice_GetFrequencyRatio(This,pRatio) ((This)->lpVtbl->GetFrequencyRatio(This,pRatio)) -#define IXAudio2SourceVoice_SetSourceSampleRate(This,NewSourceSampleRate) ((This)->lpVtbl->SetSourceSampleRate(This,NewSourceSampleRate)) - -// IXAudio2SubmixVoice -#define IXAudio2SubmixVoice_GetVoiceDetails IXAudio2Voice_GetVoiceDetails -#define IXAudio2SubmixVoice_SetOutputVoices IXAudio2Voice_SetOutputVoices -#define IXAudio2SubmixVoice_SetEffectChain IXAudio2Voice_SetEffectChain -#define IXAudio2SubmixVoice_EnableEffect IXAudio2Voice_EnableEffect -#define IXAudio2SubmixVoice_DisableEffect IXAudio2Voice_DisableEffect -#define IXAudio2SubmixVoice_GetEffectState IXAudio2Voice_GetEffectState -#define IXAudio2SubmixVoice_SetEffectParameters IXAudio2Voice_SetEffectParameters -#define IXAudio2SubmixVoice_GetEffectParameters IXAudio2Voice_GetEffectParameters -#define IXAudio2SubmixVoice_SetFilterParameters IXAudio2Voice_SetFilterParameters -#define IXAudio2SubmixVoice_GetFilterParameters IXAudio2Voice_GetFilterParameters -#define IXAudio2SubmixVoice_SetOutputFilterParameters IXAudio2Voice_SetOutputFilterParameters -#define IXAudio2SubmixVoice_GetOutputFilterParameters IXAudio2Voice_GetOutputFilterParameters -#define IXAudio2SubmixVoice_SetVolume IXAudio2Voice_SetVolume -#define IXAudio2SubmixVoice_GetVolume IXAudio2Voice_GetVolume -#define IXAudio2SubmixVoice_SetChannelVolumes IXAudio2Voice_SetChannelVolumes -#define IXAudio2SubmixVoice_GetChannelVolumes IXAudio2Voice_GetChannelVolumes -#define IXAudio2SubmixVoice_SetOutputMatrix IXAudio2Voice_SetOutputMatrix -#define IXAudio2SubmixVoice_GetOutputMatrix IXAudio2Voice_GetOutputMatrix -#define IXAudio2SubmixVoice_DestroyVoice IXAudio2Voice_DestroyVoice - -// IXAudio2MasteringVoice -#define IXAudio2MasteringVoice_GetVoiceDetails IXAudio2Voice_GetVoiceDetails -#define IXAudio2MasteringVoice_SetOutputVoices IXAudio2Voice_SetOutputVoices -#define IXAudio2MasteringVoice_SetEffectChain IXAudio2Voice_SetEffectChain -#define IXAudio2MasteringVoice_EnableEffect IXAudio2Voice_EnableEffect -#define IXAudio2MasteringVoice_DisableEffect IXAudio2Voice_DisableEffect -#define IXAudio2MasteringVoice_GetEffectState IXAudio2Voice_GetEffectState -#define IXAudio2MasteringVoice_SetEffectParameters IXAudio2Voice_SetEffectParameters -#define IXAudio2MasteringVoice_GetEffectParameters IXAudio2Voice_GetEffectParameters -#define IXAudio2MasteringVoice_SetFilterParameters IXAudio2Voice_SetFilterParameters -#define IXAudio2MasteringVoice_GetFilterParameters IXAudio2Voice_GetFilterParameters -#define IXAudio2MasteringVoice_SetOutputFilterParameters IXAudio2Voice_SetOutputFilterParameters -#define IXAudio2MasteringVoice_GetOutputFilterParameters IXAudio2Voice_GetOutputFilterParameters -#define IXAudio2MasteringVoice_SetVolume IXAudio2Voice_SetVolume -#define IXAudio2MasteringVoice_GetVolume IXAudio2Voice_GetVolume -#define IXAudio2MasteringVoice_SetChannelVolumes IXAudio2Voice_SetChannelVolumes -#define IXAudio2MasteringVoice_GetChannelVolumes IXAudio2Voice_GetChannelVolumes -#define IXAudio2MasteringVoice_SetOutputMatrix IXAudio2Voice_SetOutputMatrix -#define IXAudio2MasteringVoice_GetOutputMatrix IXAudio2Voice_GetOutputMatrix -#define IXAudio2MasteringVoice_DestroyVoice IXAudio2Voice_DestroyVoice -#define IXAudio2MasteringVoice_GetChannelMask(This,pChannelMask) ((This)->lpVtbl->GetChannelMask(This,pChannelMask)) - -#endif // #ifndef __cplusplus - - -/************************************************************************** - * - * Utility functions used to convert from pitch in semitones and volume - * in decibels to the frequency and amplitude ratio units used by XAudio2. - * These are only defined if the client #defines XAUDIO2_HELPER_FUNCTIONS - * prior to #including xaudio2.h. - * - **************************************************************************/ - -#ifdef XAUDIO2_HELPER_FUNCTIONS - -#define _USE_MATH_DEFINES // Make math.h define M_PI -#include // For powf, log10f, sinf and asinf - -// Calculate the argument to SetVolume from a decibel value -__inline float XAudio2DecibelsToAmplitudeRatio(float Decibels) -{ - return powf(10.0f, Decibels / 20.0f); -} - -// Recover a volume in decibels from an amplitude factor -__inline float XAudio2AmplitudeRatioToDecibels(float Volume) -{ - if (Volume == 0) - { - return -3.402823466e+38f; // Smallest float value (-FLT_MAX) - } - return 20.0f * log10f(Volume); -} - -// Calculate the argument to SetFrequencyRatio from a semitone value -__inline float XAudio2SemitonesToFrequencyRatio(float Semitones) -{ - // FrequencyRatio = 2 ^ Octaves - // = 2 ^ (Semitones / 12) - return powf(2.0f, Semitones / 12.0f); -} - -// Recover a pitch in semitones from a frequency ratio -__inline float XAudio2FrequencyRatioToSemitones(float FrequencyRatio) -{ - // Semitones = 12 * log2(FrequencyRatio) - // = 12 * log2(10) * log10(FrequencyRatio) - return 39.86313713864835f * log10f(FrequencyRatio); -} - -// Convert from filter cutoff frequencies expressed in Hertz to the radian -// frequency values used in XAUDIO2_FILTER_PARAMETERS.Frequency, state-variable -// filter types only. Use XAudio2CutoffFrequencyToOnePoleCoefficient() for one-pole filter types. -// Note that the highest CutoffFrequency supported is SampleRate/6. -// Higher values of CutoffFrequency will return XAUDIO2_MAX_FILTER_FREQUENCY. -__inline float XAudio2CutoffFrequencyToRadians(float CutoffFrequency, UINT32 SampleRate) -{ - if ((UINT32)(CutoffFrequency * 6.0f) >= SampleRate) - { - return XAUDIO2_MAX_FILTER_FREQUENCY; - } - return 2.0f * sinf((float)M_PI * CutoffFrequency / (float)SampleRate); -} - -// Convert from radian frequencies back to absolute frequencies in Hertz -__inline float XAudio2RadiansToCutoffFrequency(float Radians, float SampleRate) -{ - return SampleRate * asinf(Radians / 2.0f) / (float)M_PI; -} - -// Convert from filter cutoff frequencies expressed in Hertz to the filter -// coefficients used with XAUDIO2_FILTER_PARAMETERS.Frequency, -// LowPassOnePoleFilter and HighPassOnePoleFilter filter types only. -// Use XAudio2CutoffFrequencyToRadians() for state-variable filter types. -__inline float XAudio2CutoffFrequencyToOnePoleCoefficient(float CutoffFrequency, UINT32 SampleRate) -{ - if ((UINT32)CutoffFrequency >= SampleRate) - { - return XAUDIO2_MAX_FILTER_FREQUENCY; - } - return ( 1.0f - powf(1.0f - 2.0f * CutoffFrequency / (float)SampleRate, 2.0f) ); -} - - -#endif // #ifdef XAUDIO2_HELPER_FUNCTIONS - - -/************************************************************************** - * - * XAudio2Create: Top-level function that creates an XAudio2 instance. - * - * ARGUMENTS: - * - * Flags - Flags specifying the XAudio2 object's behavior. - * - * XAudio2Processor - An XAUDIO2_PROCESSOR value that specifies the - * hardware threads (Xbox) or processors (Windows) that XAudio2 - * will use. Note that XAudio2 supports concurrent processing on - * multiple threads, using any combination of XAUDIO2_PROCESSOR - * flags. The values are platform-specific; platform-independent - * code can use XAUDIO2_USE_DEFAULT_PROCESSOR to use the default on - * each platform. - * - **************************************************************************/ - -// We're an xaudio2 client -#define XAUDIO2_STDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE - -XAUDIO2_STDAPI XAudio2Create(_Outptr_ IXAudio2** ppXAudio2, UINT32 Flags X2DEFAULT(0), - XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_USE_DEFAULT_PROCESSOR)); - -// Undo the #pragma pack(push, 1) directive at the top of this file -#pragma pack(pop) - -#endif // #ifndef GUID_DEFS_ONLY - -#endif // #ifndef __XAUDIO2_INCLUDED__ +/************************************************************************** + * + * Copyright (c) Microsoft Corporation. All rights reserved. + * + * File: xaudio2.h + * Content: Declarations for the XAudio2 game audio API. + * + **************************************************************************/ + +#ifdef _MSC_VER +#pragma once +#endif + +#ifndef __XAUDIO2_INCLUDED__ +#define __XAUDIO2_INCLUDED__ + +#include + +// Current name of the DLL shipped in the same SDK as this header. +// The name reflects the current version +#define XAUDIO2_DLL_A "xaudio2_9redist.dll" +#define XAUDIO2_DLL_W L"xaudio2_9redist.dll" +#define XAUDIO2D_DLL_A "xaudio2_9redist.dll" +#define XAUDIO2D_DLL_W L"xaudio2_9redist.dll" + +#ifdef UNICODE + #define XAUDIO2_DLL XAUDIO2_DLL_W + #define XAUDIO2D_DLL XAUDIO2D_DLL_W +#else + #define XAUDIO2_DLL XAUDIO2_DLL_A + #define XAUDIO2D_DLL XAUDIO2D_DLL_A +#endif + + +/************************************************************************** + * + * XAudio2 COM object class and interface IDs. + * + **************************************************************************/ + +#include + +#ifdef __cplusplus + // XAudio 2.9 + interface __declspec(uuid("2B02E3CF-2E0B-4ec3-BE45-1B2A3FE7210D")) IXAudio2; + interface __declspec(uuid("84ac29bb-d619-44d2-b197-e4acf7df3ed6")) IXAudio2Extension; + EXTERN_C const GUID DECLSPEC_SELECTANY IID_IXAudio2Extension = __uuidof(IXAudio2Extension); + EXTERN_C const GUID DECLSPEC_SELECTANY IID_IXAudio2 = __uuidof(IXAudio2); + +#else // #ifdef __cplusplus + // Compiling with C for Windows 10 and later + DEFINE_GUID(IID_IXAudio2, 0x2B02E3CF, 0x2E0B, 0x4ec3, 0xBE, 0x45, 0x1B, 0x2A, 0x3F, 0xE7, 0x21, 0x0D); + DEFINE_GUID(IID_IXAudio2Extension, 0x84ac29bb, 0xd619, 0x44d2, 0xb1, 0x97, 0xe4, 0xac, 0xf7, 0xdf, 0x3e, 0xd6); +#endif // #ifdef __cplusplus + + +// Ignore the rest of this header if only the GUID definitions were requested +#ifndef GUID_DEFS_ONLY + +#include // Windows COM declarations +#include // Markers for documenting API semantics +#include // Basic data types and constants for audio work +#include // For AUDIO_STREAM_CATEGORY + +// The Windows 7 version of audiosessiontypes.h does not define AUDIO_STREAM_CATEGORY, so if we are targeting +// Windows 7 we might have to define it here, depending on which SDK is used. +#if _WIN32_WINNT < _WIN32_WINNT_WIN8 + +// If we are compiling for Windows 7, we might be using the Windows 7 Platform SDK, which does not have AUDIO_STREAM_CATEGORY. +// But we might be using a newer SDK (such as the Win8 Platform SDK), which has AUDIO_STREAM_CATEGORY. +// Determine if we are using the Windows 7 Platform SDK by checking if WAVE_FORMAT_WM9_SPECTRUM_ANALYZER is defined. +#ifndef WAVE_FORMAT_WM9_SPECTRUM_ANALYZER +typedef enum _AUDIO_STREAM_CATEGORY +{ + AudioCategory_Other = 0, + AudioCategory_ForegroundOnlyMedia = 1, + AudioCategory_Communications = 3, + AudioCategory_Alerts = 4, + AudioCategory_SoundEffects = 5, + AudioCategory_GameEffects = 6, + AudioCategory_GameMedia = 7, + AudioCategory_GameChat = 8, + AudioCategory_Speech = 9, + AudioCategory_Movie = 10, + AudioCategory_Media = 11, +} AUDIO_STREAM_CATEGORY; +#endif /* WAVE_FORMAT_WM9_SPECTRUM_ANALYZER */ +#endif /* NTDDI_VERSION < NTDDI_WIN8 */ + +// All structures defined in this file use tight field packing +#pragma pack(push, 1) + + +/************************************************************************** + * + * XAudio2 constants, flags and error codes. + * + **************************************************************************/ + +// Numeric boundary values +#define XAUDIO2_MAX_BUFFER_BYTES 0x80000000 // Maximum bytes allowed in a source buffer +#define XAUDIO2_MAX_QUEUED_BUFFERS 64 // Maximum buffers allowed in a voice queue +#define XAUDIO2_MAX_BUFFERS_SYSTEM 2 // Maximum buffers allowed for system threads (Xbox 360 only) +#define XAUDIO2_MAX_AUDIO_CHANNELS 64 // Maximum channels in an audio stream +#define XAUDIO2_MIN_SAMPLE_RATE 1000 // Minimum audio sample rate supported +#define XAUDIO2_MAX_SAMPLE_RATE 200000 // Maximum audio sample rate supported +#define XAUDIO2_MAX_VOLUME_LEVEL 16777216.0f // Maximum acceptable volume level (2^24) +#define XAUDIO2_MIN_FREQ_RATIO (1/1024.0f) // Minimum SetFrequencyRatio argument +#define XAUDIO2_MAX_FREQ_RATIO 1024.0f // Maximum MaxFrequencyRatio argument +#define XAUDIO2_DEFAULT_FREQ_RATIO 2.0f // Default MaxFrequencyRatio argument +#define XAUDIO2_MAX_FILTER_ONEOVERQ 1.5f // Maximum XAUDIO2_FILTER_PARAMETERS.OneOverQ +#define XAUDIO2_MAX_FILTER_FREQUENCY 1.0f // Maximum XAUDIO2_FILTER_PARAMETERS.Frequency +#define XAUDIO2_MAX_LOOP_COUNT 254 // Maximum non-infinite XAUDIO2_BUFFER.LoopCount +#define XAUDIO2_MAX_INSTANCES 8 // Maximum simultaneous XAudio2 objects on Xbox 360 + +// For XMA voices on Xbox 360 there is an additional restriction on the MaxFrequencyRatio +// argument and the voice's sample rate: the product of these numbers cannot exceed 600000 +// for one-channel voices or 300000 for voices with more than one channel. +#define XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO 600000 +#define XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL 300000 + +// Numeric values with special meanings +#define XAUDIO2_COMMIT_NOW 0 // Used as an OperationSet argument +#define XAUDIO2_COMMIT_ALL 0 // Used in IXAudio2::CommitChanges +#define XAUDIO2_INVALID_OPSET (UINT32)(-1) // Not allowed for OperationSet arguments +#define XAUDIO2_NO_LOOP_REGION 0 // Used in XAUDIO2_BUFFER.LoopCount +#define XAUDIO2_LOOP_INFINITE 255 // Used in XAUDIO2_BUFFER.LoopCount +#define XAUDIO2_DEFAULT_CHANNELS 0 // Used in CreateMasteringVoice +#define XAUDIO2_DEFAULT_SAMPLERATE 0 // Used in CreateMasteringVoice + +// Flags +#define XAUDIO2_DEBUG_ENGINE 0x0001 // Used in XAudio2Create +#define XAUDIO2_VOICE_NOPITCH 0x0002 // Used in IXAudio2::CreateSourceVoice +#define XAUDIO2_VOICE_NOSRC 0x0004 // Used in IXAudio2::CreateSourceVoice +#define XAUDIO2_VOICE_USEFILTER 0x0008 // Used in IXAudio2::CreateSource/SubmixVoice +#define XAUDIO2_PLAY_TAILS 0x0020 // Used in IXAudio2SourceVoice::Stop +#define XAUDIO2_END_OF_STREAM 0x0040 // Used in XAUDIO2_BUFFER.Flags +#define XAUDIO2_SEND_USEFILTER 0x0080 // Used in XAUDIO2_SEND_DESCRIPTOR.Flags +#define XAUDIO2_VOICE_NOSAMPLESPLAYED 0x0100 // Used in IXAudio2SourceVoice::GetState +#define XAUDIO2_STOP_ENGINE_WHEN_IDLE 0x2000 // Used in XAudio2Create to force the engine to Stop when no source voices are Started, and Start when a voice is Started +#define XAUDIO2_1024_QUANTUM 0x8000 // Used in XAudio2Create to specify nondefault processing quantum of 21.33 ms (1024 samples at 48KHz) +#define XAUDIO2_NO_VIRTUAL_AUDIO_CLIENT 0x10000 // Used in CreateMasteringVoice to create a virtual audio client + +// Default parameters for the built-in filter +#define XAUDIO2_DEFAULT_FILTER_TYPE LowPassFilter +#define XAUDIO2_DEFAULT_FILTER_FREQUENCY XAUDIO2_MAX_FILTER_FREQUENCY +#define XAUDIO2_DEFAULT_FILTER_ONEOVERQ 1.0f + +// Internal XAudio2 constants +// The audio frame quantum can be calculated by reducing the fraction: +// SamplesPerAudioFrame / SamplesPerSecond +#define XAUDIO2_QUANTUM_NUMERATOR 1 // On Windows, XAudio2 processes audio +#define XAUDIO2_QUANTUM_DENOMINATOR 100 // in 10ms chunks (= 1/100 seconds) +#define XAUDIO2_QUANTUM_MS (1000.0f * XAUDIO2_QUANTUM_NUMERATOR / XAUDIO2_QUANTUM_DENOMINATOR) + +// XAudio2 error codes +#define FACILITY_XAUDIO2 0x896 +#define XAUDIO2_E_INVALID_CALL ((HRESULT)0x88960001) // An API call or one of its arguments was illegal +#define XAUDIO2_E_XMA_DECODER_ERROR ((HRESULT)0x88960002) // The XMA hardware suffered an unrecoverable error +#define XAUDIO2_E_XAPO_CREATION_FAILED ((HRESULT)0x88960003) // XAudio2 failed to initialize an XAPO effect +#define XAUDIO2_E_DEVICE_INVALIDATED ((HRESULT)0x88960004) // An audio device became unusable (unplugged, etc) + +/************************************************************************** + * + * Forward declarations for the XAudio2 interfaces. + * + **************************************************************************/ + +#ifdef __cplusplus + #define FWD_DECLARE(x) interface x +#else + #define FWD_DECLARE(x) typedef interface x x +#endif + +FWD_DECLARE(IXAudio2); +FWD_DECLARE(IXAudio2Voice); +FWD_DECLARE(IXAudio2SourceVoice); +FWD_DECLARE(IXAudio2SubmixVoice); +FWD_DECLARE(IXAudio2MasteringVoice); +FWD_DECLARE(IXAudio2EngineCallback); +FWD_DECLARE(IXAudio2VoiceCallback); + + +/************************************************************************** + * + * XAudio2 structures and enumerations. + * + **************************************************************************/ + +// Used in XAudio2Create, specifies which CPU(s) to use. +typedef UINT32 XAUDIO2_PROCESSOR; +#define Processor1 0x00000001 +#define Processor2 0x00000002 +#define Processor3 0x00000004 +#define Processor4 0x00000008 +#define Processor5 0x00000010 +#define Processor6 0x00000020 +#define Processor7 0x00000040 +#define Processor8 0x00000080 +#define Processor9 0x00000100 +#define Processor10 0x00000200 +#define Processor11 0x00000400 +#define Processor12 0x00000800 +#define Processor13 0x00001000 +#define Processor14 0x00002000 +#define Processor15 0x00004000 +#define Processor16 0x00008000 +#define Processor17 0x00010000 +#define Processor18 0x00020000 +#define Processor19 0x00040000 +#define Processor20 0x00080000 +#define Processor21 0x00100000 +#define Processor22 0x00200000 +#define Processor23 0x00400000 +#define Processor24 0x00800000 +#define Processor25 0x01000000 +#define Processor26 0x02000000 +#define Processor27 0x04000000 +#define Processor28 0x08000000 +#define Processor29 0x10000000 +#define Processor30 0x20000000 +#define Processor31 0x40000000 +#define Processor32 0x80000000 +#define XAUDIO2_ANY_PROCESSOR 0xffffffff + +// This value indicates that XAudio2 will choose the default processor by itself. The actual value chosen +// may vary depending on the hardware platform. +#define XAUDIO2_USE_DEFAULT_PROCESSOR 0x00000000 + +// This definition is included for backwards compatibilty. New implementations should use +// XAUDIO2_USE_DEFAULT_PROCESSOR instead to let XAudio2 select the appropriate default processor for the hardware platform. +#define XAUDIO2_DEFAULT_PROCESSOR Processor1 + +// Returned by IXAudio2Voice::GetVoiceDetails +typedef struct XAUDIO2_VOICE_DETAILS +{ + UINT32 CreationFlags; // Flags the voice was created with. + UINT32 ActiveFlags; // Flags currently active. + UINT32 InputChannels; // Channels in the voice's input audio. + UINT32 InputSampleRate; // Sample rate of the voice's input audio. +} XAUDIO2_VOICE_DETAILS; + +// Used in XAUDIO2_VOICE_SENDS below +typedef struct XAUDIO2_SEND_DESCRIPTOR +{ + UINT32 Flags; // Either 0 or XAUDIO2_SEND_USEFILTER. + IXAudio2Voice* pOutputVoice; // This send's destination voice. +} XAUDIO2_SEND_DESCRIPTOR; + +// Used in the voice creation functions and in IXAudio2Voice::SetOutputVoices +typedef struct XAUDIO2_VOICE_SENDS +{ + UINT32 SendCount; // Number of sends from this voice. + XAUDIO2_SEND_DESCRIPTOR* pSends; // Array of SendCount send descriptors. +} XAUDIO2_VOICE_SENDS; + +// Used in XAUDIO2_EFFECT_CHAIN below +typedef struct XAUDIO2_EFFECT_DESCRIPTOR +{ + IUnknown* pEffect; // Pointer to the effect object's IUnknown interface. + BOOL InitialState; // TRUE if the effect should begin in the enabled state. + UINT32 OutputChannels; // How many output channels the effect should produce. +} XAUDIO2_EFFECT_DESCRIPTOR; + +// Used in the voice creation functions and in IXAudio2Voice::SetEffectChain +typedef struct XAUDIO2_EFFECT_CHAIN +{ + UINT32 EffectCount; // Number of effects in this voice's effect chain. + XAUDIO2_EFFECT_DESCRIPTOR* pEffectDescriptors; // Array of effect descriptors. +} XAUDIO2_EFFECT_CHAIN; + +// Used in XAUDIO2_FILTER_PARAMETERS below +typedef enum XAUDIO2_FILTER_TYPE +{ + LowPassFilter, // Attenuates frequencies above the cutoff frequency (state-variable filter). + BandPassFilter, // Attenuates frequencies outside a given range (state-variable filter). + HighPassFilter, // Attenuates frequencies below the cutoff frequency (state-variable filter). + NotchFilter, // Attenuates frequencies inside a given range (state-variable filter). + LowPassOnePoleFilter, // Attenuates frequencies above the cutoff frequency (one-pole filter, XAUDIO2_FILTER_PARAMETERS.OneOverQ has no effect) + HighPassOnePoleFilter // Attenuates frequencies below the cutoff frequency (one-pole filter, XAUDIO2_FILTER_PARAMETERS.OneOverQ has no effect) +} XAUDIO2_FILTER_TYPE; + +// Used in IXAudio2Voice::Set/GetFilterParameters and Set/GetOutputFilterParameters +typedef struct XAUDIO2_FILTER_PARAMETERS +{ + XAUDIO2_FILTER_TYPE Type; // Filter type. + float Frequency; // Filter coefficient. + // must be >= 0 and <= XAUDIO2_MAX_FILTER_FREQUENCY + // See XAudio2CutoffFrequencyToRadians() for state-variable filter types and + // XAudio2CutoffFrequencyToOnePoleCoefficient() for one-pole filter types. + float OneOverQ; // Reciprocal of the filter's quality factor Q; + // must be > 0 and <= XAUDIO2_MAX_FILTER_ONEOVERQ. + // Has no effect for one-pole filters. +} XAUDIO2_FILTER_PARAMETERS; + +// Used in IXAudio2SourceVoice::SubmitSourceBuffer +typedef struct XAUDIO2_BUFFER +{ + UINT32 Flags; // Either 0 or XAUDIO2_END_OF_STREAM. + UINT32 AudioBytes; // Size of the audio data buffer in bytes. + const BYTE* pAudioData; // Pointer to the audio data buffer. + UINT32 PlayBegin; // First sample in this buffer to be played. + UINT32 PlayLength; // Length of the region to be played in samples, + // or 0 to play the whole buffer. + UINT32 LoopBegin; // First sample of the region to be looped. + UINT32 LoopLength; // Length of the desired loop region in samples, + // or 0 to loop the entire buffer. + UINT32 LoopCount; // Number of times to repeat the loop region, + // or XAUDIO2_LOOP_INFINITE to loop forever. + void* pContext; // Context value to be passed back in callbacks. +} XAUDIO2_BUFFER; + +// Used in IXAudio2SourceVoice::SubmitSourceBuffer when submitting XWMA data. +// NOTE: If an XWMA sound is submitted in more than one buffer, each buffer's +// pDecodedPacketCumulativeBytes[PacketCount-1] value must be subtracted from +// all the entries in the next buffer's pDecodedPacketCumulativeBytes array. +// And whether a sound is submitted in more than one buffer or not, the final +// buffer of the sound should use the XAUDIO2_END_OF_STREAM flag, or else the +// client must call IXAudio2SourceVoice::Discontinuity after submitting it. +typedef struct XAUDIO2_BUFFER_WMA +{ + const UINT32* pDecodedPacketCumulativeBytes; // Decoded packet's cumulative size array. + // Each element is the number of bytes accumulated + // when the corresponding XWMA packet is decoded in + // order. The array must have PacketCount elements. + UINT32 PacketCount; // Number of XWMA packets submitted. Must be >= 1 and + // divide evenly into XAUDIO2_BUFFER.AudioBytes. +} XAUDIO2_BUFFER_WMA; + +// Returned by IXAudio2SourceVoice::GetState +typedef struct XAUDIO2_VOICE_STATE +{ + void* pCurrentBufferContext; // The pContext value provided in the XAUDIO2_BUFFER + // that is currently being processed, or NULL if + // there are no buffers in the queue. + UINT32 BuffersQueued; // Number of buffers currently queued on the voice + // (including the one that is being processed). + UINT64 SamplesPlayed; // Total number of samples produced by the voice since + // it began processing the current audio stream. + // If XAUDIO2_VOICE_NOSAMPLESPLAYED is specified + // in the call to IXAudio2SourceVoice::GetState, + // this member will not be calculated, saving CPU. +} XAUDIO2_VOICE_STATE; + +// Returned by IXAudio2::GetPerformanceData +typedef struct XAUDIO2_PERFORMANCE_DATA +{ + // CPU usage information + UINT64 AudioCyclesSinceLastQuery; // CPU cycles spent on audio processing since the + // last call to StartEngine or GetPerformanceData. + UINT64 TotalCyclesSinceLastQuery; // Total CPU cycles elapsed since the last call + // (only counts the CPU XAudio2 is running on). + UINT32 MinimumCyclesPerQuantum; // Fewest CPU cycles spent processing any one + // audio quantum since the last call. + UINT32 MaximumCyclesPerQuantum; // Most CPU cycles spent processing any one + // audio quantum since the last call. + + // Memory usage information + UINT32 MemoryUsageInBytes; // Total heap space currently in use. + + // Audio latency and glitching information + UINT32 CurrentLatencyInSamples; // Minimum delay from when a sample is read from a + // source buffer to when it reaches the speakers. + UINT32 GlitchesSinceEngineStarted; // Audio dropouts since the engine was started. + + // Data about XAudio2's current workload + UINT32 ActiveSourceVoiceCount; // Source voices currently playing. + UINT32 TotalSourceVoiceCount; // Source voices currently existing. + UINT32 ActiveSubmixVoiceCount; // Submix voices currently playing/existing. + + UINT32 ActiveResamplerCount; // Resample xAPOs currently active. + UINT32 ActiveMatrixMixCount; // MatrixMix xAPOs currently active. + + // Usage of the hardware XMA decoder (Xbox 360 only) + UINT32 ActiveXmaSourceVoices; // Number of source voices decoding XMA data. + UINT32 ActiveXmaStreams; // A voice can use more than one XMA stream. +} XAUDIO2_PERFORMANCE_DATA; + +// Used in IXAudio2::SetDebugConfiguration +typedef struct XAUDIO2_DEBUG_CONFIGURATION +{ + UINT32 TraceMask; // Bitmap of enabled debug message types. + UINT32 BreakMask; // Message types that will break into the debugger. + BOOL LogThreadID; // Whether to log the thread ID with each message. + BOOL LogFileline; // Whether to log the source file and line number. + BOOL LogFunctionName; // Whether to log the function name. + BOOL LogTiming; // Whether to log message timestamps. +} XAUDIO2_DEBUG_CONFIGURATION; + +// Values for the TraceMask and BreakMask bitmaps. Only ERRORS and WARNINGS +// are valid in BreakMask. WARNINGS implies ERRORS, DETAIL implies INFO, and +// FUNC_CALLS implies API_CALLS. By default, TraceMask is ERRORS and WARNINGS +// and all the other settings are zero. +#define XAUDIO2_LOG_ERRORS 0x0001 // For handled errors with serious effects. +#define XAUDIO2_LOG_WARNINGS 0x0002 // For handled errors that may be recoverable. +#define XAUDIO2_LOG_INFO 0x0004 // Informational chit-chat (e.g. state changes). +#define XAUDIO2_LOG_DETAIL 0x0008 // More detailed chit-chat. +#define XAUDIO2_LOG_API_CALLS 0x0010 // Public API function entries and exits. +#define XAUDIO2_LOG_FUNC_CALLS 0x0020 // Internal function entries and exits. +#define XAUDIO2_LOG_TIMING 0x0040 // Delays detected and other timing data. +#define XAUDIO2_LOG_LOCKS 0x0080 // Usage of critical sections and mutexes. +#define XAUDIO2_LOG_MEMORY 0x0100 // Memory heap usage information. +#define XAUDIO2_LOG_STREAMING 0x1000 // Audio streaming information. + + +/************************************************************************** + * + * IXAudio2: Top-level XAudio2 COM interface. + * + **************************************************************************/ + +// Use default arguments if compiling as C++ +#ifdef __cplusplus + #define X2DEFAULT(x) =x +#else + #define X2DEFAULT(x) +#endif + +#undef INTERFACE +#define INTERFACE IXAudio2 +DECLARE_INTERFACE_(IXAudio2, IUnknown) +{ + // NAME: IXAudio2::QueryInterface + // DESCRIPTION: Queries for a given COM interface on the XAudio2 object. + // Only IID_IUnknown, IID_IXAudio2 and IID_IXaudio2Extension are supported. + // + // ARGUMENTS: + // riid - IID of the interface to be obtained. + // ppvInterface - Returns a pointer to the requested interface. + // + STDMETHOD(QueryInterface) (THIS_ REFIID riid, _COM_Outptr_ void** ppvInterface) PURE; + + // NAME: IXAudio2::AddRef + // DESCRIPTION: Adds a reference to the XAudio2 object. + // + STDMETHOD_(ULONG, AddRef) (THIS) PURE; + + // NAME: IXAudio2::Release + // DESCRIPTION: Releases a reference to the XAudio2 object. + // + STDMETHOD_(ULONG, Release) (THIS) PURE; + + // NAME: IXAudio2::RegisterForCallbacks + // DESCRIPTION: Adds a new client to receive XAudio2's engine callbacks. + // + // ARGUMENTS: + // pCallback - Callback interface to be called during each processing pass. + // + STDMETHOD(RegisterForCallbacks) (THIS_ _In_ IXAudio2EngineCallback* pCallback) PURE; + + // NAME: IXAudio2::UnregisterForCallbacks + // DESCRIPTION: Removes an existing receiver of XAudio2 engine callbacks. + // + // ARGUMENTS: + // pCallback - Previously registered callback interface to be removed. + // + STDMETHOD_(void, UnregisterForCallbacks) (THIS_ _In_ IXAudio2EngineCallback* pCallback) PURE; + + // NAME: IXAudio2::CreateSourceVoice + // DESCRIPTION: Creates and configures a source voice. + // + // ARGUMENTS: + // ppSourceVoice - Returns the new object's IXAudio2SourceVoice interface. + // pSourceFormat - Format of the audio that will be fed to the voice. + // Flags - XAUDIO2_VOICE flags specifying the source voice's behavior. + // MaxFrequencyRatio - Maximum SetFrequencyRatio argument to be allowed. + // pCallback - Optional pointer to a client-provided callback interface. + // pSendList - Optional list of voices this voice should send audio to. + // pEffectChain - Optional list of effects to apply to the audio data. + // + STDMETHOD(CreateSourceVoice) (THIS_ _Outptr_ IXAudio2SourceVoice** ppSourceVoice, + _In_ const WAVEFORMATEX* pSourceFormat, + UINT32 Flags X2DEFAULT(0), + float MaxFrequencyRatio X2DEFAULT(XAUDIO2_DEFAULT_FREQ_RATIO), + _In_opt_ IXAudio2VoiceCallback* pCallback X2DEFAULT(NULL), + _In_opt_ const XAUDIO2_VOICE_SENDS* pSendList X2DEFAULT(NULL), + _In_opt_ const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE; + + // NAME: IXAudio2::CreateSubmixVoice + // DESCRIPTION: Creates and configures a submix voice. + // + // ARGUMENTS: + // ppSubmixVoice - Returns the new object's IXAudio2SubmixVoice interface. + // InputChannels - Number of channels in this voice's input audio data. + // InputSampleRate - Sample rate of this voice's input audio data. + // Flags - XAUDIO2_VOICE flags specifying the submix voice's behavior. + // ProcessingStage - Arbitrary number that determines the processing order. + // pSendList - Optional list of voices this voice should send audio to. + // pEffectChain - Optional list of effects to apply to the audio data. + // + STDMETHOD(CreateSubmixVoice) (THIS_ _Outptr_ IXAudio2SubmixVoice** ppSubmixVoice, + UINT32 InputChannels, UINT32 InputSampleRate, + UINT32 Flags X2DEFAULT(0), UINT32 ProcessingStage X2DEFAULT(0), + _In_opt_ const XAUDIO2_VOICE_SENDS* pSendList X2DEFAULT(NULL), + _In_opt_ const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL)) PURE; + + + // NAME: IXAudio2::CreateMasteringVoice + // DESCRIPTION: Creates and configures a mastering voice. + // + // ARGUMENTS: + // ppMasteringVoice - Returns the new object's IXAudio2MasteringVoice interface. + // InputChannels - Number of channels in this voice's input audio data. + // InputSampleRate - Sample rate of this voice's input audio data. + // Flags - XAUDIO2_VOICE flags specifying the mastering voice's behavior. + // szDeviceId - Identifier of the device to receive the output audio. + // pEffectChain - Optional list of effects to apply to the audio data. + // StreamCategory - The audio stream category to use for this mastering voice + // + STDMETHOD(CreateMasteringVoice) (THIS_ _Outptr_ IXAudio2MasteringVoice** ppMasteringVoice, + UINT32 InputChannels X2DEFAULT(XAUDIO2_DEFAULT_CHANNELS), + UINT32 InputSampleRate X2DEFAULT(XAUDIO2_DEFAULT_SAMPLERATE), + UINT32 Flags X2DEFAULT(0), _In_opt_z_ LPCWSTR szDeviceId X2DEFAULT(NULL), + _In_opt_ const XAUDIO2_EFFECT_CHAIN* pEffectChain X2DEFAULT(NULL), + _In_ AUDIO_STREAM_CATEGORY StreamCategory X2DEFAULT(AudioCategory_GameEffects)) PURE; + + // NAME: IXAudio2::StartEngine + // DESCRIPTION: Creates and starts the audio processing thread. + // + STDMETHOD(StartEngine) (THIS) PURE; + + // NAME: IXAudio2::StopEngine + // DESCRIPTION: Stops and destroys the audio processing thread. + // + STDMETHOD_(void, StopEngine) (THIS) PURE; + + // NAME: IXAudio2::CommitChanges + // DESCRIPTION: Atomically applies a set of operations previously tagged + // with a given identifier. + // + // ARGUMENTS: + // OperationSet - Identifier of the set of operations to be applied. + // + STDMETHOD(CommitChanges) (THIS_ UINT32 OperationSet) PURE; + + // NAME: IXAudio2::GetPerformanceData + // DESCRIPTION: Returns current resource usage details: memory, CPU, etc. + // + // ARGUMENTS: + // pPerfData - Returns the performance data structure. + // + STDMETHOD_(void, GetPerformanceData) (THIS_ _Out_ XAUDIO2_PERFORMANCE_DATA* pPerfData) PURE; + + // NAME: IXAudio2::SetDebugConfiguration + // DESCRIPTION: Configures XAudio2's debug output (in debug builds only). + // + // ARGUMENTS: + // pDebugConfiguration - Structure describing the debug output behavior. + // pReserved - Optional parameter; must be NULL. + // + STDMETHOD_(void, SetDebugConfiguration) (THIS_ _In_opt_ const XAUDIO2_DEBUG_CONFIGURATION* pDebugConfiguration, + _Reserved_ void* pReserved X2DEFAULT(NULL)) PURE; +}; + +// This interface extends IXAudio2 with additional functionality. +// Use IXAudio2::QueryInterface to obtain a pointer to this interface. +#undef INTERFACE +#define INTERFACE IXAudio2Extension +DECLARE_INTERFACE_(IXAudio2Extension, IUnknown) +{ + // NAME: IXAudio2Extension::QueryInterface + // DESCRIPTION: Queries for a given COM interface on the XAudio2 object. + // Only IID_IUnknown, IID_IXAudio2 and IID_IXaudio2Extension are supported. + // + // ARGUMENTS: + // riid - IID of the interface to be obtained. + // ppvInterface - Returns a pointer to the requested interface. + // + STDMETHOD(QueryInterface) (THIS_ REFIID riid, _COM_Outptr_ void** ppvInterface) PURE; + + // NAME: IXAudio2Extension::AddRef + // DESCRIPTION: Adds a reference to the XAudio2 object. + // + STDMETHOD_(ULONG, AddRef) (THIS) PURE; + + // NAME: IXAudio2Extension::Release + // DESCRIPTION: Releases a reference to the XAudio2 object. + // + STDMETHOD_(ULONG, Release) (THIS) PURE; + + // NAME: IXAudio2Extension::GetProcessingQuantum + // DESCRIPTION: Returns the processing quantum + // quantumMilliseconds = (1000.0f * quantumNumerator / quantumDenominator) + // + // ARGUMENTS: + // quantumNumerator - Quantum numerator + // quantumDenominator - Quantum denominator + // + STDMETHOD_(void, GetProcessingQuantum)(THIS_ _Out_ UINT32* quantumNumerator, _Out_range_(!= , 0) UINT32* quantumDenominator); + + // NAME: IXAudio2Extension::GetProcessor + // DESCRIPTION: Returns the number of the processor used by XAudio2 + // + // ARGUMENTS: + // processor - Non-zero Processor number + // + STDMETHOD_(void, GetProcessor)(THIS_ _Out_range_(!= , 0) XAUDIO2_PROCESSOR* processor); +}; + +/************************************************************************** + * + * IXAudio2Voice: Base voice management interface. + * + **************************************************************************/ + +#undef INTERFACE +#define INTERFACE IXAudio2Voice +DECLARE_INTERFACE(IXAudio2Voice) +{ + // These methods are declared in a macro so that the same declarations + // can be used in the derived voice types (IXAudio2SourceVoice, etc). + + #define Declare_IXAudio2Voice_Methods() \ + \ + /* NAME: IXAudio2Voice::GetVoiceDetails + // DESCRIPTION: Returns the basic characteristics of this voice. + // + // ARGUMENTS: + // pVoiceDetails - Returns the voice's details. + */\ + STDMETHOD_(void, GetVoiceDetails) (THIS_ _Out_ XAUDIO2_VOICE_DETAILS* pVoiceDetails) PURE; \ + \ + /* NAME: IXAudio2Voice::SetOutputVoices + // DESCRIPTION: Replaces the set of submix/mastering voices that receive + // this voice's output. + // + // ARGUMENTS: + // pSendList - Optional list of voices this voice should send audio to. + */\ + STDMETHOD(SetOutputVoices) (THIS_ _In_opt_ const XAUDIO2_VOICE_SENDS* pSendList) PURE; \ + \ + /* NAME: IXAudio2Voice::SetEffectChain + // DESCRIPTION: Replaces this voice's current effect chain with a new one. + // + // ARGUMENTS: + // pEffectChain - Structure describing the new effect chain to be used. + */\ + STDMETHOD(SetEffectChain) (THIS_ _In_opt_ const XAUDIO2_EFFECT_CHAIN* pEffectChain) PURE; \ + \ + /* NAME: IXAudio2Voice::EnableEffect + // DESCRIPTION: Enables an effect in this voice's effect chain. + // + // ARGUMENTS: + // EffectIndex - Index of an effect within this voice's effect chain. + // OperationSet - Used to identify this call as part of a deferred batch. + */\ + STDMETHOD(EnableEffect) (THIS_ UINT32 EffectIndex, \ + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + \ + /* NAME: IXAudio2Voice::DisableEffect + // DESCRIPTION: Disables an effect in this voice's effect chain. + // + // ARGUMENTS: + // EffectIndex - Index of an effect within this voice's effect chain. + // OperationSet - Used to identify this call as part of a deferred batch. + */\ + STDMETHOD(DisableEffect) (THIS_ UINT32 EffectIndex, \ + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + \ + /* NAME: IXAudio2Voice::GetEffectState + // DESCRIPTION: Returns the running state of an effect. + // + // ARGUMENTS: + // EffectIndex - Index of an effect within this voice's effect chain. + // pEnabled - Returns the enabled/disabled state of the given effect. + */\ + STDMETHOD_(void, GetEffectState) (THIS_ UINT32 EffectIndex, _Out_ BOOL* pEnabled) PURE; \ + \ + /* NAME: IXAudio2Voice::SetEffectParameters + // DESCRIPTION: Sets effect-specific parameters. + // + // REMARKS: Unlike IXAPOParameters::SetParameters, this method may + // be called from any thread. XAudio2 implements + // appropriate synchronization to copy the parameters to the + // realtime audio processing thread. + // + // ARGUMENTS: + // EffectIndex - Index of an effect within this voice's effect chain. + // pParameters - Pointer to an effect-specific parameters block. + // ParametersByteSize - Size of the pParameters array in bytes. + // OperationSet - Used to identify this call as part of a deferred batch. + */\ + STDMETHOD(SetEffectParameters) (THIS_ UINT32 EffectIndex, \ + _In_reads_bytes_(ParametersByteSize) const void* pParameters, \ + UINT32 ParametersByteSize, \ + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + \ + /* NAME: IXAudio2Voice::GetEffectParameters + // DESCRIPTION: Obtains the current effect-specific parameters. + // + // ARGUMENTS: + // EffectIndex - Index of an effect within this voice's effect chain. + // pParameters - Returns the current values of the effect-specific parameters. + // ParametersByteSize - Size of the pParameters array in bytes. + */\ + STDMETHOD(GetEffectParameters) (THIS_ UINT32 EffectIndex, \ + _Out_writes_bytes_(ParametersByteSize) void* pParameters, \ + UINT32 ParametersByteSize) PURE; \ + \ + /* NAME: IXAudio2Voice::SetFilterParameters + // DESCRIPTION: Sets this voice's filter parameters. + // + // ARGUMENTS: + // pParameters - Pointer to the filter's parameter structure. + // OperationSet - Used to identify this call as part of a deferred batch. + */\ + STDMETHOD(SetFilterParameters) (THIS_ _In_ const XAUDIO2_FILTER_PARAMETERS* pParameters, \ + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + \ + /* NAME: IXAudio2Voice::GetFilterParameters + // DESCRIPTION: Returns this voice's current filter parameters. + // + // ARGUMENTS: + // pParameters - Returns the filter parameters. + */\ + STDMETHOD_(void, GetFilterParameters) (THIS_ _Out_ XAUDIO2_FILTER_PARAMETERS* pParameters) PURE; \ + \ + /* NAME: IXAudio2Voice::SetOutputFilterParameters + // DESCRIPTION: Sets the filter parameters on one of this voice's sends. + // + // ARGUMENTS: + // pDestinationVoice - Destination voice of the send whose filter parameters will be set. + // pParameters - Pointer to the filter's parameter structure. + // OperationSet - Used to identify this call as part of a deferred batch. + */\ + STDMETHOD(SetOutputFilterParameters) (THIS_ _In_opt_ IXAudio2Voice* pDestinationVoice, \ + _In_ const XAUDIO2_FILTER_PARAMETERS* pParameters, \ + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + \ + /* NAME: IXAudio2Voice::GetOutputFilterParameters + // DESCRIPTION: Returns the filter parameters from one of this voice's sends. + // + // ARGUMENTS: + // pDestinationVoice - Destination voice of the send whose filter parameters will be read. + // pParameters - Returns the filter parameters. + */\ + STDMETHOD_(void, GetOutputFilterParameters) (THIS_ _In_opt_ IXAudio2Voice* pDestinationVoice, \ + _Out_ XAUDIO2_FILTER_PARAMETERS* pParameters) PURE; \ + \ + /* NAME: IXAudio2Voice::SetVolume + // DESCRIPTION: Sets this voice's overall volume level. + // + // ARGUMENTS: + // Volume - New overall volume level to be used, as an amplitude factor. + // OperationSet - Used to identify this call as part of a deferred batch. + */\ + STDMETHOD(SetVolume) (THIS_ float Volume, \ + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + \ + /* NAME: IXAudio2Voice::GetVolume + // DESCRIPTION: Obtains this voice's current overall volume level. + // + // ARGUMENTS: + // pVolume: Returns the voice's current overall volume level. + */\ + STDMETHOD_(void, GetVolume) (THIS_ _Out_ float* pVolume) PURE; \ + \ + /* NAME: IXAudio2Voice::SetChannelVolumes + // DESCRIPTION: Sets this voice's per-channel volume levels. + // + // ARGUMENTS: + // Channels - Used to confirm the voice's channel count. + // pVolumes - Array of per-channel volume levels to be used. + // OperationSet - Used to identify this call as part of a deferred batch. + */\ + STDMETHOD(SetChannelVolumes) (THIS_ UINT32 Channels, _In_reads_(Channels) const float* pVolumes, \ + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + \ + /* NAME: IXAudio2Voice::GetChannelVolumes + // DESCRIPTION: Returns this voice's current per-channel volume levels. + // + // ARGUMENTS: + // Channels - Used to confirm the voice's channel count. + // pVolumes - Returns an array of the current per-channel volume levels. + */\ + STDMETHOD_(void, GetChannelVolumes) (THIS_ UINT32 Channels, _Out_writes_(Channels) float* pVolumes) PURE; \ + \ + /* NAME: IXAudio2Voice::SetOutputMatrix + // DESCRIPTION: Sets the volume levels used to mix from each channel of this + // voice's output audio to each channel of a given destination + // voice's input audio. + // + // ARGUMENTS: + // pDestinationVoice - The destination voice whose mix matrix to change. + // SourceChannels - Used to confirm this voice's output channel count + // (the number of channels produced by the last effect in the chain). + // DestinationChannels - Confirms the destination voice's input channels. + // pLevelMatrix - Array of [SourceChannels * DestinationChannels] send + // levels. The level used to send from source channel S to destination + // channel D should be in pLevelMatrix[S + SourceChannels * D]. + // OperationSet - Used to identify this call as part of a deferred batch. + */\ + STDMETHOD(SetOutputMatrix) (THIS_ _In_opt_ IXAudio2Voice* pDestinationVoice, \ + UINT32 SourceChannels, UINT32 DestinationChannels, \ + _In_reads_(SourceChannels * DestinationChannels) const float* pLevelMatrix, \ + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; \ + \ + /* NAME: IXAudio2Voice::GetOutputMatrix + // DESCRIPTION: Obtains the volume levels used to send each channel of this + // voice's output audio to each channel of a given destination + // voice's input audio. + // + // ARGUMENTS: + // pDestinationVoice - The destination voice whose mix matrix to obtain. + // SourceChannels - Used to confirm this voice's output channel count + // (the number of channels produced by the last effect in the chain). + // DestinationChannels - Confirms the destination voice's input channels. + // pLevelMatrix - Array of send levels, as above. + */\ + STDMETHOD_(void, GetOutputMatrix) (THIS_ _In_opt_ IXAudio2Voice* pDestinationVoice, \ + UINT32 SourceChannels, UINT32 DestinationChannels, \ + _Out_writes_(SourceChannels * DestinationChannels) float* pLevelMatrix) PURE; \ + \ + /* NAME: IXAudio2Voice::DestroyVoice + // DESCRIPTION: Destroys this voice, stopping it if necessary and removing + // it from the XAudio2 graph. + */\ + STDMETHOD_(void, DestroyVoice) (THIS) PURE + + Declare_IXAudio2Voice_Methods(); +}; + + +/************************************************************************** + * + * IXAudio2SourceVoice: Source voice management interface. + * + **************************************************************************/ + +#undef INTERFACE +#define INTERFACE IXAudio2SourceVoice +DECLARE_INTERFACE_(IXAudio2SourceVoice, IXAudio2Voice) +{ + // Methods from IXAudio2Voice base interface + Declare_IXAudio2Voice_Methods(); + + // NAME: IXAudio2SourceVoice::Start + // DESCRIPTION: Makes this voice start consuming and processing audio. + // + // ARGUMENTS: + // Flags - Flags controlling how the voice should be started. + // OperationSet - Used to identify this call as part of a deferred batch. + // + STDMETHOD(Start) (THIS_ UINT32 Flags X2DEFAULT(0), UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; + + // NAME: IXAudio2SourceVoice::Stop + // DESCRIPTION: Makes this voice stop consuming audio. + // + // ARGUMENTS: + // Flags - Flags controlling how the voice should be stopped. + // OperationSet - Used to identify this call as part of a deferred batch. + // + STDMETHOD(Stop) (THIS_ UINT32 Flags X2DEFAULT(0), UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; + + // NAME: IXAudio2SourceVoice::SubmitSourceBuffer + // DESCRIPTION: Adds a new audio buffer to this voice's input queue. + // + // ARGUMENTS: + // pBuffer - Pointer to the buffer structure to be queued. + // pBufferWMA - Additional structure used only when submitting XWMA data. + // + STDMETHOD(SubmitSourceBuffer) (THIS_ _In_ const XAUDIO2_BUFFER* pBuffer, _In_opt_ const XAUDIO2_BUFFER_WMA* pBufferWMA X2DEFAULT(NULL)) PURE; + + // NAME: IXAudio2SourceVoice::FlushSourceBuffers + // DESCRIPTION: Removes all pending audio buffers from this voice's queue. + // + STDMETHOD(FlushSourceBuffers) (THIS) PURE; + + // NAME: IXAudio2SourceVoice::Discontinuity + // DESCRIPTION: Notifies the voice of an intentional break in the stream of + // audio buffers (e.g. the end of a sound), to prevent XAudio2 + // from interpreting an empty buffer queue as a glitch. + // + STDMETHOD(Discontinuity) (THIS) PURE; + + // NAME: IXAudio2SourceVoice::ExitLoop + // DESCRIPTION: Breaks out of the current loop when its end is reached. + // + // ARGUMENTS: + // OperationSet - Used to identify this call as part of a deferred batch. + // + STDMETHOD(ExitLoop) (THIS_ UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; + + // NAME: IXAudio2SourceVoice::GetState + // DESCRIPTION: Returns the number of buffers currently queued on this voice, + // the pContext value associated with the currently processing + // buffer (if any), and other voice state information. + // + // ARGUMENTS: + // pVoiceState - Returns the state information. + // Flags - Flags controlling what voice state is returned. + // + STDMETHOD_(void, GetState) (THIS_ _Out_ XAUDIO2_VOICE_STATE* pVoiceState, UINT32 Flags X2DEFAULT(0)) PURE; + + // NAME: IXAudio2SourceVoice::SetFrequencyRatio + // DESCRIPTION: Sets this voice's frequency adjustment, i.e. its pitch. + // + // ARGUMENTS: + // Ratio - Frequency change, expressed as source frequency / target frequency. + // OperationSet - Used to identify this call as part of a deferred batch. + // + STDMETHOD(SetFrequencyRatio) (THIS_ float Ratio, + UINT32 OperationSet X2DEFAULT(XAUDIO2_COMMIT_NOW)) PURE; + + // NAME: IXAudio2SourceVoice::GetFrequencyRatio + // DESCRIPTION: Returns this voice's current frequency adjustment ratio. + // + // ARGUMENTS: + // pRatio - Returns the frequency adjustment. + // + STDMETHOD_(void, GetFrequencyRatio) (THIS_ _Out_ float* pRatio) PURE; + + // NAME: IXAudio2SourceVoice::SetSourceSampleRate + // DESCRIPTION: Reconfigures this voice to treat its source data as being + // at a different sample rate than the original one specified + // in CreateSourceVoice's pSourceFormat argument. + // + // ARGUMENTS: + // UINT32 - The intended sample rate of further submitted source data. + // + STDMETHOD(SetSourceSampleRate) (THIS_ UINT32 NewSourceSampleRate) PURE; +}; + + +/************************************************************************** + * + * IXAudio2SubmixVoice: Submixing voice management interface. + * + **************************************************************************/ + +#undef INTERFACE +#define INTERFACE IXAudio2SubmixVoice +DECLARE_INTERFACE_(IXAudio2SubmixVoice, IXAudio2Voice) +{ + // Methods from IXAudio2Voice base interface + Declare_IXAudio2Voice_Methods(); + + // There are currently no methods specific to submix voices. +}; + + +/************************************************************************** + * + * IXAudio2MasteringVoice: Mastering voice management interface. + * + **************************************************************************/ + +#undef INTERFACE +#define INTERFACE IXAudio2MasteringVoice +DECLARE_INTERFACE_(IXAudio2MasteringVoice, IXAudio2Voice) +{ + // Methods from IXAudio2Voice base interface + Declare_IXAudio2Voice_Methods(); + + // NAME: IXAudio2MasteringVoice::GetChannelMask + // DESCRIPTION: Returns the channel mask for this voice + // + // ARGUMENTS: + // pChannelMask - returns the channel mask for this voice. This corresponds + // to the dwChannelMask member of WAVEFORMATEXTENSIBLE. + // + STDMETHOD(GetChannelMask) (THIS_ _Out_ DWORD* pChannelmask) PURE; +}; + + +/************************************************************************** + * + * IXAudio2EngineCallback: Client notification interface for engine events. + * + * REMARKS: Contains methods to notify the client when certain events happen + * in the XAudio2 engine. This interface should be implemented by + * the client. XAudio2 will call these methods via the interface + * pointer provided by the client when it calls + * IXAudio2::RegisterForCallbacks. + * + **************************************************************************/ + +#undef INTERFACE +#define INTERFACE IXAudio2EngineCallback +DECLARE_INTERFACE(IXAudio2EngineCallback) +{ + // Called by XAudio2 just before an audio processing pass begins. + STDMETHOD_(void, OnProcessingPassStart) (THIS) PURE; + + // Called just after an audio processing pass ends. + STDMETHOD_(void, OnProcessingPassEnd) (THIS) PURE; + + // Called in the event of a critical system error which requires XAudio2 + // to be closed down and restarted. The error code is given in Error. + STDMETHOD_(void, OnCriticalError) (THIS_ HRESULT Error) PURE; +}; + + +/************************************************************************** + * + * IXAudio2VoiceCallback: Client notification interface for voice events. + * + * REMARKS: Contains methods to notify the client when certain events happen + * in an XAudio2 voice. This interface should be implemented by the + * client. XAudio2 will call these methods via an interface pointer + * provided by the client in the IXAudio2::CreateSourceVoice call. + * + **************************************************************************/ + +#undef INTERFACE +#define INTERFACE IXAudio2VoiceCallback +DECLARE_INTERFACE(IXAudio2VoiceCallback) +{ + // Called just before this voice's processing pass begins. + STDMETHOD_(void, OnVoiceProcessingPassStart) (THIS_ UINT32 BytesRequired) PURE; + + // Called just after this voice's processing pass ends. + STDMETHOD_(void, OnVoiceProcessingPassEnd) (THIS) PURE; + + // Called when this voice has just finished playing a buffer stream + // (as marked with the XAUDIO2_END_OF_STREAM flag on the last buffer). + STDMETHOD_(void, OnStreamEnd) (THIS) PURE; + + // Called when this voice is about to start processing a new buffer. + STDMETHOD_(void, OnBufferStart) (THIS_ void* pBufferContext) PURE; + + // Called when this voice has just finished processing a buffer. + // The buffer can now be reused or destroyed. + STDMETHOD_(void, OnBufferEnd) (THIS_ void* pBufferContext) PURE; + + // Called when this voice has just reached the end position of a loop. + STDMETHOD_(void, OnLoopEnd) (THIS_ void* pBufferContext) PURE; + + // Called in the event of a critical error during voice processing, + // such as a failing xAPO or an error from the hardware XMA decoder. + // The voice may have to be destroyed and re-created to recover from + // the error. The callback arguments report which buffer was being + // processed when the error occurred, and its HRESULT code. + STDMETHOD_(void, OnVoiceError) (THIS_ void* pBufferContext, HRESULT Error) PURE; +}; + + +/************************************************************************** + * + * Macros to make it easier to use the XAudio2 COM interfaces in C code. + * + **************************************************************************/ + +#ifndef __cplusplus + +// IXAudio2 +#define IXAudio2_QueryInterface(This,riid,ppvInterface) ((This)->lpVtbl->QueryInterface(This,riid,ppvInterface)) +#define IXAudio2_AddRef(This) ((This)->lpVtbl->AddRef(This)) +#define IXAudio2_Release(This) ((This)->lpVtbl->Release(This)) +#define IXAudio2_RegisterForCallbacks(This,pCallback) ((This)->lpVtbl->RegisterForCallbacks(This,pCallback)) +#define IXAudio2_UnregisterForCallbacks(This,pCallback) ((This)->lpVtbl->UnregisterForCallbacks(This,pCallback)) +#define IXAudio2_CreateSourceVoice(This,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain) ((This)->lpVtbl->CreateSourceVoice(This,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain)) +#define IXAudio2_CreateSubmixVoice(This,ppSubmixVoice,InputChannels,InputSampleRate,Flags,ProcessingStage,pSendList,pEffectChain) ((This)->lpVtbl->CreateSubmixVoice(This,ppSubmixVoice,InputChannels,InputSampleRate,Flags,ProcessingStage,pSendList,pEffectChain)) +#define IXAudio2_CreateMasteringVoice(This,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceId,pEffectChain,StreamCategory) ((This)->lpVtbl->CreateMasteringVoice(This,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceId,pEffectChain,StreamCategory)) +#define IXAudio2_StartEngine(This) ((This)->lpVtbl->StartEngine(This)) +#define IXAudio2_StopEngine(This) ((This)->lpVtbl->StopEngine(This)) +#define IXAudio2_CommitChanges(This,OperationSet) ((This)->lpVtbl->CommitChanges(This,OperationSet)) +#define IXAudio2_GetPerformanceData(This,pPerfData) ((This)->lpVtbl->GetPerformanceData(This,pPerfData)) +#define IXAudio2_SetDebugConfiguration(This,pDebugConfiguration,pReserved) ((This)->lpVtbl->SetDebugConfiguration(This,pDebugConfiguration,pReserved)) + +// IXAudio2Extension +#define IXAudio2Extension_GetProcessingQuantum(This,quantumNumerator,quantumDenominator) ((This)->lpVtbl->GetProcessingQuantum(This,quantumNumerator,quantumDenominator)) +#define IXAudio2Extension_GetProcessor(This,processor) ((This)->lpVtbl->GetProcessor(This,processor)) + +// IXAudio2Voice +#define IXAudio2Voice_GetVoiceDetails(This,pVoiceDetails) ((This)->lpVtbl->GetVoiceDetails(This,pVoiceDetails)) +#define IXAudio2Voice_SetOutputVoices(This,pSendList) ((This)->lpVtbl->SetOutputVoices(This,pSendList)) +#define IXAudio2Voice_SetEffectChain(This,pEffectChain) ((This)->lpVtbl->SetEffectChain(This,pEffectChain)) +#define IXAudio2Voice_EnableEffect(This,EffectIndex,OperationSet) ((This)->lpVtbl->EnableEffect(This,EffectIndex,OperationSet)) +#define IXAudio2Voice_DisableEffect(This,EffectIndex,OperationSet) ((This)->lpVtbl->DisableEffect(This,EffectIndex,OperationSet)) +#define IXAudio2Voice_GetEffectState(This,EffectIndex,pEnabled) ((This)->lpVtbl->GetEffectState(This,EffectIndex,pEnabled)) +#define IXAudio2Voice_SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize, OperationSet) ((This)->lpVtbl->SetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize,OperationSet)) +#define IXAudio2Voice_GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize) ((This)->lpVtbl->GetEffectParameters(This,EffectIndex,pParameters,ParametersByteSize)) +#define IXAudio2Voice_SetFilterParameters(This,pParameters,OperationSet) ((This)->lpVtbl->SetFilterParameters(This,pParameters,OperationSet)) +#define IXAudio2Voice_GetFilterParameters(This,pParameters) ((This)->lpVtbl->GetFilterParameters(This,pParameters)) +#define IXAudio2Voice_SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet) ((This)->lpVtbl->SetOutputFilterParameters(This,pDestinationVoice,pParameters,OperationSet)) +#define IXAudio2Voice_GetOutputFilterParameters(This,pDestinationVoice,pParameters) ((This)->lpVtbl->GetOutputFilterParameters(This,pDestinationVoice,pParameters)) +#define IXAudio2Voice_SetVolume(This,Volume,OperationSet) ((This)->lpVtbl->SetVolume(This,Volume,OperationSet)) +#define IXAudio2Voice_GetVolume(This,pVolume) ((This)->lpVtbl->GetVolume(This,pVolume)) +#define IXAudio2Voice_SetChannelVolumes(This,Channels,pVolumes,OperationSet) ((This)->lpVtbl->SetChannelVolumes(This,Channels,pVolumes,OperationSet)) +#define IXAudio2Voice_GetChannelVolumes(This,Channels,pVolumes) ((This)->lpVtbl->GetChannelVolumes(This,Channels,pVolumes)) +#define IXAudio2Voice_SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet) ((This)->lpVtbl->SetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix,OperationSet)) +#define IXAudio2Voice_GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix) ((This)->lpVtbl->GetOutputMatrix(This,pDestinationVoice,SourceChannels,DestinationChannels,pLevelMatrix)) +#define IXAudio2Voice_DestroyVoice(This) ((This)->lpVtbl->DestroyVoice(This)) + +// IXAudio2SourceVoice +#define IXAudio2SourceVoice_GetVoiceDetails IXAudio2Voice_GetVoiceDetails +#define IXAudio2SourceVoice_SetOutputVoices IXAudio2Voice_SetOutputVoices +#define IXAudio2SourceVoice_SetEffectChain IXAudio2Voice_SetEffectChain +#define IXAudio2SourceVoice_EnableEffect IXAudio2Voice_EnableEffect +#define IXAudio2SourceVoice_DisableEffect IXAudio2Voice_DisableEffect +#define IXAudio2SourceVoice_GetEffectState IXAudio2Voice_GetEffectState +#define IXAudio2SourceVoice_SetEffectParameters IXAudio2Voice_SetEffectParameters +#define IXAudio2SourceVoice_GetEffectParameters IXAudio2Voice_GetEffectParameters +#define IXAudio2SourceVoice_SetFilterParameters IXAudio2Voice_SetFilterParameters +#define IXAudio2SourceVoice_GetFilterParameters IXAudio2Voice_GetFilterParameters +#define IXAudio2SourceVoice_SetOutputFilterParameters IXAudio2Voice_SetOutputFilterParameters +#define IXAudio2SourceVoice_GetOutputFilterParameters IXAudio2Voice_GetOutputFilterParameters +#define IXAudio2SourceVoice_SetVolume IXAudio2Voice_SetVolume +#define IXAudio2SourceVoice_GetVolume IXAudio2Voice_GetVolume +#define IXAudio2SourceVoice_SetChannelVolumes IXAudio2Voice_SetChannelVolumes +#define IXAudio2SourceVoice_GetChannelVolumes IXAudio2Voice_GetChannelVolumes +#define IXAudio2SourceVoice_SetOutputMatrix IXAudio2Voice_SetOutputMatrix +#define IXAudio2SourceVoice_GetOutputMatrix IXAudio2Voice_GetOutputMatrix +#define IXAudio2SourceVoice_DestroyVoice IXAudio2Voice_DestroyVoice +#define IXAudio2SourceVoice_Start(This,Flags,OperationSet) ((This)->lpVtbl->Start(This,Flags,OperationSet)) +#define IXAudio2SourceVoice_Stop(This,Flags,OperationSet) ((This)->lpVtbl->Stop(This,Flags,OperationSet)) +#define IXAudio2SourceVoice_SubmitSourceBuffer(This,pBuffer,pBufferWMA) ((This)->lpVtbl->SubmitSourceBuffer(This,pBuffer,pBufferWMA)) +#define IXAudio2SourceVoice_FlushSourceBuffers(This) ((This)->lpVtbl->FlushSourceBuffers(This)) +#define IXAudio2SourceVoice_Discontinuity(This) ((This)->lpVtbl->Discontinuity(This)) +#define IXAudio2SourceVoice_ExitLoop(This,OperationSet) ((This)->lpVtbl->ExitLoop(This,OperationSet)) +#define IXAudio2SourceVoice_GetState(This,pVoiceState,Flags) ((This)->lpVtbl->GetState(This,pVoiceState,Flags)) +#define IXAudio2SourceVoice_SetFrequencyRatio(This,Ratio,OperationSet) ((This)->lpVtbl->SetFrequencyRatio(This,Ratio,OperationSet)) +#define IXAudio2SourceVoice_GetFrequencyRatio(This,pRatio) ((This)->lpVtbl->GetFrequencyRatio(This,pRatio)) +#define IXAudio2SourceVoice_SetSourceSampleRate(This,NewSourceSampleRate) ((This)->lpVtbl->SetSourceSampleRate(This,NewSourceSampleRate)) + +// IXAudio2SubmixVoice +#define IXAudio2SubmixVoice_GetVoiceDetails IXAudio2Voice_GetVoiceDetails +#define IXAudio2SubmixVoice_SetOutputVoices IXAudio2Voice_SetOutputVoices +#define IXAudio2SubmixVoice_SetEffectChain IXAudio2Voice_SetEffectChain +#define IXAudio2SubmixVoice_EnableEffect IXAudio2Voice_EnableEffect +#define IXAudio2SubmixVoice_DisableEffect IXAudio2Voice_DisableEffect +#define IXAudio2SubmixVoice_GetEffectState IXAudio2Voice_GetEffectState +#define IXAudio2SubmixVoice_SetEffectParameters IXAudio2Voice_SetEffectParameters +#define IXAudio2SubmixVoice_GetEffectParameters IXAudio2Voice_GetEffectParameters +#define IXAudio2SubmixVoice_SetFilterParameters IXAudio2Voice_SetFilterParameters +#define IXAudio2SubmixVoice_GetFilterParameters IXAudio2Voice_GetFilterParameters +#define IXAudio2SubmixVoice_SetOutputFilterParameters IXAudio2Voice_SetOutputFilterParameters +#define IXAudio2SubmixVoice_GetOutputFilterParameters IXAudio2Voice_GetOutputFilterParameters +#define IXAudio2SubmixVoice_SetVolume IXAudio2Voice_SetVolume +#define IXAudio2SubmixVoice_GetVolume IXAudio2Voice_GetVolume +#define IXAudio2SubmixVoice_SetChannelVolumes IXAudio2Voice_SetChannelVolumes +#define IXAudio2SubmixVoice_GetChannelVolumes IXAudio2Voice_GetChannelVolumes +#define IXAudio2SubmixVoice_SetOutputMatrix IXAudio2Voice_SetOutputMatrix +#define IXAudio2SubmixVoice_GetOutputMatrix IXAudio2Voice_GetOutputMatrix +#define IXAudio2SubmixVoice_DestroyVoice IXAudio2Voice_DestroyVoice + +// IXAudio2MasteringVoice +#define IXAudio2MasteringVoice_GetVoiceDetails IXAudio2Voice_GetVoiceDetails +#define IXAudio2MasteringVoice_SetOutputVoices IXAudio2Voice_SetOutputVoices +#define IXAudio2MasteringVoice_SetEffectChain IXAudio2Voice_SetEffectChain +#define IXAudio2MasteringVoice_EnableEffect IXAudio2Voice_EnableEffect +#define IXAudio2MasteringVoice_DisableEffect IXAudio2Voice_DisableEffect +#define IXAudio2MasteringVoice_GetEffectState IXAudio2Voice_GetEffectState +#define IXAudio2MasteringVoice_SetEffectParameters IXAudio2Voice_SetEffectParameters +#define IXAudio2MasteringVoice_GetEffectParameters IXAudio2Voice_GetEffectParameters +#define IXAudio2MasteringVoice_SetFilterParameters IXAudio2Voice_SetFilterParameters +#define IXAudio2MasteringVoice_GetFilterParameters IXAudio2Voice_GetFilterParameters +#define IXAudio2MasteringVoice_SetOutputFilterParameters IXAudio2Voice_SetOutputFilterParameters +#define IXAudio2MasteringVoice_GetOutputFilterParameters IXAudio2Voice_GetOutputFilterParameters +#define IXAudio2MasteringVoice_SetVolume IXAudio2Voice_SetVolume +#define IXAudio2MasteringVoice_GetVolume IXAudio2Voice_GetVolume +#define IXAudio2MasteringVoice_SetChannelVolumes IXAudio2Voice_SetChannelVolumes +#define IXAudio2MasteringVoice_GetChannelVolumes IXAudio2Voice_GetChannelVolumes +#define IXAudio2MasteringVoice_SetOutputMatrix IXAudio2Voice_SetOutputMatrix +#define IXAudio2MasteringVoice_GetOutputMatrix IXAudio2Voice_GetOutputMatrix +#define IXAudio2MasteringVoice_DestroyVoice IXAudio2Voice_DestroyVoice +#define IXAudio2MasteringVoice_GetChannelMask(This,pChannelMask) ((This)->lpVtbl->GetChannelMask(This,pChannelMask)) + +#endif // #ifndef __cplusplus + + +/************************************************************************** + * + * Utility functions used to convert from pitch in semitones and volume + * in decibels to the frequency and amplitude ratio units used by XAudio2. + * These are only defined if the client #defines XAUDIO2_HELPER_FUNCTIONS + * prior to #including xaudio2.h. + * + **************************************************************************/ + +#ifdef XAUDIO2_HELPER_FUNCTIONS + +#define _USE_MATH_DEFINES // Make math.h define M_PI +#include // For powf, log10f, sinf and asinf + +// Calculate the argument to SetVolume from a decibel value +__inline float XAudio2DecibelsToAmplitudeRatio(float Decibels) +{ + return powf(10.0f, Decibels / 20.0f); +} + +// Recover a volume in decibels from an amplitude factor +__inline float XAudio2AmplitudeRatioToDecibels(float Volume) +{ + if (Volume == 0) + { + return -3.402823466e+38f; // Smallest float value (-FLT_MAX) + } + return 20.0f * log10f(Volume); +} + +// Calculate the argument to SetFrequencyRatio from a semitone value +__inline float XAudio2SemitonesToFrequencyRatio(float Semitones) +{ + // FrequencyRatio = 2 ^ Octaves + // = 2 ^ (Semitones / 12) + return powf(2.0f, Semitones / 12.0f); +} + +// Recover a pitch in semitones from a frequency ratio +__inline float XAudio2FrequencyRatioToSemitones(float FrequencyRatio) +{ + // Semitones = 12 * log2(FrequencyRatio) + // = 12 * log2(10) * log10(FrequencyRatio) + return 39.86313713864835f * log10f(FrequencyRatio); +} + +// Convert from filter cutoff frequencies expressed in Hertz to the radian +// frequency values used in XAUDIO2_FILTER_PARAMETERS.Frequency, state-variable +// filter types only. Use XAudio2CutoffFrequencyToOnePoleCoefficient() for one-pole filter types. +// Note that the highest CutoffFrequency supported is SampleRate/6. +// Higher values of CutoffFrequency will return XAUDIO2_MAX_FILTER_FREQUENCY. +__inline float XAudio2CutoffFrequencyToRadians(float CutoffFrequency, UINT32 SampleRate) +{ + if ((UINT32)(CutoffFrequency * 6.0f) >= SampleRate) + { + return XAUDIO2_MAX_FILTER_FREQUENCY; + } + return 2.0f * sinf((float)M_PI * CutoffFrequency / (float)SampleRate); +} + +// Convert from radian frequencies back to absolute frequencies in Hertz +__inline float XAudio2RadiansToCutoffFrequency(float Radians, float SampleRate) +{ + return SampleRate * asinf(Radians / 2.0f) / (float)M_PI; +} + +// Convert from filter cutoff frequencies expressed in Hertz to the filter +// coefficients used with XAUDIO2_FILTER_PARAMETERS.Frequency, +// LowPassOnePoleFilter and HighPassOnePoleFilter filter types only. +// Use XAudio2CutoffFrequencyToRadians() for state-variable filter types. +__inline float XAudio2CutoffFrequencyToOnePoleCoefficient(float CutoffFrequency, UINT32 SampleRate) +{ + if ((UINT32)CutoffFrequency >= SampleRate) + { + return XAUDIO2_MAX_FILTER_FREQUENCY; + } + return ( 1.0f - powf(1.0f - 2.0f * CutoffFrequency / (float)SampleRate, 2.0f) ); +} + + +#endif // #ifdef XAUDIO2_HELPER_FUNCTIONS + + +/************************************************************************** + * + * XAudio2Create: Top-level function that creates an XAudio2 instance. + * + * ARGUMENTS: + * + * Flags - Flags specifying the XAudio2 object's behavior. + * + * XAudio2Processor - An XAUDIO2_PROCESSOR value that specifies the + * hardware threads (Xbox) or processors (Windows) that XAudio2 + * will use. Note that XAudio2 supports concurrent processing on + * multiple threads, using any combination of XAUDIO2_PROCESSOR + * flags. The values are platform-specific; platform-independent + * code can use XAUDIO2_USE_DEFAULT_PROCESSOR to use the default on + * each platform. + * + **************************************************************************/ + +// We're an xaudio2 client +#define XAUDIO2_STDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE + +XAUDIO2_STDAPI XAudio2Create(_Outptr_ IXAudio2** ppXAudio2, UINT32 Flags X2DEFAULT(0), + XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_USE_DEFAULT_PROCESSOR)); + +// Undo the #pragma pack(push, 1) directive at the top of this file +#pragma pack(pop) + +#endif // #ifndef GUID_DEFS_ONLY + +#endif // #ifndef __XAUDIO2_INCLUDED__ + diff --git a/3rdparty/XAudio2Redist/libs/xaudio2_9redist.lib b/3rdparty/XAudio2Redist/libs/xaudio2_9redist.lib index 815774a2b939a07dd518d00129e0c252d16783bf..7678dd5c20e434ca8a103be0734f900fa8c8e9e7 100644 GIT binary patch delta 88 zcmZ1?zC?V35ev(#)4g9Oo3ZR*JUCg9U1PF1s}c@5M*VD<3Z1R)uvCja@sBk(Y=jRsaWu_clyo7@p0DT)DkpKVy delta 88 zcmZ1?zC?V35erMzYxS#>%~*CY?wBmdt}$7h)rxV)<{(xrMi%Wgbtfh_uuTBV7%=Xb o?8IKddMQfn@6*YRZ1R)uvCja@sBk(Y=jRsaWv1*{yo7@p09a`s8~^|S diff --git a/bin/xaudio2_9redist.dll b/bin/xaudio2_9redist.dll index 552f0ef02bf02b2054277ba31db9880a004fe845..e41b2c60b9be8252a5ccde76dd19b86a376f2e73 100755 GIT binary patch delta 133252 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%0D|#LSQ~o0;Ja6F1WS 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

ge=(=V&{TNJolobd6) zYO5|Qj->jV1Im8-N9-7aZl2QUxhyVq`Gj0$tb3#Q&Cw@xK8(m@V+zfQyNh;hFPNo9XM1^7++E z{cOD`ppq~8*{MWs&kK3py&IxU&IAPYRSCcA-L2Yj=fB%z&Si_$1YU%FKWn)uH$L>I zQwneH=1%FU)$gukY;wy_e$BqbAzIeFGTWBbBJNp${jIkW6O`?O-Q|w+ zIVe>33pj1EE)$WOVKv?J{ez-j-p7Yb&NQ_#)ven6T(o-b^t$7Gatc4UGfrx@(B~{< zDB4>5eC6&hzv^clX(K+;W`kv!_J@so)`vwL|EDFbV&S>l1CZOxGo?$9y zn1)>9jQjqUr>;G8ySA2d%dv-NLH!_Tw+EE*S(=y_!esW;pEuv%Ew3;m>e#XLdCyob zxo2mjo+!T68#v`h#tQ2;4+UxWV`ft(r0vpM6ZdxN%>$f&+A1S{)+?N-V6#>`wqMzT z_3-*-U%ua96a8{2XsRIV745pCMmE;_;;b}urbKllU+1rnd$Y}bT2lBI{!de$7;H9G zI{&BL^Z&0HF2#Mk-$S0Jblj~iwwKtZl3!x6-kfPls_T1`*a+npcDr@?jn_x#);+%Q zdDXeu>l|fRneTaS`Mo#fNIFZs>pIR=$5ht#c^Zd(++y@#g@0*Fgy2lplz-A8W{*~y zT+rNS@M&v$ypxa9T$|aluHu*1>$AOF`*XT`Jjc1yhHT#qiyoG3=lbIGhU=Z?^99%2 za^~?LE3;WDE|a@YQFzL__}yF^DoW(i6n{UqJ^wL5cOP@GtXhTP@uCxKxtsspF{_W= z(jT(D?Sx0(LFUu1H}|a-VRGEt#HG7*&-`D1cH~6O@wD*rt9h_)(uA#F1m>smK7TFx zr}%baiejVU89k8)ipA~qo910v^!!HpjV|AXTY4rJAH8L=I;i>O;s9=8i(dh+CoQRF zYV1BMd!o(kc;>T$mzz}mW}mY-;n{osuIG2P^?t|0_gugJJ#~fGpW~A!wbk^@%KX40 z#eYe6rRmu=Hb)_mPKJlw`tKIy^A#Fs7FG-Dehl|*jL{M~c!jS`Su@OT$-bT5rx!P@ KYo7?d5eEQt+r{hv delta 133052 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Ξ0aBdT+k9YT2>8s%FolI1Oy_@tunWF1GR*qP$gqcnn_MtY14Hj+&nZJw-G5;7D-mq|kX}kZ73_n=7865sIGMr{) zV&GuqW;nyh#PFMu3EVsnU}9oWVqvOh&|&3fFkoR~_`u2pW`pRb>`*p46N5Jw6N3jU zH$wmy6GIaZggt?WiGhtD!sg&-V&D~EVn|`-W)KiyVpuE4#8AM>&9Fg`iGfL&iD3dO zHv@|>6T<^xCWZ~H++f;B6e4aSTF=BFFV6&y4+VK9hE{ndaHpa}o{7Op0m61sU}D&* z%*1enm78IYG84m76()uotlSJQRG1hxs6y0$=!04ibB<^+G0f3nVtB#I4W^@YnZT{y z7+ofYdUGa*Kdjsg4dzS?x)w|fDfQpD7z`|!7?f?87%bSh8B}bT7%tjC483B*#L#97 zVRzUvG59z$G32mugXz`IObi`t+ze}+nHb)iNWX~#88uiObj0mGJ$(SAiCrb6S(OXaF~f<)e$C!KkVEL8;&qB%sh5U3=UVA z7#yxLF|=@SGfcR~#4!0L6S#eVyu}rHd+M@VOboECtRTAmHWR}Y4sHezt$LS<;ROdb z1BiCH$Hef1gPQ?FyWV4B;Nawj?nbfn9x^d_aB?#=JY-^s zd&a~N!O6{#@QjJU{yh^z2`4v$!+R!%(;px{L*AYW+P3=Z6BEM{PHqMe&HI^&;S47? z%Jx*yHdWZR)PVZWOboJLm>3wixWTmc7bXS~E^Y=89rlHZL4}K(A>j)XgUnAR1`{rB z2Bb}*C>uyY8%aO?V`6CG;${HRfBrEsY~bQ%0MQ%&Gcg?C;${HRd;T*qyy4FJh>@8=ft#BFM89WbX7B*1XJlsh z&&13S!OhJOz|73Bj+q%UkHEsr(8kIP?&~A(Ii1MH%y1dHKlL&jb3KDPJ2OKEH#eBJ zU}t8S!_CbAqW7~iGpym}W=P;*W+>xi24_p8J*5nw4XG*6{ih&WmYbR312;DVh?eGI zW?nH$y#$vE7K7!Ge#Q0YtwtW@hl= z<7W6^%*?=R$;=SL$IXDen-jFlbGa2W!xlbn1`w@p&CGCuj~it-CumnEZ1*OJwz6er z_`}D|0HR%NnHePbxfwvTpDlAeg9bl0gP$!kLy#>qg9Se~m`=2128$!@zGMLH+=T7a z1ksXq%nUjF+zcRE$BvnyfuEZJL>t>NGfd#;M&5)8-mrPniJ4&yKQ{x2zU;)zz#zcQ zaM`Jznc=w;GlPHtH-vVENFZ<61Z~{pcV%YK5#VM3(W0)*3=sm{D4R1un>1k?GC}lu zcV>nO0^AHB8nnN1g#b6ozDv;l%UvGK3@7RZxEVlGDynHgjRxfzi6UxM~wZV6;&uo2{D0MR!CnHeGkxfvb=GBZfWFf(Kbax)Hd~$%`dIs+ zFf&*PbAxH|Zf1rMVQvNx9ofyykRr^@0HRB}>zNr!gt-|?x|tbfcQZ3|2y-(m=w@c9 z>t|+|AxEVmS+-hb92N7-t5beC0nIS}k8)*k5H^Y>Aq^*>oEtLz_Ff&XM;bs8Q;p>G76a5I2tp7qQO7eu%jK(y3)W`-vspw0<1L-%?}DLG+1GlR}1W`-{! z+zg0qlH4d;C_!5*<+m_1)a!_HGk_RYTbUVLM7bG2wDVSGh7eJ1h6`Jn8KxX%W=IhQ z)#Zr&m7sl=t|yoodPKPyK(y}(W`-4_+$j4iLHjJ-PBAm=5anh7(ZQ#f8P14uGbEg1 zW(YdV%y0+9KFeGW+cycOm!D&1_#?{A0HW8NV`dN$<7U`!j+w#j3NwR>7&k+}6=v`j zN)M1Y($-4Q7E7@Q%nUhV+zcSv3Ircap}7J%6Bt&!YF+biq289@6d zAG}~@U=ZhK0MVd5mJ;IJD0?kIdoI)8F*7)bb2A|JNOFVsRz`keW=Ig{W&qJCpO_gM z#JL$jboM7^h6y0`NP8$jdnsZ2BSG}ZdIlDTAL85$CmC267#LX?BqX@O^h8D$1`P>r z2E>L(Zj{ZCpiPp6Y%B~l65I?RTAYi8VU7eh1DNJwVORswi?lfsv`O+a4-3Nu32p`u z&Bn{Z@J520p&rEG`Bf-rez{|p*&BwwZA<4~v*bT|eP{+^0U@pMIU?a&5rZWXt z7$PLO843hg7?ed=7&1WW;kzTb!Mi3;i?A^CNOCiP=o=y|3=1T=8IX5Kf_6^&$*|Nj z9FXK@@RMO-h?ikucp=HnfY{o|jj}Bgv>o!S0tCq07P$BF)XPK$nHVQlACf zI&#owVGuEAVMvkYMr>=Wm*xiVg*;=!!mve}n*l_F_A_3P=0@4)2-@#hWzWL!N1B@f zM4xtKVGxkvWoYu9 z7$(SYqik3NZEj5QV_{e$!_5GqOZ-?EZpd&mfarQZ7KS%6+zbtVEDWImEDV2SxET@x zSQxlMSr}wwxluMQf;KENgt0KB$Z|7)Xz?%>h8kIJ1`sV5#=_7e%U#a^Vkko;5W5w* z89=)je}=IzY?0+=0MXLnEDR@Pxfv9~Ss22iSQu`|ax)}Eu`uk4W&t-ck#{VDb~0AR zvM{j7aWjDEDX}aJ3Ub^GAo_1C3xk0iHv@=fjjM-92*j~4a3-=a_{ecH2q0}=v`J)P zn2^H4P$0(*re~$FFwBwTM%lgy+Q!%c-LeRx-(;{bT#(~t0MXwvSQuW&aWjBuj!YJY zA0YEHSs2!4voLVTb2DtHN7}adIvcV*(LkOXWt$>syCQ5mB8Z-y%fgT&&&>d$7v!=q zG{|!^fap!REDRImxfu}K5xK$J6e~(t7&gdrGl1whB`geQKbfzl(I1JC~z}?=+JT&1{noz1`wTE4iR5a&ca|($--cxz|G)L$->ZC#R48= zo>0ZYFs+(}AwYqfVL>$uLq!7%cx3qy+nH<-?8 zVPROHz|DZzyvPmS)L7fa!f--?n*l^m?_yzi0urO#Saf9g{J6ISTl(-o{^pzbf3;{~q z3=ej&FudH$!jPcE&G2C_3xnqYNT?vTAaX;tC)PvvD}wed-aN>{utbTQ0YnQNVqrL- z#LWPrH4d>bTu|a>0MVL zm4(4ZnVaFkRTc)Vn=A|=%G?YFH(40W?y)eGD04Gd++$(jddR{sL7AID;2{gcpT{f= zJCwP>G|NjCh8H05mn;lt->@*~sBkkJc+0|||AmDiLWP^b;0p`G91!~p7lXlf7KXdO zSn45`{bFGd`OCu4p~B6e@Rx;wmywlWh6?DE9mEby&`wN6CRT%ay0HO`pSQ%tgxfww8VRlxA099^=!|e5}4D4L23=OK>VA`0A zm0^u4Hv@vLh3;Gm}G+l_5r*n*l^S zDzY*ZsB<%bXb(kJh6Z(R1`zEJ6%SBkWw26WWtgJQ&9Fm>m0`9jE5izPZiYFktPH=@ zSs4zfbJsKcQD+*MEi1!eTUK!HIAY7n zpkW6MQ9D+K7Q1>@a8{XM$I5WQ4x$J|ciXc<#(nKs8P3^5G+eM}W#DmS1RJ*V;T+rZVXmDX= znC$}5u)u|tLEViNyimlzjg_I;4Pt1C8!N+cH;9@GZmbN)+*!fv1}?a>GVpmo)ChR6 zGBkR!GQ82?W|-i~%5csTs@{{8ABGi>l>Wia=Hh&%YPGIT)M6Z}{iLIPPCEHt^nv~VyhI7^EJvocHz zVPy!=7DWGyXJz=K$;|+w_a?A1$Y^mhfM|w9Rt6m{ZUzt? zp2W&vqs7etqPvq=83MHGxluOH3LtHc1#Ob$$YW*Lp~cMrqGj?}8LoiNM9pJmNGfJ! zc%sG4P*BXuFs+0Y+yGfn!piWml$GHN$TFl&w4lwj?<-juRJ6GnKs09+D}#kLH-kzw zD}!QvEh~cuh*QhTFt>@7AxE2=;X@NEgG37}!wPL~FzwpL%5X%Ro57=vmEm6-D|k4S zp`Dc>qLY>3jy5-#HtuF+_@T|sVA9RXpxeU=Uc_S1!^*I+mz9A-hnrzbFDrxCL{

+vn9d3pVAbK+^!xCL?hK9|o43gVe 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