28 #include <SFML/Audio/AudioDevice.hpp>
29 #include <SFML/Audio/AudioResource.hpp>
30 #include <SFML/Audio/Listener.hpp>
42 AudioDevice* AudioDevice::ourInstance;
48 AudioDevice::AudioDevice() :
52 myDevice = alcOpenDevice(NULL);
57 myContext = alcCreateContext(myDevice, NULL);
62 alcMakeContextCurrent(myContext);
65 Listener::SetPosition(0.f, 0.f, 0.f);
66 Listener::SetTarget(0.f, 0.f, -1.f);
70 std::cerr <<
"Failed to create the audio context" << std::endl;
75 std::cerr <<
"Failed to open the audio device" << std::endl;
83 AudioDevice::~AudioDevice()
86 alcMakeContextCurrent(NULL);
88 alcDestroyContext(myContext);
92 alcCloseDevice(myDevice);
99 AudioDevice& AudioDevice::GetInstance()
103 ourInstance =
new AudioDevice;
112 void AudioDevice::AddReference()
116 ourInstance =
new AudioDevice;
119 ourInstance->myRefCount++;
126 void AudioDevice::RemoveReference()
129 ourInstance->myRefCount--;
132 if (ourInstance->myRefCount == 0)
143 ALCdevice* AudioDevice::GetDevice()
const
152 ALenum AudioDevice::GetFormatFromChannelsCount(
unsigned int ChannelsCount)
const
155 switch (ChannelsCount)
157 case 1 :
return AL_FORMAT_MONO16;
158 case 2 :
return AL_FORMAT_STEREO16;
159 case 4 :
return alGetEnumValue(
"AL_FORMAT_QUAD16");
160 case 6 :
return alGetEnumValue(
"AL_FORMAT_51CHN16");
161 case 7 :
return alGetEnumValue(
"AL_FORMAT_61CHN16");
162 case 8 :
return alGetEnumValue(
"AL_FORMAT_71CHN16");