Show More
Commit Description:
Various UI improvements.
Commit Description:
Various UI improvements.
References:
File last commit:
Show/Diff file:
Action:
FNA/lib/FAudio/include/FACT.h
813 lines | 19.0 KiB | text/x-c | CLexer
813 lines | 19.0 KiB | text/x-c | CLexer
r0 | /* FAudio - XAudio Reimplementation for FNA | |||
* | ||||
* Copyright (c) 2011-2020 Ethan Lee, Luigi Auriemma, and the MonoGame Team | ||||
* | ||||
* This software is provided 'as-is', without any express or implied warranty. | ||||
* In no event will the authors be held liable for any damages arising from | ||||
* the use of this software. | ||||
* | ||||
* Permission is granted to anyone to use this software for any purpose, | ||||
* including commercial applications, and to alter it and redistribute it | ||||
* freely, subject to the following restrictions: | ||||
* | ||||
* 1. The origin of this software must not be misrepresented; you must not | ||||
* claim that you wrote the original software. If you use this software in a | ||||
* product, an acknowledgment in the product documentation would be | ||||
* appreciated but is not required. | ||||
* | ||||
* 2. Altered source versions must be plainly marked as such, and must not be | ||||
* misrepresented as being the original software. | ||||
* | ||||
* 3. This notice may not be removed or altered from any source distribution. | ||||
* | ||||
* Ethan "flibitijibibo" Lee <flibitijibibo@flibitijibibo.com> | ||||
* | ||||
*/ | ||||
/* This file has no documentation since you are expected to already know how | ||||
* XACT works if you are still using these APIs! | ||||
*/ | ||||
#ifndef FACT_H | ||||
#define FACT_H | ||||
#include "FAudio.h" | ||||
#define FACTAPI FAUDIOAPI | ||||
#ifdef _WIN32 | ||||
#define FACTCALL __stdcall | ||||
#else | ||||
#define FACTCALL | ||||
#endif | ||||
#ifdef __cplusplus | ||||
extern "C" { | ||||
#endif /* __cplusplus */ | ||||
/* Type Declarations */ | ||||
typedef struct FACTAudioEngine FACTAudioEngine; | ||||
typedef struct FACTSoundBank FACTSoundBank; | ||||
typedef struct FACTWaveBank FACTWaveBank; | ||||
typedef struct FACTWave FACTWave; | ||||
typedef struct FACTCue FACTCue; | ||||
typedef struct FACTNotification FACTNotification; | ||||
typedef struct FACTRendererDetails | ||||
{ | ||||
int16_t rendererID[0xFF]; /* Win32 wchar_t */ | ||||
int16_t displayName[0xFF]; /* Win32 wchar_t */ | ||||
int32_t defaultDevice; | ||||
} FACTRendererDetails; | ||||
typedef struct FACTOverlapped | ||||
{ | ||||
void *Internal; /* ULONG_PTR */ | ||||
void *InternalHigh; /* ULONG_PTR */ | ||||
FAUDIONAMELESS union | ||||
{ | ||||
FAUDIONAMELESS struct | ||||
{ | ||||
uint32_t Offset; | ||||
uint32_t OffsetHigh; | ||||
}; | ||||
void *Pointer; | ||||
}; | ||||
void *hEvent; | ||||
} FACTOverlapped; | ||||
typedef int32_t (FACTCALL * FACTReadFileCallback)( | ||||
void *hFile, | ||||
void *buffer, | ||||
uint32_t nNumberOfBytesToRead, | ||||
uint32_t *lpNumberOfBytesRead, | ||||
FACTOverlapped *lpOverlapped | ||||
); | ||||
typedef int32_t (FACTCALL * FACTGetOverlappedResultCallback)( | ||||
void *hFile, | ||||
FACTOverlapped *lpOverlapped, | ||||
uint32_t *lpNumberOfBytesTransferred, | ||||
int32_t bWait | ||||
); | ||||
typedef struct FACTFileIOCallbacks | ||||
{ | ||||
FACTReadFileCallback readFileCallback; | ||||
FACTGetOverlappedResultCallback getOverlappedResultCallback; | ||||
} FACTFileIOCallbacks; | ||||
typedef void (FACTCALL * FACTNotificationCallback)( | ||||
const FACTNotification *pNotification | ||||
); | ||||
typedef struct FACTRuntimeParameters | ||||
{ | ||||
uint32_t lookAheadTime; | ||||
void *pGlobalSettingsBuffer; | ||||
uint32_t globalSettingsBufferSize; | ||||
uint32_t globalSettingsFlags; | ||||
uint32_t globalSettingsAllocAttributes; | ||||
FACTFileIOCallbacks fileIOCallbacks; | ||||
FACTNotificationCallback fnNotificationCallback; | ||||
int16_t *pRendererID; /* Win32 wchar_t* */ | ||||
FAudio *pXAudio2; | ||||
FAudioMasteringVoice *pMasteringVoice; | ||||
} FACTRuntimeParameters; | ||||
typedef struct FACTStreamingParameters | ||||
{ | ||||
void *file; | ||||
uint32_t offset; | ||||
uint32_t flags; | ||||
uint16_t packetSize; /* Measured in DVD sectors, or 2048 bytes */ | ||||
} FACTStreamingParameters; | ||||
#define FACT_WAVEBANK_TYPE_BUFFER 0x00000000 | ||||
#define FACT_WAVEBANK_TYPE_STREAMING 0x00000001 | ||||
#define FACT_WAVEBANK_TYPE_MASK 0x00000001 | ||||
#define FACT_WAVEBANK_FLAGS_ENTRYNAMES 0x00010000 | ||||
#define FACT_WAVEBANK_FLAGS_COMPACT 0x00020000 | ||||
#define FACT_WAVEBANK_FLAGS_SYNC_DISABLED 0x00040000 | ||||
#define FACT_WAVEBANK_FLAGS_SEEKTABLES 0x00080000 | ||||
#define FACT_WAVEBANK_FLAGS_MASK 0x000F0000 | ||||
typedef enum FACTWaveBankSegIdx | ||||
{ | ||||
FACT_WAVEBANK_SEGIDX_BANKDATA = 0, | ||||
FACT_WAVEBANK_SEGIDX_ENTRYMETADATA, | ||||
FACT_WAVEBANK_SEGIDX_SEEKTABLES, | ||||
FACT_WAVEBANK_SEGIDX_ENTRYNAMES, | ||||
FACT_WAVEBANK_SEGIDX_ENTRYWAVEDATA, | ||||
FACT_WAVEBANK_SEGIDX_COUNT | ||||
} FACTWaveBankSegIdx; | ||||
#pragma pack(push, 1) | ||||
typedef struct FACTWaveBankRegion | ||||
{ | ||||
uint32_t dwOffset; | ||||
uint32_t dwLength; | ||||
} FACTWaveBankRegion; | ||||
typedef struct FACTWaveBankSampleRegion | ||||
{ | ||||
uint32_t dwStartSample; | ||||
uint32_t dwTotalSamples; | ||||
} FACTWaveBankSampleRegion; | ||||
typedef struct FACTWaveBankHeader | ||||
{ | ||||
uint32_t dwSignature; | ||||
uint32_t dwVersion; | ||||
uint32_t dwHeaderVersion; | ||||
FACTWaveBankRegion Segments[FACT_WAVEBANK_SEGIDX_COUNT]; | ||||
} FACTWaveBankHeader; | ||||
typedef union FACTWaveBankMiniWaveFormat | ||||
{ | ||||
FAUDIONAMELESS struct | ||||
{ | ||||
uint32_t wFormatTag : 2; | ||||
uint32_t nChannels : 3; | ||||
uint32_t nSamplesPerSec : 18; | ||||
uint32_t wBlockAlign : 8; | ||||
uint32_t wBitsPerSample : 1; | ||||
}; | ||||
uint32_t dwValue; | ||||
} FACTWaveBankMiniWaveFormat; | ||||
typedef struct FACTWaveBankEntry | ||||
{ | ||||
FAUDIONAMELESS union | ||||
{ | ||||
FAUDIONAMELESS struct | ||||
{ | ||||
uint32_t dwFlags : 4; | ||||
uint32_t Duration : 28; | ||||
}; | ||||
uint32_t dwFlagsAndDuration; | ||||
}; | ||||
FACTWaveBankMiniWaveFormat Format; | ||||
FACTWaveBankRegion PlayRegion; | ||||
FACTWaveBankSampleRegion LoopRegion; | ||||
} FACTWaveBankEntry; | ||||
typedef struct FACTWaveBankEntryCompact | ||||
{ | ||||
uint32_t dwOffset : 21; | ||||
uint32_t dwLengthDeviation : 11; | ||||
} FACTWaveBankEntryCompact; | ||||
typedef struct FACTWaveBankData | ||||
{ | ||||
uint32_t dwFlags; | ||||
uint32_t dwEntryCount; | ||||
char szBankName[64]; | ||||
uint32_t dwEntryMetaDataElementSize; | ||||
uint32_t dwEntryNameElementSize; | ||||
uint32_t dwAlignment; | ||||
FACTWaveBankMiniWaveFormat CompactFormat; | ||||
uint64_t BuildTime; | ||||
} FACTWaveBankData; | ||||
#pragma pack(pop) | ||||
typedef struct FACTWaveProperties | ||||
{ | ||||
char friendlyName[64]; | ||||
FACTWaveBankMiniWaveFormat format; | ||||
uint32_t durationInSamples; | ||||
FACTWaveBankSampleRegion loopRegion; | ||||
int32_t streaming; | ||||
} FACTWaveProperties; | ||||
typedef struct FACTWaveInstanceProperties | ||||
{ | ||||
FACTWaveProperties properties; | ||||
int32_t backgroundMusic; | ||||
} FACTWaveInstanceProperties; | ||||
typedef struct FACTCueProperties | ||||
{ | ||||
char friendlyName[0xFF]; | ||||
int32_t interactive; | ||||
uint16_t iaVariableIndex; | ||||
uint16_t numVariations; | ||||
uint8_t maxInstances; | ||||
uint8_t currentInstances; | ||||
} FACTCueProperties; | ||||
typedef struct FACTTrackProperties | ||||
{ | ||||
uint32_t duration; | ||||
uint16_t numVariations; | ||||
uint8_t numChannels; | ||||
uint16_t waveVariation; | ||||
uint8_t loopCount; | ||||
} FACTTrackProperties; | ||||
typedef struct FACTVariationProperties | ||||
{ | ||||
uint16_t index; | ||||
uint8_t weight; | ||||
float iaVariableMin; | ||||
float iaVariableMax; | ||||
int32_t linger; | ||||
} FACTVariationProperties; | ||||
typedef struct FACTSoundProperties | ||||
{ | ||||
uint16_t category; | ||||
uint8_t priority; | ||||
int16_t pitch; | ||||
float volume; | ||||
uint16_t numTracks; | ||||
FACTTrackProperties arrTrackProperties[1]; | ||||
} FACTSoundProperties; | ||||
typedef struct FACTSoundVariationProperties | ||||
{ | ||||
FACTVariationProperties variationProperties; | ||||
FACTSoundProperties soundProperties; | ||||
} FACTSoundVariationProperties; | ||||
typedef struct FACTCueInstanceProperties | ||||
{ | ||||
uint32_t allocAttributes; | ||||
FACTCueProperties cueProperties; | ||||
FACTSoundVariationProperties activeVariationProperties; | ||||
} FACTCueInstanceProperties; | ||||
#pragma pack(push, 1) | ||||
typedef struct FACTNotificationDescription | ||||
{ | ||||
uint8_t type; | ||||
uint8_t flags; | ||||
FACTSoundBank *pSoundBank; | ||||
FACTWaveBank *pWaveBank; | ||||
FACTCue *pCue; | ||||
FACTWave *pWave; | ||||
uint16_t cueIndex; | ||||
uint16_t waveIndex; | ||||
void* pvContext; | ||||
} FACTNotificationDescription; | ||||
typedef struct FACTNotificationCue | ||||
{ | ||||
uint16_t cueIndex; | ||||
FACTSoundBank *pSoundBank; | ||||
FACTCue *pCue; | ||||
} FACTNotificationCue; | ||||
typedef struct FACTNotificationMarker | ||||
{ | ||||
uint16_t cueIndex; | ||||
FACTSoundBank *pSoundBank; | ||||
FACTCue *pCue; | ||||
uint32_t marker; | ||||
} FACTNotificationMarker; | ||||
typedef struct FACTNotificationSoundBank | ||||
{ | ||||
FACTSoundBank *pSoundBank; | ||||
} FACTNotificationSoundBank; | ||||
typedef struct FACTNotificationWaveBank | ||||
{ | ||||
FACTWaveBank *pWaveBank; | ||||
} FACTNotificationWaveBank; | ||||
typedef struct FACTNotificationVariable | ||||
{ | ||||
uint16_t cueIndex; | ||||
FACTSoundBank *pSoundBank; | ||||
FACTCue *pCue; | ||||
uint16_t variableIndex; | ||||
float variableValue; | ||||
int32_t local; | ||||
} FACTNotificationVariable; | ||||
typedef struct FACTNotificationGUI | ||||
{ | ||||
uint32_t reserved; | ||||
} FACTNotificationGUI; | ||||
typedef struct FACTNotificationWave | ||||
{ | ||||
FACTWaveBank *pWaveBank; | ||||
uint16_t waveIndex; | ||||
uint16_t cueIndex; | ||||
FACTSoundBank *pSoundBank; | ||||
FACTCue *pCue; | ||||
FACTWave *pWave; | ||||
} FACTNotificationWave; | ||||
struct FACTNotification | ||||
{ | ||||
uint8_t type; | ||||
int32_t timeStamp; | ||||
void *pvContext; | ||||
FAUDIONAMELESS union | ||||
{ | ||||
FACTNotificationCue cue; | ||||
FACTNotificationMarker marker; | ||||
FACTNotificationSoundBank soundBank; | ||||
FACTNotificationWaveBank waveBank; | ||||
FACTNotificationVariable variable; | ||||
FACTNotificationGUI gui; | ||||
FACTNotificationWave wave; | ||||
}; | ||||
}; | ||||
#pragma pack(pop) | ||||
/* Constants */ | ||||
#define FACT_CONTENT_VERSION 46 | ||||
static const uint32_t FACT_FLAG_MANAGEDATA = 0x00000001; | ||||
static const uint32_t FACT_FLAG_STOP_RELEASE = 0x00000000; | ||||
static const uint32_t FACT_FLAG_STOP_IMMEDIATE = 0x00000001; | ||||
static const uint32_t FACT_FLAG_BACKGROUND_MUSIC = 0x00000002; | ||||
static const uint32_t FACT_FLAG_UNITS_MS = 0x00000004; | ||||
static const uint32_t FACT_FLAG_UNITS_SAMPLES = 0x00000008; | ||||
static const uint32_t FACT_STATE_CREATED = 0x00000001; | ||||
static const uint32_t FACT_STATE_PREPARING = 0x00000002; | ||||
static const uint32_t FACT_STATE_PREPARED = 0x00000004; | ||||
static const uint32_t FACT_STATE_PLAYING = 0x00000008; | ||||
static const uint32_t FACT_STATE_STOPPING = 0x00000010; | ||||
static const uint32_t FACT_STATE_STOPPED = 0x00000020; | ||||
static const uint32_t FACT_STATE_PAUSED = 0x00000040; | ||||
static const uint32_t FACT_STATE_INUSE = 0x00000080; | ||||
static const uint32_t FACT_STATE_PREPAREFAILED = 0x80000000; | ||||
static const int16_t FACTPITCH_MIN = -1200; | ||||
static const int16_t FACTPITCH_MAX = 1200; | ||||
static const int16_t FACTPITCH_MIN_TOTAL = -2400; | ||||
static const int16_t FACTPITCH_MAX_TOTAL = 2400; | ||||
static const float FACTVOLUME_MIN = 0.0f; | ||||
static const float FACTVOLUME_MAX = 16777216.0f; | ||||
static const uint16_t FACTINDEX_INVALID = 0xFFFF; | ||||
static const uint16_t FACTVARIABLEINDEX_INVALID = 0xFFFF; | ||||
static const uint16_t FACTCATEGORY_INVALID = 0xFFFF; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_CUEPREPARED = 1; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_CUEPLAY = 2; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_CUESTOP = 3; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_CUEDESTROYED = 4; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_MARKER = 5; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_SOUNDBANKDESTROYED = 6; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_WAVEBANKDESTROYED = 7; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_LOCALVARIABLECHANGED = 8; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_GLOBALVARIABLECHANGED = 9; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_GUICONNECTED = 10; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_GUIDISCONNECTED = 11; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_WAVEPREPARED = 12; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_WAVEPLAY = 13; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_WAVESTOP = 14; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_WAVELOOPED = 15; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_WAVEDESTROYED = 16; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_WAVEBANKPREPARED = 17; | ||||
static const uint8_t FACTNOTIFICATIONTYPE_WAVEBANKSTREAMING_INVALIDCONTENT = 18; | ||||
static const uint8_t FACT_FLAG_NOTIFICATION_PERSIST = 0x01; | ||||
#define FACT_ENGINE_LOOKAHEAD_DEFAULT 250 | ||||
#define FACT_MAX_WMA_AVG_BYTES_PER_SEC_ENTRIES 7 | ||||
static const uint32_t aWMAAvgBytesPerSec[] = | ||||
{ | ||||
12000, | ||||
24000, | ||||
4000, | ||||
6000, | ||||
8000, | ||||
20000, | ||||
2500 | ||||
}; | ||||
#define FACT_MAX_WMA_BLOCK_ALIGN_ENTRIES 17 | ||||
static const uint32_t aWMABlockAlign[] = | ||||
{ | ||||
929, | ||||
1487, | ||||
1280, | ||||
2230, | ||||
8917, | ||||
8192, | ||||
4459, | ||||
5945, | ||||
2304, | ||||
1536, | ||||
1485, | ||||
1008, | ||||
2731, | ||||
4096, | ||||
6827, | ||||
5462, | ||||
1280 | ||||
}; | ||||
/* AudioEngine Interface */ | ||||
FACTAPI uint32_t FACTCreateEngine( | ||||
uint32_t dwCreationFlags, | ||||
FACTAudioEngine **ppEngine | ||||
); | ||||
/* See "extensions/CustomAllocatorEXT.txt" for more details. */ | ||||
FACTAPI uint32_t FACTCreateEngineWithCustomAllocatorEXT( | ||||
uint32_t dwCreationFlags, | ||||
FACTAudioEngine **ppEngine, | ||||
FAudioMallocFunc customMalloc, | ||||
FAudioFreeFunc customFree, | ||||
FAudioReallocFunc customRealloc | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_AddRef(FACTAudioEngine *pEngine); | ||||
FACTAPI uint32_t FACTAudioEngine_Release(FACTAudioEngine *pEngine); | ||||
/* FIXME: QueryInterface? Or just ignore COM garbage... -flibit */ | ||||
FACTAPI uint32_t FACTAudioEngine_GetRendererCount( | ||||
FACTAudioEngine *pEngine, | ||||
uint16_t *pnRendererCount | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_GetRendererDetails( | ||||
FACTAudioEngine *pEngine, | ||||
uint16_t nRendererIndex, | ||||
FACTRendererDetails *pRendererDetails | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_GetFinalMixFormat( | ||||
FACTAudioEngine *pEngine, | ||||
FAudioWaveFormatExtensible *pFinalMixFormat | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_Initialize( | ||||
FACTAudioEngine *pEngine, | ||||
const FACTRuntimeParameters *pParams | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_ShutDown(FACTAudioEngine *pEngine); | ||||
FACTAPI uint32_t FACTAudioEngine_DoWork(FACTAudioEngine *pEngine); | ||||
FACTAPI uint32_t FACTAudioEngine_CreateSoundBank( | ||||
FACTAudioEngine *pEngine, | ||||
const void *pvBuffer, | ||||
uint32_t dwSize, | ||||
uint32_t dwFlags, | ||||
uint32_t dwAllocAttributes, | ||||
FACTSoundBank **ppSoundBank | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_CreateInMemoryWaveBank( | ||||
FACTAudioEngine *pEngine, | ||||
const void *pvBuffer, | ||||
uint32_t dwSize, | ||||
uint32_t dwFlags, | ||||
uint32_t dwAllocAttributes, | ||||
FACTWaveBank **ppWaveBank | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_CreateStreamingWaveBank( | ||||
FACTAudioEngine *pEngine, | ||||
const FACTStreamingParameters *pParms, | ||||
FACTWaveBank **ppWaveBank | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_PrepareWave( | ||||
FACTAudioEngine *pEngine, | ||||
uint32_t dwFlags, | ||||
const char *szWavePath, | ||||
uint32_t wStreamingPacketSize, | ||||
uint32_t dwAlignment, | ||||
uint32_t dwPlayOffset, | ||||
uint8_t nLoopCount, | ||||
FACTWave **ppWave | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_PrepareInMemoryWave( | ||||
FACTAudioEngine *pEngine, | ||||
uint32_t dwFlags, | ||||
FACTWaveBankEntry entry, | ||||
uint32_t *pdwSeekTable, /* Optional! */ | ||||
uint8_t *pbWaveData, | ||||
uint32_t dwPlayOffset, | ||||
uint8_t nLoopCount, | ||||
FACTWave **ppWave | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_PrepareStreamingWave( | ||||
FACTAudioEngine *pEngine, | ||||
uint32_t dwFlags, | ||||
FACTWaveBankEntry entry, | ||||
FACTStreamingParameters streamingParams, | ||||
uint32_t dwAlignment, | ||||
uint32_t *pdwSeekTable, /* Optional! */ | ||||
uint8_t *pbWaveData, | ||||
uint32_t dwPlayOffset, | ||||
uint8_t nLoopCount, | ||||
FACTWave **ppWave | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_RegisterNotification( | ||||
FACTAudioEngine *pEngine, | ||||
const FACTNotificationDescription *pNotificationDescription | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_UnRegisterNotification( | ||||
FACTAudioEngine *pEngine, | ||||
const FACTNotificationDescription *pNotificationDescription | ||||
); | ||||
FACTAPI uint16_t FACTAudioEngine_GetCategory( | ||||
FACTAudioEngine *pEngine, | ||||
const char *szFriendlyName | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_Stop( | ||||
FACTAudioEngine *pEngine, | ||||
uint16_t nCategory, | ||||
uint32_t dwFlags | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_SetVolume( | ||||
FACTAudioEngine *pEngine, | ||||
uint16_t nCategory, | ||||
float volume | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_Pause( | ||||
FACTAudioEngine *pEngine, | ||||
uint16_t nCategory, | ||||
int32_t fPause | ||||
); | ||||
FACTAPI uint16_t FACTAudioEngine_GetGlobalVariableIndex( | ||||
FACTAudioEngine *pEngine, | ||||
const char *szFriendlyName | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_SetGlobalVariable( | ||||
FACTAudioEngine *pEngine, | ||||
uint16_t nIndex, | ||||
float nValue | ||||
); | ||||
FACTAPI uint32_t FACTAudioEngine_GetGlobalVariable( | ||||
FACTAudioEngine *pEngine, | ||||
uint16_t nIndex, | ||||
float *pnValue | ||||
); | ||||
/* SoundBank Interface */ | ||||
FACTAPI uint16_t FACTSoundBank_GetCueIndex( | ||||
FACTSoundBank *pSoundBank, | ||||
const char *szFriendlyName | ||||
); | ||||
FACTAPI uint32_t FACTSoundBank_GetNumCues( | ||||
FACTSoundBank *pSoundBank, | ||||
uint16_t *pnNumCues | ||||
); | ||||
FACTAPI uint32_t FACTSoundBank_GetCueProperties( | ||||
FACTSoundBank *pSoundBank, | ||||
uint16_t nCueIndex, | ||||
FACTCueProperties *pProperties | ||||
); | ||||
FACTAPI uint32_t FACTSoundBank_Prepare( | ||||
FACTSoundBank *pSoundBank, | ||||
uint16_t nCueIndex, | ||||
uint32_t dwFlags, | ||||
int32_t timeOffset, | ||||
FACTCue** ppCue | ||||
); | ||||
FACTAPI uint32_t FACTSoundBank_Play( | ||||
FACTSoundBank *pSoundBank, | ||||
uint16_t nCueIndex, | ||||
uint32_t dwFlags, | ||||
int32_t timeOffset, | ||||
FACTCue** ppCue /* Optional! */ | ||||
); | ||||
#ifndef F3DAUDIO_DSP_SETTINGS_DECL | ||||
#define F3DAUDIO_DSP_SETTINGS_DECL | ||||
typedef struct F3DAUDIO_DSP_SETTINGS F3DAUDIO_DSP_SETTINGS; | ||||
#endif /* F3DAUDIO_DSP_SETTINGS_DECL */ | ||||
FACTAPI uint32_t FACTSoundBank_Play3D( | ||||
FACTSoundBank *pSoundBank, | ||||
uint16_t nCueIndex, | ||||
uint32_t dwFlags, | ||||
int32_t timeOffset, | ||||
F3DAUDIO_DSP_SETTINGS *pDSPSettings, | ||||
FACTCue** ppCue /* Optional! */ | ||||
); | ||||
FACTAPI uint32_t FACTSoundBank_Stop( | ||||
FACTSoundBank *pSoundBank, | ||||
uint16_t nCueIndex, | ||||
uint32_t dwFlags | ||||
); | ||||
FACTAPI uint32_t FACTSoundBank_Destroy(FACTSoundBank *pSoundBank); | ||||
FACTAPI uint32_t FACTSoundBank_GetState( | ||||
FACTSoundBank *pSoundBank, | ||||
uint32_t *pdwState | ||||
); | ||||
/* WaveBank Interface */ | ||||
FACTAPI uint32_t FACTWaveBank_Destroy(FACTWaveBank *pWaveBank); | ||||
FACTAPI uint32_t FACTWaveBank_GetState( | ||||
FACTWaveBank *pWaveBank, | ||||
uint32_t *pdwState | ||||
); | ||||
FACTAPI uint32_t FACTWaveBank_GetNumWaves( | ||||
FACTWaveBank *pWaveBank, | ||||
uint16_t *pnNumWaves | ||||
); | ||||
FACTAPI uint16_t FACTWaveBank_GetWaveIndex( | ||||
FACTWaveBank *pWaveBank, | ||||
const char *szFriendlyName | ||||
); | ||||
FACTAPI uint32_t FACTWaveBank_GetWaveProperties( | ||||
FACTWaveBank *pWaveBank, | ||||
uint16_t nWaveIndex, | ||||
FACTWaveProperties *pWaveProperties | ||||
); | ||||
FACTAPI uint32_t FACTWaveBank_Prepare( | ||||
FACTWaveBank *pWaveBank, | ||||
uint16_t nWaveIndex, | ||||
uint32_t dwFlags, | ||||
uint32_t dwPlayOffset, | ||||
uint8_t nLoopCount, | ||||
FACTWave **ppWave | ||||
); | ||||
FACTAPI uint32_t FACTWaveBank_Play( | ||||
FACTWaveBank *pWaveBank, | ||||
uint16_t nWaveIndex, | ||||
uint32_t dwFlags, | ||||
uint32_t dwPlayOffset, | ||||
uint8_t nLoopCount, | ||||
FACTWave **ppWave | ||||
); | ||||
FACTAPI uint32_t FACTWaveBank_Stop( | ||||
FACTWaveBank *pWaveBank, | ||||
uint16_t nWaveIndex, | ||||
uint32_t dwFlags | ||||
); | ||||
/* Wave Interface */ | ||||
FACTAPI uint32_t FACTWave_Destroy(FACTWave *pWave); | ||||
FACTAPI uint32_t FACTWave_Play(FACTWave *pWave); | ||||
FACTAPI uint32_t FACTWave_Stop(FACTWave *pWave, uint32_t dwFlags); | ||||
FACTAPI uint32_t FACTWave_Pause(FACTWave *pWave, int32_t fPause); | ||||
FACTAPI uint32_t FACTWave_GetState(FACTWave *pWave, uint32_t *pdwState); | ||||
FACTAPI uint32_t FACTWave_SetPitch(FACTWave *pWave, int16_t pitch); | ||||
FACTAPI uint32_t FACTWave_SetVolume(FACTWave *pWave, float volume); | ||||
FACTAPI uint32_t FACTWave_SetMatrixCoefficients( | ||||
FACTWave *pWave, | ||||
uint32_t uSrcChannelCount, | ||||
uint32_t uDstChannelCount, | ||||
float *pMatrixCoefficients | ||||
); | ||||
FACTAPI uint32_t FACTWave_GetProperties( | ||||
FACTWave *pWave, | ||||
FACTWaveInstanceProperties *pProperties | ||||
); | ||||
/* Cue Interface */ | ||||
FACTAPI uint32_t FACTCue_Destroy(FACTCue *pCue); | ||||
FACTAPI uint32_t FACTCue_Play(FACTCue *pCue); | ||||
FACTAPI uint32_t FACTCue_Stop(FACTCue *pCue, uint32_t dwFlags); | ||||
FACTAPI uint32_t FACTCue_GetState(FACTCue *pCue, uint32_t *pdwState); | ||||
FACTAPI uint32_t FACTCue_SetMatrixCoefficients( | ||||
FACTCue *pCue, | ||||
uint32_t uSrcChannelCount, | ||||
uint32_t uDstChannelCount, | ||||
float *pMatrixCoefficients | ||||
); | ||||
FACTAPI uint16_t FACTCue_GetVariableIndex( | ||||
FACTCue *pCue, | ||||
const char *szFriendlyName | ||||
); | ||||
FACTAPI uint32_t FACTCue_SetVariable( | ||||
FACTCue *pCue, | ||||
uint16_t nIndex, | ||||
float nValue | ||||
); | ||||
FACTAPI uint32_t FACTCue_GetVariable( | ||||
FACTCue *pCue, | ||||
uint16_t nIndex, | ||||
float *nValue | ||||
); | ||||
FACTAPI uint32_t FACTCue_Pause(FACTCue *pCue, int32_t fPause); | ||||
FACTAPI uint32_t FACTCue_GetProperties( | ||||
FACTCue *pCue, | ||||
FACTCueInstanceProperties **ppProperties | ||||
); | ||||
FACTAPI uint32_t FACTCue_SetOutputVoices( | ||||
FACTCue *pCue, | ||||
const FAudioVoiceSends *pSendList /* Optional! */ | ||||
); | ||||
FACTAPI uint32_t FACTCue_SetOutputVoiceMatrix( | ||||
FACTCue *pCue, | ||||
const FAudioVoice *pDestinationVoice, /* Optional! */ | ||||
uint32_t SourceChannels, | ||||
uint32_t DestinationChannels, | ||||
const float *pLevelMatrix /* SourceChannels * DestinationChannels */ | ||||
); | ||||
#ifdef __cplusplus | ||||
} | ||||
#endif /* __cplusplus */ | ||||
#endif /* FACT_H */ | ||||
/* vim: set noexpandtab shiftwidth=8 tabstop=8: */ | ||||