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