Magic_Game/core/modules/Audio.cpp

46 lines
741 B
C++
Raw Normal View History

2018-09-05 13:17:07 +08:00
#include "..\e2dmodule.h"
2018-09-02 14:30:48 +08:00
e2d::Audio::Audio()
2018-09-04 22:42:34 +08:00
: x_audio2_(nullptr)
, mastering_voice_(nullptr)
2018-09-02 14:30:48 +08:00
{
::CoInitialize(nullptr);
ThrowIfFailed(
2018-09-04 22:42:34 +08:00
XAudio2Create(&x_audio2_, 0)
2018-09-02 14:30:48 +08:00
);
ThrowIfFailed(
2018-09-04 22:42:34 +08:00
x_audio2_->CreateMasteringVoice(&mastering_voice_)
2018-09-02 14:30:48 +08:00
);
}
e2d::Audio::~Audio()
{
2018-09-04 22:42:34 +08:00
if (mastering_voice_)
2018-09-02 14:30:48 +08:00
{
2018-09-04 22:42:34 +08:00
mastering_voice_->DestroyVoice();
mastering_voice_ = nullptr;
2018-09-02 14:30:48 +08:00
}
2018-09-04 22:42:34 +08:00
SafeRelease(x_audio2_);
2018-09-02 14:30:48 +08:00
::CoUninitialize();
}
2018-09-04 22:42:34 +08:00
2018-10-03 18:04:04 +08:00
HRESULT e2d::Audio::CreateVoice(IXAudio2SourceVoice ** voice, WAVEFORMATEX * wfx, VoiceCallback * callback)
{
return x_audio2_->CreateSourceVoice(voice, wfx, 0, XAUDIO2_DEFAULT_FREQ_RATIO, callback);;
}
void e2d::Audio::Open()
2018-09-04 22:42:34 +08:00
{
2018-10-03 18:04:04 +08:00
x_audio2_->StartEngine();
2018-09-04 22:42:34 +08:00
}
2018-10-03 18:04:04 +08:00
void e2d::Audio::Close()
2018-09-04 22:42:34 +08:00
{
2018-10-03 18:04:04 +08:00
x_audio2_->StopEngine();
2018-09-04 22:42:34 +08:00
}