diff --git a/sdrbase/audio/audioopus.cpp b/sdrbase/audio/audioopus.cpp index 1a964356f..4f9eaa082 100644 --- a/sdrbase/audio/audioopus.cpp +++ b/sdrbase/audio/audioopus.cpp @@ -45,16 +45,12 @@ void AudioOpus::setEncoder(int32_t fs, int nChannels) bool newInstance = true; QMutexLocker mutexLocker(&m_mutex); - if (m_encoderState) - { - error = opus_encoder_init(m_encoderState, fs, nChannels, OPUS_APPLICATION_AUDIO); - newInstance = false; - } - else - { - m_encoderState = opus_encoder_create(fs, nChannels, OPUS_APPLICATION_AUDIO, &error); + if (m_encoderState) { + opus_encoder_destroy(m_encoderState); } + m_encoderState = opus_encoder_create(fs, nChannels, OPUS_APPLICATION_AUDIO, &error); + if (error != OPUS_OK) { qWarning("AudioOpus::setEncoder: %s error: %s", newInstance ? "create" : "init", opus_strerror(error));