diff --git a/src/mumble/AudioOutputSpeech.cpp b/src/mumble/AudioOutputSpeech.cpp
index 5939fe6..e67fc87 100644
--- a/src/mumble/AudioOutputSpeech.cpp
+++ b/src/mumble/AudioOutputSpeech.cpp
@@ -334,8 +334,6 @@ bool AudioOutputSpeech::needSamples(unsigned int snum) {
 				if (umtType == MessageHandler::UDPVoiceOpus) {
 #ifdef USE_OPUS
 					decodedSamples = opus_decode_float(opusState, qba.isEmpty() ? NULL : reinterpret_cast<const unsigned char *>(qba.constData()), qba.size(), pOut, iAudioBufferSize, 0);
-					iOutputSize = static_cast<unsigned int>(ceilf(static_cast<float>(decodedSamples * iMixerFreq) / static_cast<float>(iSampleRate)));
-					resizeBuffer(iBufferFilled + iOutputSize);
 #endif
 				} else {
 					if (qba.isEmpty()) {
@@ -387,7 +385,7 @@ bool AudioOutputSpeech::needSamples(unsigned int snum) {
 #endif
 				if (umtType == MessageHandler::UDPVoiceOpus) {
 #ifdef USE_OPUS
-					opus_decode_float(opusState, NULL, 0, pOut, iFrameSize, 0);
+					decodedSamples = opus_decode_float(opusState, NULL, 0, pOut, iFrameSize, 0);
 #endif
 				} else {
 					speex_decode(dsSpeex, NULL, pOut);
@@ -410,7 +408,7 @@ bool AudioOutputSpeech::needSamples(unsigned int snum) {
 		}
 nextframe:
 		spx_uint32_t inlen = decodedSamples;
-		spx_uint32_t outlen = iOutputSize;
+		spx_uint32_t outlen = static_cast<unsigned int>(ceilf(static_cast<float>(decodedSamples * iMixerFreq) / static_cast<float>(iSampleRate)));
 		if (srs && bLastAlive)
 			speex_resampler_process_float(srs, 0, fResamplerBuffer, &inlen, pfBuffer + iBufferFilled, &outlen);
 		iBufferFilled += outlen;
