void AudioInput::initializeMixer() { int err; if (srsMic) speex_resampler_destroy(srsMic); if (srsEcho) speex_resampler_destroy(srsEcho); if (pfMicInput) delete [] pfMicInput; if (pfEchoInput) delete [] pfEchoInput; if (pfOutput) delete [] pfOutput; if (iMicFreq != iSampleRate) srsMic = speex_resampler_init(1, iMicFreq, iSampleRate, 3, &err); iMicLength = (iFrameSize * iMicFreq) / iSampleRate; pfMicInput = new float[iMicLength]; pfOutput = new float[iFrameSize * max(1U,iEchoChannels)]; if (iEchoChannels > 0) { bEchoMulti = g_struct.s.bEchoMulti; if (iEchoFreq != iSampleRate) srsEcho = speex_resampler_init(bEchoMulti ? iEchoChannels : 1, iEchoFreq, iSampleRate, 3, &err); iEchoLength = (iFrameSize * iEchoFreq) / iSampleRate; iEchoMCLength = bEchoMulti ? iEchoLength * iEchoChannels : iEchoLength; iEchoFrameSize = bEchoMulti ? iFrameSize * iEchoChannels : iFrameSize; pfEchoInput = new float[iEchoMCLength]; } else { srsEcho = NULL; pfEchoInput = NULL; } imfMic = chooseMixer(iMicChannels, eMicFormat); imfEcho = chooseMixer(iEchoChannels, eEchoFormat); iMicSampleSize = static_cast<int>(iMicChannels * ((eMicFormat == SampleFloat) ? sizeof(float) : sizeof(short))); iEchoSampleSize = static_cast<int>(iEchoChannels * ((eEchoFormat == SampleFloat) ? sizeof(float) : sizeof(short))); bResetProcessor = true; Trace("AudioInput: Initialized mixer for %d channel %d hz mic and %d channel %d hz echo", iMicChannels, iMicFreq, iEchoChannels, iEchoFreq); }
void AudioInput::initializeMixer() { int err; if (srsMic) speex_resampler_destroy(srsMic); if (srsEcho) speex_resampler_destroy(srsEcho); if (pfMicInput) delete [] pfMicInput; if (pfEchoInput) delete [] pfEchoInput; if (pfOutput) delete [] pfOutput; if (iMicFreq != SAMPLE_RATE) srsMic = speex_resampler_init(1, iMicFreq, SAMPLE_RATE, 3, &err); iMicLength = (iFrameSize * iMicFreq) / SAMPLE_RATE; pfMicInput = new float[iMicLength]; pfOutput = new float[iFrameSize]; if (iEchoChannels > 0) { if (iEchoFreq != SAMPLE_RATE) srsEcho = speex_resampler_init(1, iEchoFreq, SAMPLE_RATE, 3, &err); iEchoLength = (iFrameSize * iEchoFreq) / SAMPLE_RATE; pfEchoInput = new float[iEchoLength]; } else { srsEcho = NULL; pfEchoInput = NULL; } imfMic = chooseMixer(iMicChannels, eMicFormat); imfEcho = chooseMixer(iEchoChannels, eEchoFormat); iMicSampleSize = iMicChannels * ((eMicFormat == SampleFloat) ? sizeof(float) : sizeof(short)); iEchoSampleSize = iEchoChannels * ((eEchoFormat == SampleFloat) ? sizeof(float) : sizeof(short)); bResetProcessor = true; qWarning("AudioInput: Initialized mixer for %d channel %d hz mic and %d channel %d hz echo", iMicChannels, iMicFreq, iEchoChannels, iEchoFreq); }