Show More
Commit Description:
Various UI improvements.
Commit Description:
Various UI improvements.
References:
File last commit:
Show/Diff file:
Action:
FNA/lib/FAudio/cpp/xact3.h
334 lines | 8.6 KiB | text/x-c | CLexer
334 lines | 8.6 KiB | text/x-c | CLexer
r0 | #ifndef FACT_CPP_XACT3_H | |||
#define FACT_CPP_XACT3_H | ||||
#include "xaudio2.h" | ||||
#include <FACT.h> | ||||
#ifdef __cplusplus | ||||
extern "C" { | ||||
#endif /* __cplusplus */ | ||||
#ifndef XACT3_VERSION | ||||
#define XACT3_VERSION 7 | ||||
#endif | ||||
typedef FACTRendererDetails XACT_RENDERER_DETAILS; | ||||
typedef FACTFileIOCallbacks XACT_FILEIO_CALLBACKS; | ||||
typedef FACTRuntimeParameters XACT_RUNTIME_PARAMETERS; | ||||
typedef FACTStreamingParameters XACT_STREAMING_PARAMETERS; | ||||
typedef FACTWaveBankRegion WAVEBANKREGION; | ||||
typedef FACTWaveBankSampleRegion WAVEBANKSAMPLEREGION; | ||||
typedef FACTWaveBankHeader WAVEBANKHEADER; | ||||
typedef FACTWaveBankMiniWaveFormat WAVEBANKMINIWAVEFORMAT; | ||||
typedef FACTWaveBankEntry WAVEBANKENTRY; | ||||
typedef FACTWaveBankEntryCompact WAVEBANKENTRYCOMPACT; | ||||
typedef FACTWaveBankData WAVEBANKDATA; | ||||
typedef FACTWaveProperties XACT_WAVE_PROPERTIES; | ||||
typedef FACTWaveInstanceProperties XACT_WAVE_INSTANCE_PROPERTIES; | ||||
typedef FACTCueProperties XACT_CUE_PROPERTIES; | ||||
typedef FACTTrackProperties XACT_TRACK_PROPERTIES; | ||||
typedef FACTVariationProperties XACT_VARIATION_PROPERTIES; | ||||
typedef FACTSoundProperties XACT_SOUND_PROPERTIES; | ||||
typedef FACTSoundVariationProperties XACT_SOUND_VARIATION_PROPERTIES; | ||||
typedef FACTCueInstanceProperties XACT_CUE_INSTANCE_PROPERTIES; | ||||
typedef FACTReadFileCallback XACT_READFILE_CALLBACK; | ||||
typedef FACTGetOverlappedResultCallback XACT_GETOVERLAPPEDRESULT_CALLBACK; | ||||
typedef FACTWaveBankSegIdx WAVEBANKSEGIDX; | ||||
class IXACT3Engine; | ||||
class IXACT3SoundBank; | ||||
class IXACT3WaveBank; | ||||
class IXACT3Wave; | ||||
class IXACT3Cue; | ||||
#pragma pack(push, 1) | ||||
typedef struct XACT_NOTIFICATION_DESCRIPTION | ||||
{ | ||||
uint8_t type; | ||||
uint8_t flags; | ||||
IXACT3SoundBank *pSoundBank; | ||||
IXACT3WaveBank *pWaveBank; | ||||
IXACT3Cue *pCue; | ||||
IXACT3Wave *pWave; | ||||
uint16_t cueIndex; | ||||
uint16_t waveIndex; | ||||
void* pvContext; | ||||
} XACT_NOTIFICATION_DESCRIPTION; | ||||
typedef struct XACT_NOTIFICATION_CUE | ||||
{ | ||||
uint16_t cueIndex; | ||||
IXACT3SoundBank *pSoundBank; | ||||
IXACT3Cue *pCue; | ||||
} XACT_NOTIFICATION_CUE; | ||||
typedef struct XACT_NOTIFICATION_MARKER | ||||
{ | ||||
uint16_t cueIndex; | ||||
IXACT3SoundBank *pSoundBank; | ||||
IXACT3Cue *pCue; | ||||
uint32_t marker; | ||||
} XACT_NOTIFICATION_MARKER; | ||||
typedef struct XACT_NOTIFICATION_SOUNDBANK | ||||
{ | ||||
IXACT3SoundBank *pSoundBank; | ||||
} XACT_NOTIFICATION_SOUNDBANK; | ||||
typedef struct XACT_NOTIFICATION_WAVEBANK | ||||
{ | ||||
IXACT3WaveBank *pWaveBank; | ||||
} XACT_NOTIFICATION_WAVEBANK; | ||||
typedef struct XACT_NOTIFICATION_VARIABLE | ||||
{ | ||||
uint16_t cueIndex; | ||||
IXACT3SoundBank *pSoundBank; | ||||
IXACT3Cue *pCue; | ||||
uint16_t variableIndex; | ||||
float variableValue; | ||||
uint8_t local; | ||||
} XACT_NOTIFICATION_VARIABLE; | ||||
typedef struct XACT_NOTIFICATION_GUI | ||||
{ | ||||
uint32_t reserved; | ||||
} XACT_NOTIFICATION_GUI; | ||||
typedef struct XACT_NOTIFICATION_WAVE | ||||
{ | ||||
IXACT3WaveBank *pWaveBank; | ||||
uint16_t waveIndex; | ||||
uint16_t cueIndex; | ||||
IXACT3SoundBank *pSoundBank; | ||||
IXACT3Cue *pCue; | ||||
IXACT3Wave *pWave; | ||||
} XACT_NOTIFICATION_WAVE; | ||||
typedef struct XACT_NOTIFICATION | ||||
{ | ||||
uint8_t type; | ||||
int32_t timeStamp; | ||||
void *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; | ||||
}; | ||||
} XACT_NOTIFICATION; | ||||
#pragma pack(pop) | ||||
class IXACT3Engine : public IUnknown | ||||
{ | ||||
public: | ||||
COM_METHOD(HRESULT) GetRendererCount( | ||||
uint16_t *pnRendererCount | ||||
) = 0; | ||||
COM_METHOD(HRESULT) GetRendererDetails( | ||||
uint16_t nRendererIndex, | ||||
XACT_RENDERER_DETAILS *pRendererDetails | ||||
) = 0; | ||||
COM_METHOD(HRESULT) GetFinalMixFormat( | ||||
WAVEFORMATEXTENSIBLE *pFinalMixFormat | ||||
) = 0; | ||||
COM_METHOD(HRESULT) Initialize( | ||||
const XACT_RUNTIME_PARAMETERS *pParams | ||||
) = 0; | ||||
COM_METHOD(HRESULT) ShutDown() = 0; | ||||
COM_METHOD(HRESULT) DoWork() = 0; | ||||
COM_METHOD(HRESULT) CreateSoundBank( | ||||
const void *pvBuffer, | ||||
uint32_t dwSize, | ||||
uint32_t dwFlags, | ||||
uint32_t dwAllocAttributes, | ||||
IXACT3SoundBank **ppSoundBank | ||||
) = 0; | ||||
COM_METHOD(HRESULT) CreateInMemoryWaveBank( | ||||
const void *pvBuffer, | ||||
uint32_t dwSize, | ||||
uint32_t dwFlags, | ||||
uint32_t dwAllocAttributes, | ||||
IXACT3WaveBank **ppWaveBank | ||||
) = 0; | ||||
COM_METHOD(HRESULT) CreateStreamingWaveBank( | ||||
const XACT_STREAMING_PARAMETERS *pParms, | ||||
IXACT3WaveBank **ppWaveBank | ||||
) = 0; | ||||
COM_METHOD(HRESULT) PrepareWave( | ||||
uint32_t dwFlags, | ||||
const char *szWavePath, | ||||
uint32_t wStreamingPacketSize, | ||||
uint32_t dwAlignment, | ||||
uint32_t dwPlayOffset, | ||||
uint8_t nLoopCount, | ||||
IXACT3Wave **ppWave | ||||
) = 0; | ||||
COM_METHOD(HRESULT) PrepareInMemoryWave( | ||||
uint32_t dwFlags, | ||||
WAVEBANKENTRY entry, | ||||
uint32_t *pdwSeekTable, /* Optional! */ | ||||
uint8_t *pbWaveData, | ||||
uint32_t dwPlayOffset, | ||||
uint8_t nLoopCount, | ||||
IXACT3Wave **ppWave | ||||
) = 0; | ||||
COM_METHOD(HRESULT) PrepareStreamingWave( | ||||
uint32_t dwFlags, | ||||
WAVEBANKENTRY entry, | ||||
XACT_STREAMING_PARAMETERS streamingParams, | ||||
uint32_t dwAlignment, | ||||
uint32_t *pdwSeekTable, /* Optional! */ | ||||
uint8_t *pbWaveData, | ||||
uint32_t dwPlayOffset, | ||||
uint8_t nLoopCount, | ||||
IXACT3Wave **ppWave | ||||
) = 0; | ||||
COM_METHOD(HRESULT) RegisterNotification( | ||||
const XACT_NOTIFICATION_DESCRIPTION *pNotificationDescription | ||||
) = 0; | ||||
COM_METHOD(HRESULT) UnRegisterNotification( | ||||
const XACT_NOTIFICATION_DESCRIPTION *pNotificationDescription | ||||
) = 0; | ||||
COM_METHOD(uint16_t) GetCategory(const char *szFriendlyName) = 0; | ||||
COM_METHOD(HRESULT) Stop(uint16_t nCategory, uint32_t dwFlags) = 0; | ||||
COM_METHOD(HRESULT) SetVolume(uint16_t nCategory, float volume) = 0; | ||||
COM_METHOD(HRESULT) Pause(uint16_t nCategory, int32_t fPause) = 0; | ||||
COM_METHOD(uint16_t) GetGlobalVariableIndex( | ||||
const char *szFriendlyName | ||||
) = 0; | ||||
COM_METHOD(HRESULT) SetGlobalVariable( | ||||
uint16_t nIndex, | ||||
float nValue | ||||
) = 0; | ||||
COM_METHOD(HRESULT) GetGlobalVariable( | ||||
uint16_t nIndex, | ||||
float *pnValue | ||||
) = 0; | ||||
}; | ||||
class IXACT3SoundBank | ||||
{ | ||||
public: | ||||
COM_METHOD(uint16_t) GetCueIndex(const char *szFriendlyName) = 0; | ||||
COM_METHOD(HRESULT) GetNumCues(uint16_t *pnNumCues) = 0; | ||||
COM_METHOD(HRESULT) GetCueProperties( | ||||
uint16_t nCueIndex, | ||||
XACT_CUE_PROPERTIES *pProperties | ||||
) = 0; | ||||
COM_METHOD(HRESULT) Prepare( | ||||
uint16_t nCueIndex, | ||||
uint32_t dwFlags, | ||||
int32_t timeOffset, | ||||
IXACT3Cue** ppCue | ||||
) = 0; | ||||
COM_METHOD(HRESULT) Play( | ||||
uint16_t nCueIndex, | ||||
uint32_t dwFlags, | ||||
int32_t timeOffset, | ||||
IXACT3Cue** ppCue /* Optional! */ | ||||
) = 0; | ||||
COM_METHOD(HRESULT) Stop(uint16_t nCueIndex, uint32_t dwFlags) = 0; | ||||
COM_METHOD(HRESULT) Destroy() = 0; | ||||
COM_METHOD(HRESULT) GetState(uint32_t *pdwState) = 0; | ||||
}; | ||||
class IXACT3WaveBank | ||||
{ | ||||
public: | ||||
COM_METHOD(HRESULT) Destroy() = 0; | ||||
COM_METHOD(HRESULT) GetNumWaves(uint16_t *pnNumWaves) = 0; | ||||
COM_METHOD(uint16_t) GetWaveIndex(const char *szFriendlyName) = 0; | ||||
COM_METHOD(HRESULT) GetWaveProperties( | ||||
uint16_t nWaveIndex, | ||||
XACT_WAVE_PROPERTIES *pWaveProperties | ||||
) = 0; | ||||
COM_METHOD(HRESULT) Prepare( | ||||
uint16_t nWaveIndex, | ||||
uint32_t dwFlags, | ||||
uint32_t dwPlayOffset, | ||||
uint8_t nLoopCount, | ||||
IXACT3Wave **ppWave | ||||
) = 0; | ||||
COM_METHOD(HRESULT) Play( | ||||
uint16_t nWaveIndex, | ||||
uint32_t dwFlags, | ||||
uint32_t dwPlayOffset, | ||||
uint8_t nLoopCount, | ||||
IXACT3Wave **ppWave | ||||
) = 0; | ||||
COM_METHOD(HRESULT) Stop( | ||||
uint16_t nWaveIndex, | ||||
uint32_t dwFlags | ||||
) = 0; | ||||
COM_METHOD(HRESULT) GetState(uint32_t *pdwState) = 0; | ||||
}; | ||||
class IXACT3Wave | ||||
{ | ||||
public: | ||||
COM_METHOD(HRESULT) Destroy() = 0; | ||||
COM_METHOD(HRESULT) Play() = 0; | ||||
COM_METHOD(HRESULT) Stop(uint32_t dwFlags) = 0; | ||||
COM_METHOD(HRESULT) Pause(int32_t fPause) = 0; | ||||
COM_METHOD(HRESULT) GetState(uint32_t *pdwState) = 0; | ||||
COM_METHOD(HRESULT) SetPitch(int16_t pitch) = 0; | ||||
COM_METHOD(HRESULT) SetVolume(float volume) = 0; | ||||
COM_METHOD(HRESULT) SetMatrixCoefficients( | ||||
uint32_t uSrcChannelCount, | ||||
uint32_t uDstChannelCount, | ||||
float *pMatrixCoefficients | ||||
) = 0; | ||||
COM_METHOD(HRESULT) GetProperties( | ||||
XACT_WAVE_INSTANCE_PROPERTIES *pProperties | ||||
) = 0; | ||||
}; | ||||
class IXACT3Cue | ||||
{ | ||||
public: | ||||
COM_METHOD(HRESULT) Play() = 0; | ||||
COM_METHOD(HRESULT) Stop(uint32_t dwFlags) = 0; | ||||
COM_METHOD(HRESULT) GetState(uint32_t *pdwState) = 0; | ||||
COM_METHOD(HRESULT) Destroy() = 0; | ||||
COM_METHOD(HRESULT) SetMatrixCoefficients( | ||||
uint32_t uSrcChannelCount, | ||||
uint32_t uDstChannelCount, | ||||
float *pMatrixCoefficients | ||||
) = 0; | ||||
COM_METHOD(uint16_t) GetVariableIndex(const char *szFriendlyName) = 0; | ||||
COM_METHOD(HRESULT) SetVariable(uint16_t nIndex, float nValue) = 0; | ||||
COM_METHOD(HRESULT) GetVariable(uint16_t nIndex, float *nValue) = 0; | ||||
COM_METHOD(HRESULT) Pause(int32_t fPause) = 0; | ||||
COM_METHOD(HRESULT) GetProperties( | ||||
XACT_CUE_INSTANCE_PROPERTIES **ppProperties | ||||
) = 0; | ||||
#if XACT3_VERSION >= 5 | ||||
COM_METHOD(HRESULT) SetOutputVoices( | ||||
const XAUDIO2_VOICE_SENDS *pSendList /* Optional! */ | ||||
) = 0; | ||||
COM_METHOD(HRESULT) SetOutputVoiceMatrix( | ||||
const IXAudio2Voice *pDestinationVoice, /* Optional! */ | ||||
uint32_t SourceChannels, | ||||
uint32_t DestinationChannels, | ||||
const float *pLevelMatrix /* SourceChannels * DestinationChannels */ | ||||
) = 0; | ||||
#endif /* XACT_VERSION >= 5 */ | ||||
}; | ||||
#ifdef __cplusplus | ||||
} | ||||
#endif /* __cplusplus */ | ||||
#endif // FACT_CPP_XACT3_H | ||||