Magic_Game/core/Base/Audio.cpp

61 lines
850 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
2018-09-04 22:42:34 +08:00
e2d::Audio * e2d::Audio::instance_ = nullptr;
2018-09-02 14:30:48 +08:00
2018-09-04 22:42:34 +08:00
e2d::Audio * e2d::Audio::GetInstance()
2018-09-02 14:30:48 +08:00
{
2018-09-04 22:42:34 +08:00
if (!instance_)
2018-09-02 14:30:48 +08:00
{
2018-09-04 22:42:34 +08:00
instance_ = new (std::nothrow) Audio;
2018-09-02 14:30:48 +08:00
}
2018-09-04 22:42:34 +08:00
return instance_;
2018-09-02 14:30:48 +08:00
}
2018-09-04 22:42:34 +08:00
void e2d::Audio::DestroyInstance()
2018-09-02 14:30:48 +08:00
{
2018-09-04 22:42:34 +08:00
if (instance_)
2018-09-02 14:30:48 +08:00
{
2018-09-04 22:42:34 +08:00
delete instance_;
instance_ = nullptr;
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
IXAudio2 * e2d::Audio::GetXAudio2()
{
return x_audio2_;
}
IXAudio2MasteringVoice * e2d::Audio::GetMasteringVoice()
{
return mastering_voice_;
}