Chromium Code Reviews| Index: webrtc/video/video_send_stream_tests.cc |
| diff --git a/webrtc/video/video_send_stream_tests.cc b/webrtc/video/video_send_stream_tests.cc |
| index 3a8acbc5b5d022718ff31efad0f3e673569596a3..9083d109e902384ada717071ce23598f75be4345 100644 |
| --- a/webrtc/video/video_send_stream_tests.cc |
| +++ b/webrtc/video/video_send_stream_tests.cc |
| @@ -865,7 +865,8 @@ TEST_F(VideoSendStreamTest, SuspendBelowMinBitrate) { |
| return SEND_PACKET; |
| } |
| - // This method implements the rtc::VideoSinkInterface |
| + // This method implements the rtc::VideoSinkInterface. This is called when |
| + // a frame is provided to the VideoSendStream. |
| void OnFrame(const VideoFrame& video_frame) override { |
| rtc::CritScope lock(&crit_); |
| if (test_state_ == kDuringSuspend && |
| @@ -1201,7 +1202,7 @@ class MaxPaddingSetTest : public test::SendTest { |
| encoder_config->min_transmit_bitrate_bps = kMinTransmitBitrateBps; |
| encoder_config->content_type = VideoEncoderConfig::ContentType::kScreen; |
| } |
| - encoder_config_ = *encoder_config; |
| + encoder_config_ = encoder_config->Copy(); |
| } |
| void OnCallsCreated(Call* sender_call, Call* receiver_call) override { |
| @@ -1225,7 +1226,7 @@ class MaxPaddingSetTest : public test::SendTest { |
| packets_sent_ = 0; |
| encoder_config_.min_transmit_bitrate_bps = kMinTransmitBitrateBps; |
| encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen; |
| - send_stream_->ReconfigureVideoEncoder(encoder_config_); |
| + send_stream_->ReconfigureVideoEncoder(encoder_config_.Copy()); |
| running_without_padding_ = false; |
| return SEND_PACKET; |
| } |
| @@ -1320,7 +1321,7 @@ TEST_F(VideoSendStreamTest, CanReconfigureToUseStartBitrateAbovePreviousMax) { |
| video_encoder_config_.streams[0].max_bitrate_bps = |
| 2 * bitrate_config.start_bitrate_bps; |
| - video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_); |
| + video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_.Copy()); |
| // New bitrate should be reconfigured above the previous max. As there's no |
| // network connection this shouldn't be flaky, as no bitrate should've been |
| @@ -1584,13 +1585,13 @@ TEST_F(VideoSendStreamTest, EncoderIsProperlyInitializedAndDestroyed) { |
| std::vector<VideoReceiveStream::Config>* receive_configs, |
| VideoEncoderConfig* encoder_config) override { |
| send_config->encoder_settings.encoder = this; |
| - encoder_config_ = *encoder_config; |
| + encoder_config_ = encoder_config->Copy(); |
| } |
| void PerformTest() override { |
| EXPECT_TRUE(Wait()) << "Timed out while waiting for Encode."; |
| EXPECT_EQ(0u, num_releases()); |
| - stream_->ReconfigureVideoEncoder(encoder_config_); |
| + stream_->ReconfigureVideoEncoder(std::move(encoder_config_)); |
| EXPECT_EQ(0u, num_releases()); |
| stream_->Stop(); |
| // Encoder should not be released before destroying the VideoSendStream. |
| @@ -1632,7 +1633,7 @@ TEST_F(VideoSendStreamTest, EncoderSetupPropagatesCommonEncoderConfigValues) { |
| std::vector<VideoReceiveStream::Config>* receive_configs, |
| VideoEncoderConfig* encoder_config) override { |
| send_config->encoder_settings.encoder = this; |
| - encoder_config_ = *encoder_config; |
| + encoder_config_ = encoder_config->Copy(); |
| } |
| void OnVideoStreamsCreated( |
| @@ -1661,7 +1662,7 @@ TEST_F(VideoSendStreamTest, EncoderSetupPropagatesCommonEncoderConfigValues) { |
| EXPECT_EQ(1u, num_initializations_) << "VideoEncoder not initialized."; |
| encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen; |
| - stream_->ReconfigureVideoEncoder(encoder_config_); |
| + stream_->ReconfigureVideoEncoder(std::move(encoder_config_)); |
| EXPECT_TRUE(init_encode_event_.Wait(kDefaultTimeoutMs)); |
| EXPECT_EQ(2u, num_initializations_) |
| << "ReconfigureVideoEncoder did not reinitialize the encoder with " |
| @@ -1707,7 +1708,7 @@ class VideoCodecConfigObserver : public test::SendTest, |
| } |
| encoder_config->encoder_specific_settings = &encoder_settings_; |
| - encoder_config_ = *encoder_config; |
| + encoder_config_ = encoder_config->Copy(); |
| } |
| void OnVideoStreamsCreated( |
| @@ -1734,7 +1735,7 @@ class VideoCodecConfigObserver : public test::SendTest, |
| ASSERT_EQ(1u, num_initializations_) << "VideoEncoder not initialized."; |
| encoder_settings_.frameDroppingOn = true; |
| - stream_->ReconfigureVideoEncoder(encoder_config_); |
| + stream_->ReconfigureVideoEncoder(std::move(encoder_config_)); |
| ASSERT_TRUE( |
| init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)); |
| EXPECT_EQ(2u, num_initializations_) |
| @@ -1931,6 +1932,7 @@ TEST_F(VideoSendStreamTest, ReconfigureBitratesSetsEncoderBitratesCorrectly) { |
| : SendTest(kDefaultTimeoutMs), |
| FakeEncoder(Clock::GetRealTimeClock()), |
| init_encode_event_(false, false), |
| + bitrate_changed_event_(false, false), |
| num_initializations_(0) {} |
| private: |
| @@ -1955,8 +1957,6 @@ TEST_F(VideoSendStreamTest, ReconfigureBitratesSetsEncoderBitratesCorrectly) { |
| } else if (num_initializations_ == 2) { |
| EXPECT_EQ(static_cast<unsigned int>(kIncreasedMaxBitrateKbps), |
| codecSettings->maxBitrate); |
| - EXPECT_EQ(static_cast<unsigned int>(kIncreasedStartBitrateKbps), |
| - codecSettings->startBitrate); |
| } |
| ++num_initializations_; |
| init_encode_event_.Set(); |
| @@ -1964,6 +1964,11 @@ TEST_F(VideoSendStreamTest, ReconfigureBitratesSetsEncoderBitratesCorrectly) { |
| maxPayloadSize); |
| } |
| + int32_t SetRates(uint32_t newBitRate, uint32_t frameRate) override { |
| + bitrate_changed_event_.Set(); |
| + return FakeEncoder::SetRates(newBitRate, frameRate); |
| + } |
| + |
| Call::Config GetSenderCallConfig() override { |
| Call::Config config; |
| config.bitrate_config.min_bitrate_bps = kMinBitrateKbps * 1000; |
| @@ -1981,7 +1986,7 @@ TEST_F(VideoSendStreamTest, ReconfigureBitratesSetsEncoderBitratesCorrectly) { |
| // capped. |
| encoder_config->streams.front().min_bitrate_bps = kMinBitrateKbps * 1000; |
| encoder_config->streams.front().max_bitrate_bps = kMaxBitrateKbps * 1000; |
| - encoder_config_ = *encoder_config; |
| + encoder_config_ = encoder_config->Copy(); |
| } |
| void OnCallsCreated(Call* sender_call, Call* receiver_call) override { |
| @@ -1997,16 +2002,21 @@ TEST_F(VideoSendStreamTest, ReconfigureBitratesSetsEncoderBitratesCorrectly) { |
| void PerformTest() override { |
| ASSERT_TRUE( |
| init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)) |
| - << "Timed out while waiting encoder to be configured."; |
| + << "Timed out while waiting for encoder to be configured."; |
| + ASSERT_TRUE( |
| + bitrate_changed_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)) |
| + << "Timed out while waiting encoder rate to be set."; |
| Call::Config::BitrateConfig bitrate_config; |
| bitrate_config.start_bitrate_bps = kIncreasedStartBitrateKbps * 1000; |
| bitrate_config.max_bitrate_bps = kIncreasedMaxBitrateKbps * 1000; |
| call_->SetBitrateConfig(bitrate_config); |
| - EXPECT_TRUE(Wait()) |
| - << "Timed out while waiting encoder to be configured."; |
| + ASSERT_TRUE( |
| + bitrate_changed_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)) |
| + << "Timed out while waiting for encoder rate to be set."; |
|
pbos-webrtc
2016/07/13 12:35:39
This doesn't check kIncreasedStartBitrateKbps anym
perkj_webrtc
2016/07/14 10:11:28
fixed
|
| + |
| encoder_config_.streams[0].min_bitrate_bps = 0; |
| encoder_config_.streams[0].max_bitrate_bps = kLowerMaxBitrateKbps * 1000; |
| - send_stream_->ReconfigureVideoEncoder(encoder_config_); |
| + send_stream_->ReconfigureVideoEncoder(encoder_config_.Copy()); |
| ASSERT_TRUE( |
| init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)); |
| EXPECT_EQ(2, num_initializations_) |
| @@ -2015,7 +2025,7 @@ TEST_F(VideoSendStreamTest, ReconfigureBitratesSetsEncoderBitratesCorrectly) { |
| encoder_config_.streams[0].min_bitrate_bps; |
| encoder_config_.streams[0].max_bitrate_bps = |
| kIncreasedMaxBitrateKbps * 1000; |
| - send_stream_->ReconfigureVideoEncoder(encoder_config_); |
| + send_stream_->ReconfigureVideoEncoder(encoder_config_.Copy()); |
| ASSERT_TRUE( |
| init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)); |
| EXPECT_EQ(3, num_initializations_) |
| @@ -2023,6 +2033,7 @@ TEST_F(VideoSendStreamTest, ReconfigureBitratesSetsEncoderBitratesCorrectly) { |
| } |
| rtc::Event init_encode_event_; |
| + rtc::Event bitrate_changed_event_; |
| int num_initializations_; |
| webrtc::Call* call_; |
| webrtc::VideoSendStream* send_stream_; |
| @@ -2143,7 +2154,7 @@ class Vp9HeaderObserver : public test::SendTest { |
| EXPECT_EQ(1u, encoder_config->streams.size()); |
| encoder_config->streams[0].temporal_layer_thresholds_bps.resize( |
| vp9_settings_.numberOfTemporalLayers - 1); |
| - encoder_config_ = *encoder_config; |
| + encoder_config_ = encoder_config->Copy(); |
| } |
| void PerformTest() override { |