From 4613bdf995a01fefb94ff722106da72bede9588f Mon Sep 17 00:00:00 2001 From: Fredrik Solenberg Date: Tue, 16 Jan 2018 13:32:31 +0100 Subject: [PATCH] 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 Reviewed-by: Niels Moller Commit-Queue: Fredrik Solenberg Cr-Commit-Position: refs/heads/master@{#21642} --- media/engine/webrtcvoiceengine.cc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/media/engine/webrtcvoiceengine.cc b/media/engine/webrtcvoiceengine.cc index edd91218ba..a1cbf9204f 100644 --- a/media/engine/webrtcvoiceengine.cc +++ b/media/engine/webrtcvoiceengine.cc @@ -1151,17 +1151,19 @@ class WebRtcVoiceMediaChannel::WebRtcAudioReceiveStream { 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& extensions) { + void SetRtpExtensionsAndRecreateStream( + const std::vector& extensions) { RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); config_.rtp.extensions = extensions; - ReconfigureAudioReceiveStream(); + RecreateAudioReceiveStream(); } // Set a new payload type -> decoder map. @@ -1336,7 +1338,7 @@ bool WebRtcVoiceMediaChannel::SetRecvParameters( 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 @@ bool WebRtcVoiceMediaChannel::SetSendCodecs( 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_); } }