Recreate AudioReceiveStreams when header extensions change.

To align behavior with video receive streams. Configuration of header
extensions happen outside the stream classes (i.e. in Call). Recent
changes stopped recreating streams when extensions changed, but relied
on reconfiguring the stream instead.

Bug: webrtc:4690
Change-Id: I9efe944f94b811c353628d3be34f548f998d0efc
Reviewed-on: https://webrtc-review.googlesource.com/39664
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Fredrik Solenberg <solenberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21642}
diff --git a/media/engine/webrtcvoiceengine.cc b/media/engine/webrtcvoiceengine.cc
index edd9121..a1cbf92 100644
--- a/media/engine/webrtcvoiceengine.cc
+++ b/media/engine/webrtcvoiceengine.cc
@@ -1151,17 +1151,19 @@
     ReconfigureAudioReceiveStream();
   }
 
-  void SetUseTransportCc(bool use_transport_cc, bool use_nack) {
+  void SetUseTransportCcAndRecreateStream(bool use_transport_cc,
+                                          bool use_nack) {
     RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
     config_.rtp.transport_cc = use_transport_cc;
     config_.rtp.nack.rtp_history_ms = use_nack ? kNackRtpHistoryMs : 0;
     ReconfigureAudioReceiveStream();
   }
 
-  void SetRtpExtensions(const std::vector<webrtc::RtpExtension>& extensions) {
+  void SetRtpExtensionsAndRecreateStream(
+      const std::vector<webrtc::RtpExtension>& extensions) {
     RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
     config_.rtp.extensions = extensions;
-    ReconfigureAudioReceiveStream();
+    RecreateAudioReceiveStream();
   }
 
   // Set a new payload type -> decoder map.
@@ -1336,7 +1338,7 @@
   if (recv_rtp_extensions_ != filtered_extensions) {
     recv_rtp_extensions_.swap(filtered_extensions);
     for (auto& it : recv_streams_) {
-      it.second->SetRtpExtensions(recv_rtp_extensions_);
+      it.second->SetRtpExtensionsAndRecreateStream(recv_rtp_extensions_);
     }
   }
   return true;
@@ -1683,8 +1685,8 @@
     recv_transport_cc_enabled_ = send_codec_spec_->transport_cc_enabled;
     recv_nack_enabled_ = send_codec_spec_->nack_enabled;
     for (auto& kv : recv_streams_) {
-      kv.second->SetUseTransportCc(recv_transport_cc_enabled_,
-                                   recv_nack_enabled_);
+      kv.second->SetUseTransportCcAndRecreateStream(recv_transport_cc_enabled_,
+                                                    recv_nack_enabled_);
     }
   }