Always ResetSenderCongestionControlObjects before RegisterEtc...
BUG=webrtc:7896
Review-Url: https://codereview.webrtc.org/2966503002
Cr-Commit-Position: refs/heads/master@{#18844}
diff --git a/webrtc/audio/audio_send_stream.cc b/webrtc/audio/audio_send_stream.cc
index f8ee3ab..36ad63d 100644
--- a/webrtc/audio/audio_send_stream.cc
+++ b/webrtc/audio/audio_send_stream.cc
@@ -171,7 +171,7 @@
// Transport sequence number
if (first_time ||
new_ids.transport_sequence_number != old_ids.transport_sequence_number) {
- if (old_ids.transport_sequence_number) {
+ if (!first_time) {
channel_proxy->ResetSenderCongestionControlObjects();
stream->bandwidth_observer_.reset();
}
diff --git a/webrtc/audio/audio_send_stream_unittest.cc b/webrtc/audio/audio_send_stream_unittest.cc
index efc18d1..b685cfb 100644
--- a/webrtc/audio/audio_send_stream_unittest.cc
+++ b/webrtc/audio/audio_send_stream_unittest.cc
@@ -174,10 +174,7 @@
stream_config_.rtp.extensions.push_back(
RtpExtension(RtpExtension::kAudioLevelUri, kAudioLevelId));
if (audio_bwe_enabled) {
- stream_config_.rtp.extensions.push_back(
- RtpExtension(RtpExtension::kTransportSequenceNumberUri,
- kTransportSequenceNumberId));
- stream_config_.send_codec_spec->transport_cc_enabled = true;
+ AddBweToConfig(&stream_config_);
}
stream_config_.encoder_factory = SetupEncoderFactoryMock();
stream_config_.min_bitrate_bps = 10000;
@@ -197,6 +194,13 @@
RtcEventLog* event_log() { return &event_log_; }
MockVoiceEngine* voice_engine() { return &voice_engine_; }
+ static void AddBweToConfig(AudioSendStream::Config* config) {
+ config->rtp.extensions.push_back(
+ RtpExtension(RtpExtension::kTransportSequenceNumberUri,
+ kTransportSequenceNumberId));
+ config->send_codec_spec->transport_cc_enabled = true;
+ }
+
void SetupDefaultChannelProxy(bool audio_bwe_enabled) {
using testing::StrEq;
channel_proxy_ = new testing::StrictMock<MockVoEChannelProxy>();
@@ -541,5 +545,28 @@
send_stream.Reconfigure(stream_config);
}
+TEST(AudioSendStreamTest, ReconfigureTransportCcResetsFirst) {
+ ConfigHelper helper(false, true);
+ internal::AudioSendStream send_stream(
+ helper.config(), helper.audio_state(), helper.worker_queue(),
+ helper.transport(), helper.bitrate_allocator(), helper.event_log(),
+ helper.rtcp_rtt_stats(), rtc::Optional<RtpState>());
+ auto new_config = helper.config();
+ ConfigHelper::AddBweToConfig(&new_config);
+ EXPECT_CALL(*helper.channel_proxy(),
+ EnableSendTransportSequenceNumber(kTransportSequenceNumberId))
+ .Times(1);
+ {
+ ::testing::InSequence seq;
+ EXPECT_CALL(*helper.channel_proxy(), ResetSenderCongestionControlObjects())
+ .Times(1);
+ EXPECT_CALL(*helper.channel_proxy(), RegisterSenderCongestionControlObjects(
+ helper.transport(), Ne(nullptr)))
+ .Times(1);
+ }
+ send_stream.Reconfigure(new_config);
+}
+
+
} // namespace test
} // namespace webrtc