include: Add xact3.h.
Based on work by Ethan Lee and Alistair Leslie-Hughes Signed-off-by: Vijay Kiran Kamuju <infyquest@gmail.com> Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
10b17932fa
commit
41288f5e6a
|
@ -804,6 +804,7 @@ SOURCES = \
|
|||
wtypes.idl \
|
||||
wuapi.idl \
|
||||
x3daudio.h \
|
||||
xact3.h \
|
||||
xact3wb.h \
|
||||
xapo.idl \
|
||||
xapofx.h \
|
||||
|
|
|
@ -0,0 +1,472 @@
|
|||
/*
|
||||
* Copyright (C) 2020 Vijay Kiran Kamuju
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef __WINE_XACT3_H
|
||||
#define __WINE_XACT3_H
|
||||
|
||||
#include <windows.h>
|
||||
#include <objbase.h>
|
||||
#include <float.h>
|
||||
#include <limits.h>
|
||||
#include <xact3wb.h>
|
||||
#include <xaudio2.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
DEFINE_GUID(CLSID_XACTEngine, 0xbcc782bc, 0x6492, 0x4c22, 0x8c, 0x35, 0xf5, 0xd7, 0x2f, 0xe7, 0x3c, 0x6e);
|
||||
DEFINE_GUID(CLSID_XACTAuditionEngine, 0x9ecdd80d, 0x0e81, 0x40d8, 0x89, 0x03, 0x2b, 0xf7, 0xb1, 0x31, 0xac, 0x43);
|
||||
DEFINE_GUID(CLSID_XACTDebugEngine, 0x02860630, 0xbf3b, 0x42a8, 0xb1, 0x4e, 0x91, 0xed, 0xa2, 0xf5, 0x1e, 0xa5);
|
||||
|
||||
DEFINE_GUID(IID_IXACT3Engine, 0xb1ee676a, 0xd9cd, 0x4d2a, 0x89, 0xa8, 0xfa, 0x53, 0xeb, 0x9e, 0x48, 0x0b);
|
||||
|
||||
typedef struct IXACT3SoundBank IXACT3SoundBank;
|
||||
typedef struct IXACT3WaveBank IXACT3WaveBank;
|
||||
typedef struct IXACT3Cue IXACT3Cue;
|
||||
typedef struct IXACT3Wave IXACT3Wave;
|
||||
typedef struct IXACT3Engine IXACT3Engine;
|
||||
|
||||
typedef WORD XACTCATEGORY;
|
||||
typedef BYTE XACTCHANNEL;
|
||||
typedef WORD XACTINDEX;
|
||||
typedef BYTE XACTINSTANCELIMIT;
|
||||
typedef BYTE XACTLOOPCOUNT;
|
||||
typedef BYTE XACTNOTIFICATIONTYPE;
|
||||
typedef SHORT XACTPITCH;
|
||||
typedef LONG XACTTIME;
|
||||
typedef WORD XACTVARIABLEINDEX;
|
||||
typedef FLOAT XACTVARIABLEVALUE;
|
||||
typedef BYTE XACTVARIATIONWEIGHT;
|
||||
typedef FLOAT XACTVOLUME;
|
||||
|
||||
static const XACTTIME XACTTIME_MIN = INT_MIN;
|
||||
static const XACTTIME XACTTIME_MAX = INT_MAX;
|
||||
static const XACTTIME XACTTIME_INFINITE = INT_MAX;
|
||||
static const XACTINSTANCELIMIT XACTINSTANCELIMIT_INFINITE = 0xff;
|
||||
static const XACTINSTANCELIMIT XACTINSTANCELIMIT_MIN = 0x00;
|
||||
static const XACTINSTANCELIMIT XACTINSTANCELIMIT_MAX = 0xfe;
|
||||
static const XACTINDEX XACTINDEX_MIN = 0x0;
|
||||
static const XACTINDEX XACTINDEX_MAX = 0xfffe;
|
||||
static const XACTINDEX XACTINDEX_INVALID = 0xffff;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_MIN = 0x00;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_MAX = 0xff;
|
||||
static const XACTVARIABLEVALUE XACTVARIABLEVALUE_MIN = -FLT_MAX;
|
||||
static const XACTVARIABLEVALUE XACTVARIABLEVALUE_MAX = FLT_MAX;
|
||||
static const XACTVARIABLEINDEX XACTVARIABLEINDEX_MIN = 0x0000;
|
||||
static const XACTVARIABLEINDEX XACTVARIABLEINDEX_MAX = 0xfffe;
|
||||
static const XACTVARIABLEINDEX XACTVARIABLEINDEX_INVALID = 0xffff;
|
||||
static const XACTCATEGORY XACTCATEGORY_MIN = 0x0;
|
||||
static const XACTCATEGORY XACTCATEGORY_MAX = 0xfffe;
|
||||
static const XACTCATEGORY XACTCATEGORY_INVALID = 0xffff;
|
||||
static const XACTCHANNEL XACTCHANNEL_MIN = 0;
|
||||
static const XACTCHANNEL XACTCHANNEL_MAX = 0xFF;
|
||||
static const XACTPITCH XACTPITCH_MIN = -1200;
|
||||
static const XACTPITCH XACTPITCH_MAX = 1200;
|
||||
static const XACTPITCH XACTPITCH_MIN_TOTAL = -2400;
|
||||
static const XACTPITCH XACTPITCH_MAX_TOTAL = 2400;
|
||||
static const XACTVOLUME XACTVOLUME_MIN = 0.0f;
|
||||
static const XACTVOLUME XACTVOLUME_MAX = 16777216.0f;
|
||||
static const XACTVARIABLEVALUE XACTPARAMETERVALUE_MIN = -FLT_MAX;
|
||||
static const XACTVARIABLEVALUE XACTPARAMETERVALUE_MAX = FLT_MAX;
|
||||
static const XACTLOOPCOUNT XACTLOOPCOUNT_MIN = 0x0;
|
||||
static const XACTLOOPCOUNT XACTLOOPCOUNT_MAX = 0xfe;
|
||||
static const XACTLOOPCOUNT XACTLOOPCOUNT_INFINITE = 0xff;
|
||||
static const DWORD XACTWAVEALIGNMENT_MIN = 2048;
|
||||
|
||||
#define FACILITY_XACTENGINE 0xAC7
|
||||
#define XACTENGINEERROR(n) MAKE_HRESULT(SEVERITY_ERROR, FACILITY_XACTENGINE, n)
|
||||
|
||||
#define XACTENGINE_E_OUTOFMEMORY E_OUTOFMEMORY
|
||||
#define XACTENGINE_E_INVALIDARG E_INVALIDARG
|
||||
#define XACTENGINE_E_NOTIMPL E_NOTIMPL
|
||||
#define XACTENGINE_E_FAIL E_FAIL
|
||||
|
||||
#define XACTENGINE_E_ALREADYINITIALIZED XACTENGINEERROR(0x001)
|
||||
#define XACTENGINE_E_NOTINITIALIZED XACTENGINEERROR(0x002)
|
||||
#define XACTENGINE_E_EXPIRED XACTENGINEERROR(0x003)
|
||||
#define XACTENGINE_E_NONOTIFICATIONCALLBACK XACTENGINEERROR(0x004)
|
||||
#define XACTENGINE_E_NOTIFICATIONREGISTERED XACTENGINEERROR(0x005)
|
||||
#define XACTENGINE_E_INVALIDUSAGE XACTENGINEERROR(0x006)
|
||||
#define XACTENGINE_E_INVALIDDATA XACTENGINEERROR(0x007)
|
||||
#define XACTENGINE_E_INSTANCELIMITFAILTOPLAY XACTENGINEERROR(0x008)
|
||||
#define XACTENGINE_E_NOGLOBALSETTINGS XACTENGINEERROR(0x009)
|
||||
#define XACTENGINE_E_INVALIDVARIABLEINDEX XACTENGINEERROR(0x00a)
|
||||
#define XACTENGINE_E_INVALIDCATEGORY XACTENGINEERROR(0x00b)
|
||||
#define XACTENGINE_E_INVALIDCUEINDEX XACTENGINEERROR(0x00c)
|
||||
#define XACTENGINE_E_INVALIDWAVEINDEX XACTENGINEERROR(0x00d)
|
||||
#define XACTENGINE_E_INVALIDTRACKINDEX XACTENGINEERROR(0x00e)
|
||||
#define XACTENGINE_E_INVALIDSOUNDOFFSETORINDEX XACTENGINEERROR(0x00f)
|
||||
#define XACTENGINE_E_READFILE XACTENGINEERROR(0x010)
|
||||
#define XACTENGINE_E_UNKNOWNEVENT XACTENGINEERROR(0x011)
|
||||
#define XACTENGINE_E_INCALLBACK XACTENGINEERROR(0x012)
|
||||
#define XACTENGINE_E_NOWAVEBANK XACTENGINEERROR(0x013)
|
||||
#define XACTENGINE_E_SELECTVARIATION XACTENGINEERROR(0x014)
|
||||
#define XACTENGINE_E_MULTIPLEAUDITIONENGINES XACTENGINEERROR(0x015)
|
||||
#define XACTENGINE_E_WAVEBANKNOTPREPARED XACTENGINEERROR(0x016)
|
||||
#define XACTENGINE_E_NORENDERER XACTENGINEERROR(0x017)
|
||||
#define XACTENGINE_E_INVALIDENTRYCOUNT XACTENGINEERROR(0x018)
|
||||
#define XACTENGINE_E_SEEKTIMEBEYONDCUEEND XACTENGINEERROR(0x019)
|
||||
#define XACTENGINE_E_SEEKTIMEBEYONDWAVEEND XACTENGINEERROR(0x01a)
|
||||
#define XACTENGINE_E_NOFRIENDLYNAMES XACTENGINEERROR(0x01b)
|
||||
#define XACTENGINE_E_AUDITION_WRITEFILE XACTENGINEERROR(0x101)
|
||||
#define XACTENGINE_E_AUDITION_NOSOUNDBANK XACTENGINEERROR(0x102)
|
||||
#define XACTENGINE_E_AUDITION_INVALIDRPCINDEX XACTENGINEERROR(0x103)
|
||||
#define XACTENGINE_E_AUDITION_MISSINGDATA XACTENGINEERROR(0x104)
|
||||
#define XACTENGINE_E_AUDITION_UNKNOWNCOMMAND XACTENGINEERROR(0x105)
|
||||
#define XACTENGINE_E_AUDITION_INVALIDDSPINDEX XACTENGINEERROR(0x106)
|
||||
#define XACTENGINE_E_AUDITION_MISSINGWAVE XACTENGINEERROR(0x107)
|
||||
#define XACTENGINE_E_AUDITION_CREATEDIRECTORYFAILED XACTENGINEERROR(0x108)
|
||||
#define XACTENGINE_E_AUDITION_INVALIDSESSION XACTENGINEERROR(0x109)
|
||||
|
||||
static const DWORD XACT_FLAG_STOP_RELEASE = 0x00000000;
|
||||
static const DWORD XACT_FLAG_STOP_IMMEDIATE = 0x00000001;
|
||||
|
||||
static const DWORD XACT_FLAG_MANAGEDATA = 0x00000001;
|
||||
static const DWORD XACT_FLAG_BACKGROUND_MUSIC = 0x00000002;
|
||||
static const DWORD XACT_FLAG_UNITS_MS = 0x00000004;
|
||||
static const DWORD XACT_FLAG_UNITS_SAMPLES = 0x00000008;
|
||||
|
||||
static const DWORD XACT_STATE_CREATED = 0x00000001;
|
||||
static const DWORD XACT_STATE_PREPARING = 0x00000002;
|
||||
static const DWORD XACT_STATE_PREPARED = 0x00000004;
|
||||
static const DWORD XACT_STATE_PLAYING = 0x00000008;
|
||||
static const DWORD XACT_STATE_STOPPING = 0x00000010;
|
||||
static const DWORD XACT_STATE_STOPPED = 0x00000020;
|
||||
static const DWORD XACT_STATE_PAUSED = 0x00000040;
|
||||
static const DWORD XACT_STATE_INUSE = 0x00000080;
|
||||
static const DWORD XACT_STATE_PREPAREFAILED = 0x80000000;
|
||||
|
||||
#define XACT_FLAG_GLOBAL_SETTINGS_MANAGEDATA XACT_FLAG_MANAGEDATA
|
||||
|
||||
#define XACT_RENDERER_ID_LENGTH 0xff
|
||||
#define XACT_RENDERER_NAME_LENGTH 0xff
|
||||
#define XACT_CUE_NAME_LENGTH 0xff
|
||||
|
||||
#define XACT_CONTENT_VERSION 46
|
||||
|
||||
#define XACT_ENGINE_LOOKAHEAD_DEFAULT 250
|
||||
|
||||
static const DWORD XACT_FLAG_API_AUDITION_MODE = 0x00000001;
|
||||
static const DWORD XACT_FLAG_API_DEBUG_MODE = 0x00000002;
|
||||
|
||||
#define XACT_DEBUGENGINE_REGISTRY_KEY L"Software\\Microsoft\\XACT"
|
||||
#define XACT_DEBUGENGINE_REGISTRY_VALUE L"DebugEngine"
|
||||
|
||||
typedef struct XACT_RENDERER_DETAILS
|
||||
{
|
||||
WCHAR rendererID[XACT_RENDERER_ID_LENGTH];
|
||||
WCHAR displayName[XACT_RENDERER_NAME_LENGTH];
|
||||
BOOL defaultDevice;
|
||||
} XACT_RENDERER_DETAILS, *LPXACT_RENDERER_DETAILS;
|
||||
|
||||
typedef BOOL (__stdcall *XACT_READFILE_CALLBACK)(
|
||||
HANDLE hFile,
|
||||
LPVOID lpBuffer,
|
||||
DWORD nNumberOfBytesRead,
|
||||
LPDWORD lpNumberOfBytesRead,
|
||||
LPOVERLAPPED lpOverlapped
|
||||
);
|
||||
typedef BOOL (__stdcall *XACT_GETOVERLAPPEDRESULT_CALLBACK)(
|
||||
HANDLE hFile,
|
||||
LPOVERLAPPED lpOverlapped,
|
||||
LPDWORD lpNumberOfBytesTransferred,
|
||||
BOOL bWait
|
||||
);
|
||||
|
||||
typedef struct XACT_FILEIO_CALLBACKS
|
||||
{
|
||||
XACT_READFILE_CALLBACK readFileCallback;
|
||||
XACT_GETOVERLAPPEDRESULT_CALLBACK getOverlappedResultCallback;
|
||||
} XACT_FILEIO_CALLBACKS, *PXACT_FILEIO_CALLBACKS;
|
||||
typedef const XACT_FILEIO_CALLBACKS *PCXACT_FILEIO_CALLBACKS;
|
||||
|
||||
typedef struct XACT_STREAMING_PARAMETERS
|
||||
{
|
||||
HANDLE file;
|
||||
DWORD offset;
|
||||
DWORD flags;
|
||||
WORD packetSize;
|
||||
} XACT_STREAMING_PARAMETERS, *LPXACT_STREAMING_PARAMETERS, XACT_WAVE_STREAMING_PARAMETERS, *LPXACT_WAVE_STREAMING_PARAMETERS;
|
||||
typedef const XACT_STREAMING_PARAMETERS *LPCXACT_STREAMING_PARAMETERS;
|
||||
typedef const XACT_WAVE_STREAMING_PARAMETERS *LPCXACT_WAVE_STREAMING_PARAMETERS;
|
||||
|
||||
typedef struct XACTCHANNELMAPENTRY
|
||||
{
|
||||
XACTCHANNEL InputChannel;
|
||||
XACTCHANNEL OutputChannel;
|
||||
XACTVOLUME Volume;
|
||||
} XACTCHANNELMAPENTRY, *LPXACTCHANNELMAPENTRY;
|
||||
typedef const XACTCHANNELMAPENTRY *LPCXACTCHANNELMAPENTRY;
|
||||
|
||||
typedef struct XACTCHANNELMAP
|
||||
{
|
||||
XACTCHANNEL EntryCount;
|
||||
XACTCHANNELMAPENTRY* paEntries;
|
||||
} XACTCHANNELMAP, *LPXACTCHANNELMAP;
|
||||
typedef const XACTCHANNELMAP *LPCXACTCHANNELMAP;
|
||||
|
||||
typedef struct XACTCHANNELVOLUMEENTRY
|
||||
{
|
||||
XACTCHANNEL EntryIndex;
|
||||
XACTVOLUME Volume;
|
||||
} XACTCHANNELVOLUMEENTRY, *LPXACTCHANNELVOLUMEENTRY;
|
||||
typedef const XACTCHANNELVOLUMEENTRY *LPCXACTCHANNELVOLUMEENTRY;
|
||||
|
||||
typedef struct XACTCHANNELVOLUME
|
||||
{
|
||||
XACTCHANNEL EntryCount;
|
||||
XACTCHANNELVOLUMEENTRY* paEntries;
|
||||
} XACTCHANNELVOLUME, *LPXACTCHANNELVOLUME;
|
||||
typedef const XACTCHANNELVOLUME *LPCXACTCHANNELVOLUME;
|
||||
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_CUEPREPARED = 1;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_CUEPLAY = 2;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_CUESTOP = 3;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_CUEDESTROYED = 4;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_MARKER = 5;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_SOUNDBANKDESTROYED = 6;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVEBANKDESTROYED = 7;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_LOCALVARIABLECHANGED = 8;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_GLOBALVARIABLECHANGED = 9;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_GUICONNECTED = 10;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_GUIDISCONNECTED = 11;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVEPREPARED = 12;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVEPLAY = 13;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVESTOP = 14;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVELOOPED = 15;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVEDESTROYED = 16;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVEBANKPREPARED = 17;
|
||||
static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVEBANKSTREAMING_INVALIDCONTENT = 18;
|
||||
|
||||
static const BYTE XACT_FLAG_NOTIFICATION_PERSIST = 0x01;
|
||||
|
||||
#include <pshpack1.h>
|
||||
|
||||
typedef struct XACT_NOTIFICATION_DESCRIPTION
|
||||
{
|
||||
XACTNOTIFICATIONTYPE type;
|
||||
BYTE flags;
|
||||
IXACT3SoundBank *pSoundBank;
|
||||
IXACT3WaveBank *pWaveBank;
|
||||
IXACT3Cue *pCue;
|
||||
IXACT3Wave *pWave;
|
||||
XACTINDEX cueIndex;
|
||||
XACTINDEX waveIndex;
|
||||
void* pvContext;
|
||||
} XACT_NOTIFICATION_DESCRIPTION, *LPXACT_NOTIFICATION_DESCRIPTION;
|
||||
typedef const XACT_NOTIFICATION_DESCRIPTION *LPCXACT_NOTIFICATION_DESCRIPTION;
|
||||
|
||||
typedef struct XACT_NOTIFICATION_CUE
|
||||
{
|
||||
XACTINDEX cueIndex;
|
||||
IXACT3SoundBank *pSoundBank;
|
||||
IXACT3Cue *pCue;
|
||||
} XACT_NOTIFICATION_CUE, *LPXACT_NOTIFICATION_CUE;
|
||||
typedef const XACT_NOTIFICATION_CUE *LPCXACT_NOTIFICATION_CUE;
|
||||
|
||||
typedef struct XACT_NOTIFICATION_MARKER
|
||||
{
|
||||
XACTINDEX cueIndex;
|
||||
IXACT3SoundBank *pSoundBank;
|
||||
IXACT3Cue *pCue;
|
||||
DWORD marker;
|
||||
} XACT_NOTIFICATION_MARKER, *LPXACT_NOTIFICATION_MARKER;
|
||||
typedef const XACT_NOTIFICATION_MARKER *LPCXACT_NOTIFICATION_MARKER;
|
||||
|
||||
typedef struct XACT_NOTIFICATION_SOUNDBANK
|
||||
{
|
||||
IXACT3SoundBank *pSoundBank;
|
||||
} XACT_NOTIFICATION_SOUNDBANK, *LPXACT_NOTIFICATION_SOUNDBANK;
|
||||
typedef const XACT_NOTIFICATION_SOUNDBANK *LPCXACT_NOTIFICATION_SOUNDBANK;
|
||||
|
||||
typedef struct XACT_NOTIFICATION_WAVEBANK
|
||||
{
|
||||
IXACT3WaveBank *pWaveBank;
|
||||
} XACT_NOTIFICATION_WAVEBANK, *LPXACT_NOTIFICATION_WAVEBANK;
|
||||
typedef const XACT_NOTIFICATION_WAVEBANK *LPCXACT_NOTIFICATION_WAVEBANK;
|
||||
|
||||
typedef struct XACT_NOTIFICATION_VARIABLE
|
||||
{
|
||||
XACTINDEX cueIndex;
|
||||
IXACT3SoundBank *pSoundBank;
|
||||
IXACT3Cue *pCue;
|
||||
XACTVARIABLEINDEX variableIndex;
|
||||
XACTVARIABLEVALUE variableValue;
|
||||
BOOL local;
|
||||
} XACT_NOTIFICATION_VARIABLE, *LPXACT_NOTIFICATION_VARIABLE;
|
||||
typedef const XACT_NOTIFICATION_VARIABLE *LPCXACT_NOTIFICATION_VARIABLE;
|
||||
|
||||
typedef struct XACT_NOTIFICATION_GUI
|
||||
{
|
||||
DWORD reserved;
|
||||
} XACT_NOTIFICATION_GUI, *LPXACT_NOTIFICATION_GUI;
|
||||
typedef const XACT_NOTIFICATION_GUI *LPCXACT_NOTIFICATION_GUI;
|
||||
|
||||
typedef struct XACT_NOTIFICATION_WAVE
|
||||
{
|
||||
IXACT3WaveBank *pWaveBank;
|
||||
XACTINDEX waveIndex;
|
||||
XACTINDEX cueIndex;
|
||||
IXACT3SoundBank *pSoundBank;
|
||||
IXACT3Cue *pCue;
|
||||
IXACT3Wave *pWave;
|
||||
} XACT_NOTIFICATION_WAVE, *LPXACT_NOTIFICATION_WAVE;
|
||||
typedef const XACT_NOTIFICATION_WAVE *LPCXACT_NOTIFICATION_NAME;
|
||||
|
||||
typedef struct XACT_NOTIFICATION
|
||||
{
|
||||
XACTNOTIFICATIONTYPE type;
|
||||
LONG timeStamp;
|
||||
PVOID pvContext;
|
||||
union
|
||||
{
|
||||
XACT_NOTIFICATION_CUE cue;
|
||||
XACT_NOTIFICATION_MARKER marker;
|
||||
XACT_NOTIFICATION_SOUNDBANK soundBank;
|
||||
XACT_NOTIFICATION_WAVEBANK waveBank;
|
||||
XACT_NOTIFICATION_VARIABLE variable;
|
||||
XACT_NOTIFICATION_GUI gui;
|
||||
XACT_NOTIFICATION_WAVE wave;
|
||||
} DUMMYUNIONNAME;
|
||||
} XACT_NOTIFICATION, *LPXACT_NOTIFICATION;
|
||||
typedef const XACT_NOTIFICATION *LPCXACT_NOTIFICATION;
|
||||
|
||||
typedef void (__stdcall *XACT_NOTIFICATION_CALLBACK)(
|
||||
const XACT_NOTIFICATION *pNotification
|
||||
);
|
||||
|
||||
typedef struct XACT_RUNTIME_PARAMETERS
|
||||
{
|
||||
DWORD lookAheadTime;
|
||||
void* pGlobalSettingsBuffer;
|
||||
DWORD globalSettingsBufferSize;
|
||||
DWORD globalSettingsFlags;
|
||||
DWORD globalSettingsAllocAttributes;
|
||||
XACT_FILEIO_CALLBACKS fileIOCallbacks;
|
||||
XACT_NOTIFICATION_CALLBACK fnNotificationCallback;
|
||||
LPCWSTR pRendererID;
|
||||
IXAudio2 *pXAudio2;
|
||||
IXAudio2MasteringVoice *pMasteringVoice;
|
||||
} XACT_RUNTIME_PARAMETERS, *LPXACT_RUNTIME_PARAMETERS;
|
||||
typedef const XACT_RUNTIME_PARAMETERS *LPCXACT_RUNTIME_PARAMETERS;
|
||||
|
||||
#include <poppack.h>
|
||||
|
||||
#define XACT_FLAG_ENGINE_CREATE_MANAGEDATA XACT_FLAG_MANAGEDATA
|
||||
#define XACT_FLAG_ENGINE_STOP_IMMEDIATE XACT_FLAG_STOP_IMMEDIATE
|
||||
|
||||
/*****************************************************************************
|
||||
* IXACT3Engine interface
|
||||
*/
|
||||
#define INTERFACE IXACT3Engine
|
||||
DECLARE_INTERFACE_(IXACT3Engine,IUnknown)
|
||||
{
|
||||
/*** IUnknown methods ***/
|
||||
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
|
||||
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
||||
/*** IXACT3Engine methods ***/
|
||||
STDMETHOD(GetRendererCount)(THIS_ XACTINDEX *pnRendererCount) PURE;
|
||||
STDMETHOD(GetRendererDetails)(THIS_ XACTINDEX nRendererIndex, LPXACT_RENDERER_DETAILS pRendererDetails) PURE;
|
||||
STDMETHOD(GetFinalMixFormat)(THIS_ WAVEFORMATEXTENSIBLE *pFinalMixFormat) PURE;
|
||||
STDMETHOD(Initialize)(THIS_ const XACT_RUNTIME_PARAMETERS *pParams) PURE;
|
||||
STDMETHOD(Shutdown)(THIS) PURE;
|
||||
STDMETHOD(DoWork)(THIS) PURE;
|
||||
STDMETHOD(CreateSoundBank)(THIS_ const void *pvBuffer, DWORD dwSize, DWORD dwFlags, DWORD dwAllocAttributes, IXACT3SoundBank **ppSoundBank) PURE;
|
||||
STDMETHOD(CreateInMemoryWaveBank)(THIS_ const void *pvBuffer, DWORD dwSize, DWORD dwFlags, DWORD dwAllocAttributes, IXACT3WaveBank **ppWaveBank) PURE;
|
||||
STDMETHOD(CreateStreamingWaveBank)(THIS_ const XACT_WAVE_STREAMING_PARAMETERS *pParams, IXACT3WaveBank **ppWaveBank) PURE;
|
||||
STDMETHOD(PrepareWave)(THIS_ DWORD dwFlags, PCSTR szWavePath, WORD wStreamingPacketSize, DWORD dwAlignment,
|
||||
DWORD dwPlayOffset, XACTLOOPCOUNT nLoopCount, IXACT3Wave **ppWave) PURE;
|
||||
STDMETHOD(PrepareInMemoryWave)(THIS_ DWORD dwFlags, WAVEBANKENTRY entry, DWORD *pdwSeekTable, BYTE *pbWaveData,
|
||||
DWORD dwPlayOffset, XACTLOOPCOUNT nLoopCount, IXACT3Wave **ppWave) PURE;
|
||||
STDMETHOD(PrepareStreamingWave)(THIS_ DWORD dwFlags, WAVEBANKENTRY entry, XACT_STREAMING_PARAMETERS streamingParams, DWORD dwAlignment, DWORD *pdwSeekTable,
|
||||
DWORD dwPlayOffset, XACTLOOPCOUNT nLoopCount, IXACT3Wave **ppWave) PURE;
|
||||
STDMETHOD(RegisterNotification)(THIS_ const XACT_NOTIFICATION_DESCRIPTION *pNotificationDesc) PURE;
|
||||
STDMETHOD(UnRegisterNotification)(THIS_ const XACT_NOTIFICATION_DESCRIPTION *pNotificationDesc) PURE;
|
||||
STDMETHOD_(XACTCATEGORY,GetCategory)(THIS_ PCSTR szFriendlyName) PURE;
|
||||
STDMETHOD(Stop)(THIS_ XACTCATEGORY nCategory, DWORD dwFlags) PURE;
|
||||
STDMETHOD(SetVolume)(THIS_ XACTCATEGORY nCategory, XACTVOLUME nVolume) PURE;
|
||||
STDMETHOD(Pause)(THIS_ XACTCATEGORY nCategory, BOOL fPause) PURE;
|
||||
STDMETHOD_(XACTVARIABLEINDEX,GetGlobalVariableIndex)(THIS_ PCSTR szFriendlyName) PURE;
|
||||
STDMETHOD(SetGlobalVariable)(THIS_ XACTVARIABLEINDEX nIndex, XACTVARIABLEVALUE nValue) PURE;
|
||||
STDMETHOD(GetGlobalVariable)(THIS_ XACTVARIABLEINDEX nIndex, XACTVARIABLEVALUE *nValue) PURE;
|
||||
};
|
||||
#undef INTERFACE
|
||||
|
||||
#if !defined(__cplusplus) || defined(CINTERFACE)
|
||||
/*** IUnknown methods ***/
|
||||
#define IXACT3Engine_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
|
||||
#define IXACT3Engine_AddRef(p) (p)->lpVtbl->AddRef(p)
|
||||
#define IXACT3Engine_Release(p) (p)->lpVtbl->Release(p)
|
||||
/*** IXACT3Engine methods ***/
|
||||
#define IXACT3Engine_GetRendererCount(p,a) (p)->lpVtbl->GetRendererCount(p,a)
|
||||
#define IXACT3Engine_GetRendererDetails(p,a,b) (p)->lpVtbl->GetRendererDetails(p,a,b)
|
||||
#define IXACT3Engine_GetFinalMixFormat(p,a) (p)->lpVtbl->GetFinalMixFormat(p,a)
|
||||
#define IXACT3Engine_Initialize(p,a) (p)->lpVtbl->Initialze(p,a)
|
||||
#define IXACT3Engine_Shutdown(p) (p)->lpVtbl->Shutdown(p)
|
||||
#define IXACT3Engine_DoWork(p) (p)->lpVtbl->DoWork(p)
|
||||
#define IXACT3Engine_CreateSoundBank(p,a,b,c,d,e) (p)->lpVtbl->CreateSoundBank(p,a,b,c,d,e)
|
||||
#define IXACT3Engine_CreateInMemoryWaveBank(p,a,b,c,d,e) (p)->lpVtbl->CreateInMemoryWaveBank(p,a,b,c,d,e)
|
||||
#define IXACT3Engine_CreateStreamingWaveBank(p,a,b) (p)->lpVtbl->CreateStreamingWaveBank(p,a,b)
|
||||
#define IXACT3Engine_PrepareWave(p,a,b,c,d,e,f,g) (p)->lpVtbl->PrepareWave(p,a,b,c,d,e,f,g)
|
||||
#define IXACT3Engine_PrepareInMemoryWave(p,a,b,c,d,e,f,g) (p)->lpVtbl->PrepareInMemoryWave(p,a,b,c,d,e,f,g)
|
||||
#define IXACT3Engine_PrepareStreamingWave(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->PrepareStreamingWave(p,a,b,c,d,e,f,g,h)
|
||||
#define IXACT3Engine_RegisterNotification(p,a) (p)->lpVtbl->RegisterNotification(p,a)
|
||||
#define IXACT3Engine_UnRegisterNotification(p,a) (p)->lpVtbl->UnRegisterNotification(p,a)
|
||||
#define IXACT3Engine_GetCategory(p,a) (p)->lpVtbl->GetCategory(p,a)
|
||||
#define IXACT3Engine_Stop(p,a,b) (p)->lpVtbl->Stop(a,b)
|
||||
#define IXACT3Engine_SetVolume(p,a,b) (p)->lpVtbl->SetVolume(p,a,b)
|
||||
#define IXACT3Engine_Pause(p,a,b) (p)->lpVtbl->Pause(a,b)
|
||||
#define IXACT3Engine_GetGlobalVariableIndex(p,a) (p)->lpVtbl->GetGlobalVariableIndex(p,a)
|
||||
#define IXACT3Engine_SetGlobalVariable(p,a,b) (p)->lpVtbl->SetGlobalVariable(p,a,b)
|
||||
#define IXACT3Engine_GetGlobalVariable(p,a,b) (p)->lpVtbl->GetGlobalVariable(p,a,b)
|
||||
#else
|
||||
/*** IUnknown methods ***/
|
||||
#define IXACT3Engine_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
|
||||
#define IXACT3Engine_AddRef(p) (p)->AddRef()
|
||||
#define IXACT3Engine_Release(p) (p)->Release()
|
||||
/*** IXACT3Engine methods ***/
|
||||
#define IXACT3Engine_GetRendererCount(p,a) (p)->GetRendererCount(a)
|
||||
#define IXACT3Engine_GetRendererDetails(p,a,b) (p)->GetRendererDetails(a,b)
|
||||
#define IXACT3Engine_GetFinalMixFormat(p,a) (p)->GetFinalMixFormat(a)
|
||||
#define IXACT3Engine_Initialize(p,a) (p)->Initialize(a)
|
||||
#define IXACT3Engine_Shutdown(p) (p)->Shutdown()
|
||||
#define IXACT3Engine_DoWork(p) (p)->DoWork()
|
||||
#define IXACT3Engine_CreateSoundBank(p,a,b,c,d,e) (p)->CreateSoundBank(a,b,c,d,e)
|
||||
#define IXACT3Engine_CreateInMemoryWaveBank(p,a,b,c,d,e) (p)->CreateInMemoryWaveBank(a,b,c,d,e)
|
||||
#define IXACT3Engine_CreateStreamingWaveBank(p,a,b) (p)->CreateStreamingWaveBank(a,b)
|
||||
#define IXACT3Engine_PrepareWave(p,a,b,c,d,e,f,g) (p)->PrepareWave(a,b,c,d,e,f,g)
|
||||
#define IXACT3Engine_PrepareInMemoryWave(p,a,b,c,d,e,f,g) (p)->PrepareInMemoryWave(a,b,c,d,e,f,g)
|
||||
#define IXACT3Engine_PrepareStreamingWave(p,a,b,c,d,e,f,g,h) (p)->PrepareStreamingWave(a,b,c,d,e,f,g,h)
|
||||
#define IXACT3Engine_RegisterNotification(p,a) (p)->RegisterNotification(a)
|
||||
#define IXACT3Engine_UnRegisterNotification(p,a) (p)->UnRegisterNotification(a)
|
||||
#define IXACT3Engine_GetCategory(p,a) (p)->GetCategory(a)
|
||||
#define IXACT3Engine_Stop(p,a,b) (p)->Stop(a,b)
|
||||
#define IXACT3Engine_SetVolume(p,a,b) (p)->SetVolume(p,a,b)
|
||||
#define IXACT3Engine_Pause(p,a,b) (p)->Pause(a,b)
|
||||
#define IXACT3Engine_GetGlobalVariableIndex(p,a) (p)->GetGlobalVariableIndex(a)
|
||||
#define IXACT3Engine_SetGlobalVariable(p,a,b) (p)->SetGlobalVariable(a,b)
|
||||
#define IXACT3Engine_GetGlobalVariable(p,a,b) (p)->GetGlobalVariable(a,b)
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __WINE_XACT3_H */
|
Loading…
Reference in New Issue