Path: blob/master/RSDKv5/RSDK/Audio/XAudio/XAudioDevice.hpp
1174 views
#define LockAudioDevice() EnterCriticalSection(&AudioDevice::criticalSection)1#define UnlockAudioDevice() LeaveCriticalSection(&AudioDevice::criticalSection)23// DX94namespace RSDK5{6class AudioDeviceCallback : public IXAudio2VoiceCallback7{8void WINAPI OnVoiceProcessingPassStart(UINT32 BytesRequired) {}9void WINAPI OnVoiceProcessingPassEnd() {}10void WINAPI OnStreamEnd() {}11void WINAPI OnBufferStart(void *pBufferContext) {}12void WINAPI OnBufferEnd(void *pBufferContext);13void WINAPI OnLoopEnd(void *pBufferContext) {}14void WINAPI OnVoiceError(void *pBufferContext, HRESULT Error) {}15};1617#ifdef __GNUC__18// using clang to compile? stfu19#pragma GCC diagnostic push20#pragma GCC diagnostic ignored "-Wmicrosoft-exception-spec"21#endif2223class AudioEngineCallback : public IXAudio2EngineCallback24{25void WINAPI OnProcessingPassStart(void) {}26void WINAPI OnProcessingPassEnd(void) {}27void WINAPI OnCriticalError(HRESULT Error);28};2930#ifdef __GNUC__31#pragma GCC diagnostic pop32#endif3334struct AudioDevice : public AudioDeviceBase {35static bool32 Init();36static void Release();3738static void FrameInit();3940static void HandleStreamLoad(ChannelInfo *channel, bool32 async);4142static uint8 contextInitialized;4344static IXAudio2 *audioContext;45static IXAudio2MasteringVoice *masteringVoice;46static IXAudio2SourceVoice *sourceVoice;47static AudioDeviceCallback voiceCallback;48static AudioEngineCallback engineCallback;4950static RTL_CRITICAL_SECTION criticalSection;5152static int32 mixBufferID;53static SAMPLE_FORMAT mixBuffer[3][MIX_BUFFER_SIZE];5455private:56static void InitAudioChannels();57static void InitMixBuffer();58static HRESULT InitContext();5960DWORD static WINAPI LoadStreamASync(LPVOID channel)61{62LoadStream((ChannelInfo *)channel);63return 0;64}65};66} // namespace RSDK6768