AudioInput::AudioInput() { speex_bits_init(&sbBits); speex_bits_reset(&sbBits); iFrames = 0; iSampleRate = SAMPLE_RATE; esEncState=speex_encoder_init(speex_lib_get_mode(SPEEX_MODEID_WB)); speex_encoder_ctl(esEncState,SPEEX_GET_FRAME_SIZE,&iFrameSize); mumble_drft_init(&fftTable, iFrameSize); iFrameCounter = 0; iSilentFrames = 0; iHoldFrames = 0; iBestBin = 0; int iArg=1; float fArg=0.0; speex_encoder_ctl(esEncState,SPEEX_SET_VBR, &iArg); iArg = 0; speex_encoder_ctl(esEncState,SPEEX_SET_VAD, &iArg); speex_encoder_ctl(esEncState,SPEEX_SET_DTX, &iArg); fArg = static_cast<float>(g.s.iQuality); speex_encoder_ctl(esEncState,SPEEX_SET_VBR_QUALITY, &fArg); speex_encoder_ctl(esEncState,SPEEX_GET_BITRATE, &iArg); speex_encoder_ctl(esEncState, SPEEX_SET_VBR_MAX_BITRATE, &iArg); iArg = 5; speex_encoder_ctl(esEncState,SPEEX_SET_COMPLEXITY, &iArg); bResetProcessor = true; sppPreprocess = NULL; sesEcho = NULL; srsMic = srsEcho = NULL; jb = jitter_buffer_init(10); iJitterSeq = 1; psMic = new short[iFrameSize]; psSpeaker = new short[iFrameSize]; psClean = new short[iFrameSize]; iEchoChannels = iMicChannels = 0; iEchoFreq = iMicFreq = SAMPLE_RATE; iEchoFilled = iMicFilled = 0; eMicFormat = eEchoFormat = SampleFloat; iMicSampleSize = iEchoSampleSize = 0; bPreviousVoice = false; pfMicInput = pfEchoInput = pfOutput = NULL; iBitrate = 0; dPeakMic = dPeakSignal = dPeakSpeaker = 0.0; if (g.uiSession) { setMaxBandwidth(g.iMaxBandwidth); } bRunning = false; connect(this, SIGNAL(doMute()), g.mw->qaAudioMute, SLOT(trigger()), Qt::QueuedConnection); }
AudioInput::AudioInput() : opusBuffer(g.s.iFramesPerPacket * (SAMPLE_RATE / 100)) { adjustBandwidth(g.iMaxBandwidth, iAudioQuality, iAudioFrames); g.iAudioBandwidth = getNetworkBandwidth(iAudioQuality, iAudioFrames); umtType = MessageHandler::UDPVoiceCELTAlpha; cCodec = NULL; ceEncoder = NULL; iSampleRate = SAMPLE_RATE; iFrameSize = SAMPLE_RATE / 100; #ifdef USE_OPUS opusState = opus_encoder_create(SAMPLE_RATE, 1, OPUS_APPLICATION_VOIP, NULL); opus_encoder_ctl(opusState, OPUS_SET_VBR(0)); // CBR #endif qWarning("AudioInput: %d bits/s, %d hz, %d sample", iAudioQuality, iSampleRate, iFrameSize); iEchoFreq = iMicFreq = iSampleRate; iFrameCounter = 0; iSilentFrames = 0; iHoldFrames = 0; iBufferedFrames = 0; bResetProcessor = true; bEchoMulti = false; sppPreprocess = NULL; sesEcho = NULL; srsMic = srsEcho = NULL; iJitterSeq = 0; iMinBuffered = 1000; psMic = new short[iFrameSize]; psClean = new short[iFrameSize]; psSpeaker = NULL; iEchoChannels = iMicChannels = 0; iEchoFilled = iMicFilled = 0; eMicFormat = eEchoFormat = SampleFloat; iMicSampleSize = iEchoSampleSize = 0; bPreviousVoice = false; bResetEncoder = true; pfMicInput = pfEchoInput = pfOutput = NULL; iBitrate = 0; dPeakSignal = dPeakSpeaker = dPeakMic = dPeakCleanMic = 0.0; if (g.uiSession) { setMaxBandwidth(g.iMaxBandwidth); } bRunning = true; connect(this, SIGNAL(doDeaf()), g.mw->qaAudioDeaf, SLOT(trigger()), Qt::QueuedConnection); connect(this, SIGNAL(doMute()), g.mw->qaAudioMute, SLOT(trigger()), Qt::QueuedConnection); }
AudioInput::AudioInput() { adjustBandwidth(g.iMaxBandwidth, iAudioQuality, iAudioFrames); g.iAudioBandwidth = getNetworkBandwidth(iAudioQuality, iAudioFrames); if (preferCELT(iAudioQuality, iAudioFrames)) umtType = MessageHandler::UDPVoiceCELTAlpha; else umtType = MessageHandler::UDPVoiceSpeex; cCodec = NULL; ceEncoder = NULL; if (umtType != MessageHandler::UDPVoiceSpeex) { iSampleRate = SAMPLE_RATE; iFrameSize = SAMPLE_RATE / 100; esSpeex = NULL; qWarning("AudioInput: %d bits/s, %d hz, %d sample CELT", iAudioQuality, iSampleRate, iFrameSize); } else { iAudioFrames /= 2; speex_bits_init(&sbBits); speex_bits_reset(&sbBits); esSpeex = speex_encoder_init(speex_lib_get_mode(SPEEX_MODEID_UWB)); speex_encoder_ctl(esSpeex,SPEEX_GET_FRAME_SIZE,&iFrameSize); speex_encoder_ctl(esSpeex,SPEEX_GET_SAMPLING_RATE,&iSampleRate); int iArg=1; speex_encoder_ctl(esSpeex,SPEEX_SET_VBR, &iArg); iArg = 0; speex_encoder_ctl(esSpeex,SPEEX_SET_VAD, &iArg); speex_encoder_ctl(esSpeex,SPEEX_SET_DTX, &iArg); float fArg=8.0; speex_encoder_ctl(esSpeex,SPEEX_SET_VBR_QUALITY, &fArg); iArg = iAudioQuality; speex_encoder_ctl(esSpeex, SPEEX_SET_VBR_MAX_BITRATE, &iArg); iArg = 5; speex_encoder_ctl(esSpeex,SPEEX_SET_COMPLEXITY, &iArg); qWarning("AudioInput: %d bits/s, %d hz, %d sample Speex-UWB", iAudioQuality, iSampleRate, iFrameSize); } iEchoFreq = iMicFreq = iSampleRate; iFrameCounter = 0; iSilentFrames = 0; iHoldFrames = 0; bResetProcessor = true; bEchoMulti = false; sppPreprocess = NULL; sesEcho = NULL; srsMic = srsEcho = NULL; iJitterSeq = 0; iMinBuffered = 1000; psMic = new short[iFrameSize]; psClean = new short[iFrameSize]; psSpeaker = NULL; iEchoChannels = iMicChannels = 0; iEchoFilled = iMicFilled = 0; eMicFormat = eEchoFormat = SampleFloat; iMicSampleSize = iEchoSampleSize = 0; bPreviousVoice = false; pfMicInput = pfEchoInput = pfOutput = NULL; iBitrate = 0; dPeakSignal = dPeakSpeaker = dPeakMic = dPeakCleanMic = 0.0; if (g.uiSession) { setMaxBandwidth(g.iMaxBandwidth); } bRunning = true; connect(this, SIGNAL(doDeaf()), g.mw->qaAudioDeaf, SLOT(trigger()), Qt::QueuedConnection); }