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}
This commit is contained in:
Fredrik Solenberg 2018-01-16 13:32:31 +01:00 committed by Commit Bot
parent d8b041cc54
commit 4613bdf995

View File

@ -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<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 @@ 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_);
}
}