bool OpenAL::initInput(const QString& deviceName) { if (!Settings::getInstance().getAudioInDevEnabled()) return false; qDebug() << "Opening audio input" << deviceName; assert(!alInDev); // TODO: Try to actually detect if our audio source is stereo int stereoFlag = AUDIO_CHANNELS == 1 ? AL_FORMAT_MONO16 : AL_FORMAT_STEREO16; const uint32_t sampleRate = AUDIO_SAMPLE_RATE; const uint16_t frameDuration = AUDIO_FRAME_DURATION; const uint32_t chnls = AUDIO_CHANNELS; const ALCsizei bufSize = (frameDuration * sampleRate * 4) / 1000 * chnls; const QByteArray qDevName = deviceName.toUtf8(); const ALchar* tmpDevName = qDevName.isEmpty() ? nullptr : qDevName.constData(); alInDev = alcCaptureOpenDevice(tmpDevName, sampleRate, stereoFlag, bufSize); // Restart the capture if necessary if (!alInDev) { qWarning() << "Failed to initialize audio input device:" << deviceName; return false; } setInputGain(Settings::getInstance().getAudioInGainDecibel()); qDebug() << "Opened audio input" << deviceName; alcCaptureStart(alInDev); return true; }
void fsetInputGain (void *d, float f) { setInputGain (d, (unsigned char)(f*127.0)); }