diff --git a/src/modules/audio/openal/Audio.cpp b/src/modules/audio/openal/Audio.cpp index cb2eb2f8d..13d0afa90 100644 --- a/src/modules/audio/openal/Audio.cpp +++ b/src/modules/audio/openal/Audio.cpp @@ -408,7 +408,7 @@ const std::vector &Audio::getRecordingDevices() if (defaultname.length() == 0) { //use some safe basic parameters - 8 kHz, 8 bits, 1 channel - ALCdevice *defaultdevice = alcCaptureOpenDevice(NULL, 8000, 8, 1); + ALCdevice *defaultdevice = alcCaptureOpenDevice(NULL, 8000, AL_FORMAT_MONO8, 1024); if (alGetError() == AL_NO_ERROR) { defaultname = alcGetString(defaultdevice, ALC_CAPTURE_DEVICE_SPECIFIER); diff --git a/src/modules/audio/openal/Source.cpp b/src/modules/audio/openal/Source.cpp index f8caddf9f..8c6e90a10 100644 --- a/src/modules/audio/openal/Source.cpp +++ b/src/modules/audio/openal/Source.cpp @@ -610,36 +610,36 @@ double Source::getDuration(Unit unit) switch (sourceType) { - case TYPE_STATIC: - { - ALsizei size = staticBuffer->getSize(); - ALsizei samples = (size / channels) / (bitDepth / 8); + case TYPE_STATIC: + { + ALsizei size = staticBuffer->getSize(); + ALsizei samples = (size / channels) / (bitDepth / 8); - if (unit == UNIT_SAMPLES) - return (double) samples; - else - return (double) samples / (double) sampleRate; - } - case TYPE_STREAM: - { - double seconds = decoder->getDuration(); + if (unit == UNIT_SAMPLES) + return (double) samples; + else + return (double) samples / (double) sampleRate; + } + case TYPE_STREAM: + { + double seconds = decoder->getDuration(); - if (unit == UNIT_SECONDS) - return seconds; - else - return seconds * decoder->getSampleRate(); - } - case TYPE_QUEUE: - { - ALsizei samples = (bufferedBytes / channels) / (bitDepth / 8); + if (unit == UNIT_SECONDS) + return seconds; + else + return seconds * decoder->getSampleRate(); + } + case TYPE_QUEUE: + { + ALsizei samples = (bufferedBytes / channels) / (bitDepth / 8); - if (unit == UNIT_SAMPLES) - return (double)samples; - else - return (double)samples / (double)sampleRate; - } - case TYPE_MAX_ENUM: - return 0.0; + if (unit == UNIT_SAMPLES) + return (double)samples; + else + return (double)samples / (double)sampleRate; + } + case TYPE_MAX_ENUM: + return 0.0; } return 0.0; } @@ -813,14 +813,14 @@ int Source::getFreeBufferCount() const { switch (sourceType) //why not :^) { - case TYPE_STATIC: - return 0; - case TYPE_STREAM: - return unusedBuffers.size(); - case TYPE_QUEUE: - return unusedBuffers.size(); - case TYPE_MAX_ENUM: - return 0; + case TYPE_STATIC: + return 0; + case TYPE_STREAM: + return unusedBuffers.size(); + case TYPE_QUEUE: + return unusedBuffers.size(); + case TYPE_MAX_ENUM: + return 0; } return 0; } @@ -834,34 +834,34 @@ void Source::prepareAtomic() switch (sourceType) { - case TYPE_STATIC: - alSourcei(source, AL_BUFFER, staticBuffer->getBuffer()); - break; - case TYPE_STREAM: - while (!unusedBuffers.empty()) - { - auto b = unusedBuffers.top(); - if (streamAtomic(b, decoder.get()) == 0) - break; - - alSourceQueueBuffers(source, 1, &b); - unusedBuffers.pop(); - - if (decoder->isFinished()) - break; - } - break; - case TYPE_QUEUE: + case TYPE_STATIC: + alSourcei(source, AL_BUFFER, staticBuffer->getBuffer()); + break; + case TYPE_STREAM: + while (!unusedBuffers.empty()) { - while (!streamBuffers.empty()) - { - alSourceQueueBuffers(source, 1, &streamBuffers.front()); - streamBuffers.pop(); - } - break; + auto b = unusedBuffers.top(); + if (streamAtomic(b, decoder.get()) == 0) + break; + + alSourceQueueBuffers(source, 1, &b); + unusedBuffers.pop(); + + if (decoder->isFinished()) + break; } - case TYPE_MAX_ENUM: - break; + break; + case TYPE_QUEUE: + { + while (!streamBuffers.empty()) + { + alSourceQueueBuffers(source, 1, &streamBuffers.front()); + streamBuffers.pop(); + } + break; + } + case TYPE_MAX_ENUM: + break; } } @@ -869,39 +869,39 @@ void Source::teardownAtomic() { switch (sourceType) { - case TYPE_STATIC: - break; - case TYPE_STREAM: - { - ALint queued; - ALuint buffer; + case TYPE_STATIC: + break; + case TYPE_STREAM: + { + ALint queued; + ALuint buffer; - decoder->seek(0); - // drain buffers - //since we only unqueue 1 buffer, it's OK to use singular variable pointer instead of array - alGetSourcei(source, AL_BUFFERS_QUEUED, &queued); - for (unsigned int i = 0; i < (unsigned int)queued; i++) - { - alSourceUnqueueBuffers(source, 1, &buffer); - unusedBuffers.push(buffer); - } - break; - } - case TYPE_QUEUE: + decoder->seek(0); + // drain buffers + //since we only unqueue 1 buffer, it's OK to use singular variable pointer instead of array + alGetSourcei(source, AL_BUFFERS_QUEUED, &queued); + for (unsigned int i = 0; i < (unsigned int)queued; i++) { - ALint queued; - ALuint buffer; - - alGetSourcei(source, AL_BUFFERS_QUEUED, &queued); - for (unsigned int i = (unsigned int)queued; i > 0; i--) - { - alSourceUnqueueBuffers(source, 1, &buffer); - unusedBuffers.push(buffer); - } - break; + alSourceUnqueueBuffers(source, 1, &buffer); + unusedBuffers.push(buffer); } - case TYPE_MAX_ENUM: - break; + break; + } + case TYPE_QUEUE: + { + ALint queued; + ALuint buffer; + + alGetSourcei(source, AL_BUFFERS_QUEUED, &queued); + for (unsigned int i = (unsigned int)queued; i > 0; i--) + { + alSourceUnqueueBuffers(source, 1, &buffer); + unusedBuffers.push(buffer); + } + break; + } + case TYPE_MAX_ENUM: + break; } alSourcei(source, AL_BUFFER, AL_NONE);