1
0
mirror of https://github.com/borgesdan/xn65 synced 2024-12-29 21:54:47 +01:00
xn65/framework/platform/audioengine-dx.hpp

96 lines
1.8 KiB
C++
Raw Normal View History

2024-04-19 16:21:45 -03:00
#ifndef XNA_PLATFORM_SOUNDENGINE_DX_HPP
#define XNA_PLATFORM_SOUNDENGINE_DX_HPP
2024-04-20 13:39:19 -03:00
#include "../audio/audioengine.hpp"
#include <Audio.h>
2024-04-19 16:21:45 -03:00
namespace xna {
2024-04-20 13:39:19 -03:00
struct WaveFormat {
Ushort FormatTag{ 0 };
Ushort Channels{ 0 };
Ulong SamplesPerSecond{ 0 };
Ulong Buffer{ 0 };
Ushort BlockAlign{ 0 };
Ushort BitsPerSamples{ 0 };
Ushort ByteSize{ 0 };
};
2024-04-19 16:21:45 -03:00
class AudioEngine : public IAudioEngine {
public:
AudioEngine() {
2024-04-20 13:39:19 -03:00
_dxAudioEngine = New<DirectX::AudioEngine>(
#ifdef _DEBUG
DirectX::AudioEngine_Debug
#endif
);
}
virtual ~AudioEngine() {
if (_dxAudioEngine) {
_dxAudioEngine->Suspend();
}
}
virtual bool Reset() override {
if (!_dxAudioEngine)
return false;
return _dxAudioEngine->Reset();
}
virtual bool Update() override {
if (!_dxAudioEngine)
return false;
return _dxAudioEngine->Update();
}
virtual bool Resume() override {
if (!_dxAudioEngine)
return false;
_dxAudioEngine->Resume();
return true;
}
virtual bool Suspend() override {
if (!_dxAudioEngine)
return false;
_dxAudioEngine->Resume();
return true;
}
virtual void DefaultSampleRate(int value) override {
if (!_dxAudioEngine) return;
_dxAudioEngine->SetDefaultSampleRate(value);
}
virtual void MasteringLimit(int limit, int loudness) override {
if (!_dxAudioEngine) return;
_dxAudioEngine->SetMasteringLimit(limit, loudness);
}
virtual void MasterVolume(float value) override {
if (!_dxAudioEngine) return;
_dxAudioEngine->SetMasterVolume(value);
}
virtual void Reverb(AudioReverb value) override {
if (!_dxAudioEngine) return;
const auto reverb = static_cast<DirectX::AUDIO_ENGINE_REVERB>(value);
2024-04-21 16:06:22 -03:00
_dxAudioEngine->SetReverb(reverb);
2024-04-19 16:21:45 -03:00
}
public:
2024-04-20 13:39:19 -03:00
sptr<DirectX::AudioEngine> _dxAudioEngine = nullptr;
2024-04-19 16:21:45 -03:00
};
}
#endif