Always ResetSenderCongestionControlObjects before RegisterEtc...

BUG=webrtc:7896

Review-Url: https://codereview.webrtc.org/2966503002
Cr-Commit-Position: refs/heads/master@{#18844}
This commit is contained in:
ossu
2017-06-30 01:38:56 -07:00
committed by Commit Bot
parent 88af8b4b62
commit 1129df26b0
2 changed files with 32 additions and 5 deletions

View File

@ -171,7 +171,7 @@ void AudioSendStream::ConfigureStream(
// 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();
}

View File

@ -174,10 +174,7 @@ struct ConfigHelper {
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 @@ struct ConfigHelper {
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 @@ TEST(AudioSendStreamTest, DontRecreateEncoder) {
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