60 alGetSourcei(
source, AL_BUFFERS_QUEUED, &queued);
63 alSourceUnqueueBuffers(
source, 1, &buffer);
67 alDeleteSources(1, &
source);
72 alcMakeContextCurrent(NULL);
84 device = alcOpenDevice(NULL);
86 GfError(
"OpenALMusicPlayer: OpenAL could not open device\n");
93 GfError(
"OpenALMusicPlayer: OpenAL could not create contect for device\n");
119 GfError(
"OpenALMusicPlayer: initSource failed to get sound source.\n");
123 alSource3f(
source, AL_POSITION, 0.0, 0.0, 0.0);
124 alSource3f(
source, AL_VELOCITY, 0.0, 0.0, 0.0);
125 alSource3f(
source, AL_DIRECTION, 0.0, 0.0, 0.0);
126 alSourcef (
source, AL_ROLLOFF_FACTOR, 0.0 );
127 alSourcei (
source, AL_SOURCE_RELATIVE, AL_TRUE );
137 int error = alGetError();
139 if(error != AL_NO_ERROR) {
140 GfError(
"OpenALMusicPlayer: OpenAL error was raised: %d\n", error);
154 alGetSourcei(
source, AL_SOURCE_STATE, &state);
155 return (state == AL_PLAYING);
164 const char* error =
"";
167 GfError(
"OpenALMusicPlayer: Stream read error: %s\n", error);
173 format = AL_FORMAT_MONO16;
176 format = AL_FORMAT_STEREO16;
179 GfError(
"OpenALMusicPlayer: Format error: \n");
195 GfError(
"OpenALMusicPlayer: Sound stream has invalid format\n");
228 alGetSourcei(
source, AL_BUFFERS_PROCESSED, &processed);
233 alSourceUnqueueBuffers(
source, 1, &buffer);
236 alSourceQueueBuffers(
source, 1, &buffer);
243 GfError(
"OpenALMusicPlayer: Cannot play stream.\n");
OpenALMusicPlayer(SoundStream *soundStream)
virtual bool initBuffers()
virtual bool initSource()
virtual int getRateInHz()=0
virtual bool initContext()
virtual bool startPlayback()
virtual bool read(char *buffer, const int bufferSize, int *resultSize, const char **error)=0
The Gaming Framework API.
virtual ~OpenALMusicPlayer()
virtual bool streamBuffer(ALuint buffer)
virtual bool playAndManageBuffer()
static const int BUFFERSIZE
virtual SoundFormat getSoundFormat()=0