From c363a9281e3e1e373a3dff9bfa2765b0bcf4d81e Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Tue, 9 Jan 2018 16:54:14 -0800 Subject: [PATCH] Fix another bug in audio-mixer audio packet parsing. For SilentAudioFrame packets, numSamples was being read as channel flag. --- .../src/audio/AudioMixerClientData.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/assignment-client/src/audio/AudioMixerClientData.cpp b/assignment-client/src/audio/AudioMixerClientData.cpp index b7974c88fc..394224b8f4 100644 --- a/assignment-client/src/audio/AudioMixerClientData.cpp +++ b/assignment-client/src/audio/AudioMixerClientData.cpp @@ -281,15 +281,21 @@ int AudioMixerClientData::parseData(ReceivedMessage& message) { // pull the codec string from the packet auto codecString = message.readString(); - // read the channel flag to see if our stream is stereo or not - quint8 channelFlag; - message.readPrimitive(&channelFlag); - - bool isStereo = channelFlag == 1; + // determine if the stream is stereo or not + bool isStereo; + if (packetType == PacketType::SilentAudioFrame) { + quint16 numSilentSamples; + message.readPrimitive(&numSilentSamples); + isStereo = numSilentSamples == AudioConstants::NETWORK_FRAME_SAMPLES_STEREO; + } else { + quint8 channelFlag; + message.readPrimitive(&channelFlag); + isStereo = channelFlag == 1; + } auto avatarAudioStream = new AvatarAudioStream(isStereo, AudioMixer::getStaticJitterFrames()); avatarAudioStream->setupCodec(_codec, _selectedCodecName, AudioConstants::MONO); - qCDebug(audio) << "creating new AvatarAudioStream... codec:" << _selectedCodecName << "channels:" << (channelFlag + 1); + qCDebug(audio) << "creating new AvatarAudioStream... codec:" << _selectedCodecName << "channels:" << (isStereo ? 2 : 1); connect(avatarAudioStream, &InboundAudioStream::mismatchedAudioCodec, this, &AudioMixerClientData::handleMismatchAudioFormat);