void FakeAudio::loadAudio() { // this might take some time, we should move this to a bg thread buffer = manager.getBuffer(src); if (!buffer) { buffer = new OpenALBuffer(src); manager.setBuffer(buffer, src); } alGenSources(1, &sourceId); alSourcei(sourceId, AL_BUFFER, buffer->getBufferId()); alSourcei(sourceId, AL_PITCH, 1.0f); alSourcei(sourceId, AL_GAIN, 1.0f); loaded = true; if (autoplay) play(NULL, 0, NULL); if (loop) alSourcei(sourceId, AL_LOOPING, AL_TRUE); // get the duration ALint bufferID = buffer->getBufferId(), bufferSize, frequency, bitsPerSample, channels; alGetBufferi(bufferID, AL_SIZE, &bufferSize); alGetBufferi(bufferID, AL_FREQUENCY, &frequency); alGetBufferi(bufferID, AL_CHANNELS, &channels); alGetBufferi(bufferID, AL_BITS, &bitsPerSample); duration = ((float)bufferSize)/(frequency*channels*(bitsPerSample/8)); }
void FakeAudio::loadAudio() { buffer = manager.getBuffer(src); if (!buffer) { buffer = new OpenALBuffer(src); manager.setBuffer(buffer, src); } alGenSources(1, &sourceId); genSource(sourceId, buffer->getBufferId(), loop); loaded = true; if (autoplay) play(NULL, 0, NULL); updateDuration(); }