From ec30d9ad5c6ce9d400b038d5f61dd21d40d9ca72 Mon Sep 17 00:00:00 2001
From: Stephen Birarda <commit@birarda.com>
Date: Thu, 22 Jun 2017 16:18:46 -0700
Subject: [PATCH] always re-process codec for replicated agent

---
 .../src/audio/AudioMixerClientData.cpp        | 22 ++++++++-----------
 .../src/audio/AudioMixerClientData.h          |  2 --
 2 files changed, 9 insertions(+), 15 deletions(-)

diff --git a/assignment-client/src/audio/AudioMixerClientData.cpp b/assignment-client/src/audio/AudioMixerClientData.cpp
index 0467b82d40..90a14cdeda 100644
--- a/assignment-client/src/audio/AudioMixerClientData.cpp
+++ b/assignment-client/src/audio/AudioMixerClientData.cpp
@@ -67,13 +67,9 @@ void AudioMixerClientData::processPackets() {
             case PacketType::MicrophoneAudioNoEcho:
             case PacketType::MicrophoneAudioWithEcho:
             case PacketType::InjectAudio:
-            case PacketType::SilentAudioFrame:
-            case PacketType::ReplicatedMicrophoneAudioNoEcho:
-            case PacketType::ReplicatedMicrophoneAudioWithEcho:
-            case PacketType::ReplicatedInjectAudio:
-            case PacketType::ReplicatedSilentAudioFrame: {
+            case PacketType::SilentAudioFrame: {
 
-                if (node->isUpstream() && !_hasSetupCodecForUpstreamNode) {
+                if (node->isUpstream()) {
                     setupCodecForReplicatedAgent(packet);
                 }
 
@@ -692,14 +688,14 @@ void AudioMixerClientData::setupCodecForReplicatedAgent(QSharedPointer<ReceivedM
     // pull the codec string from the packet
     auto codecString = message->readString();
 
-    qDebug() << "Manually setting codec for replicated agent" << uuidStringWithoutCurlyBraces(getNodeID())
+    if (codecString != _selectedCodecName) {
+        qDebug() << "Manually setting codec for replicated agent" << uuidStringWithoutCurlyBraces(getNodeID())
         << "-" << codecString;
 
-    const std::pair<QString, CodecPluginPointer> codec = AudioMixer::negotiateCodec({ codecString });
-    setupCodec(codec.second, codec.first);
+        const std::pair<QString, CodecPluginPointer> codec = AudioMixer::negotiateCodec({ codecString });
+        setupCodec(codec.second, codec.first);
 
-    _hasSetupCodecForUpstreamNode = true;
-
-    // seek back to the beginning of the message so other readers are in the right place
-    message->seek(0);
+        // seek back to the beginning of the message so other readers are in the right place
+        message->seek(0);
+    }
 }
diff --git a/assignment-client/src/audio/AudioMixerClientData.h b/assignment-client/src/audio/AudioMixerClientData.h
index 76a9cd6aa7..7a8690d8cc 100644
--- a/assignment-client/src/audio/AudioMixerClientData.h
+++ b/assignment-client/src/audio/AudioMixerClientData.h
@@ -184,8 +184,6 @@ private:
 
     bool _shouldMuteClient { false };
     bool _requestsDomainListData { false };
-
-    bool _hasSetupCodecForUpstreamNode { false };
 };
 
 #endif // hifi_AudioMixerClientData_h