Revert the revert in r2988 since that wasn't the issue.
Review URL: https://webrtc-codereview.appspot.com/931005

git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@2992 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/video_engine/encoder_state_feedback.cc b/video_engine/encoder_state_feedback.cc
index 64e32e2..cfd0984 100644
--- a/video_engine/encoder_state_feedback.cc
+++ b/video_engine/encoder_state_feedback.cc
@@ -64,13 +64,16 @@
   return true;
 }
 
-void EncoderStateFeedback::RemoveEncoder(uint32_t ssrc)  {
+void EncoderStateFeedback::RemoveEncoder(const ViEEncoder* encoder)  {
   CriticalSectionScoped lock(crit_.get());
-  SsrcEncoderMap::iterator it = encoders_.find(ssrc);
-  if (it == encoders_.end())
-    return;
-
-  encoders_.erase(it);
+  SsrcEncoderMap::iterator it = encoders_.begin();
+  while (it != encoders_.end()) {
+    if (it->second == encoder) {
+      encoders_.erase(it++);
+    } else {
+      ++it;
+    }
+  }
 }
 
 RtcpIntraFrameObserver* EncoderStateFeedback::GetRtcpIntraFrameObserver() {
@@ -112,8 +115,10 @@
     return;
   }
 
-  encoders_[new_ssrc] = it->second;
+  ViEEncoder* encoder = it->second;
   encoders_.erase(it);
+  encoders_[new_ssrc] = encoder;
+  encoder->OnLocalSsrcChanged(old_ssrc, new_ssrc);
 }
 
 }  // namespace webrtc