Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(923)

Side by Side Diff: webrtc/video/video_send_stream_tests.cc

Issue 1821983002: Revert of Initialize/configure video encoders asychronously. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/video/video_send_stream.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 #include <algorithm> // max 10 #include <algorithm> // max
(...skipping 1098 matching lines...) Expand 10 before | Expand all | Expand 10 after
1109 bool bitrate_capped_; 1109 bool bitrate_capped_;
1110 } test; 1110 } test;
1111 1111
1112 RunBaseTest(&test); 1112 RunBaseTest(&test);
1113 } 1113 }
1114 1114
1115 TEST_F(VideoSendStreamTest, CanReconfigureToUseStartBitrateAbovePreviousMax) { 1115 TEST_F(VideoSendStreamTest, CanReconfigureToUseStartBitrateAbovePreviousMax) {
1116 class StartBitrateObserver : public test::FakeEncoder { 1116 class StartBitrateObserver : public test::FakeEncoder {
1117 public: 1117 public:
1118 StartBitrateObserver() 1118 StartBitrateObserver()
1119 : FakeEncoder(Clock::GetRealTimeClock()), 1119 : FakeEncoder(Clock::GetRealTimeClock()), start_bitrate_kbps_(0) {}
1120 start_bitrate_changed_(false, false),
1121 start_bitrate_kbps_(0) {}
1122 int32_t InitEncode(const VideoCodec* config, 1120 int32_t InitEncode(const VideoCodec* config,
1123 int32_t number_of_cores, 1121 int32_t number_of_cores,
1124 size_t max_payload_size) override { 1122 size_t max_payload_size) override {
1125 rtc::CritScope lock(&crit_); 1123 rtc::CritScope lock(&crit_);
1126 start_bitrate_kbps_ = config->startBitrate; 1124 start_bitrate_kbps_ = config->startBitrate;
1127 start_bitrate_changed_.Set();
1128 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); 1125 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size);
1129 } 1126 }
1130 1127
1131 int32_t SetRates(uint32_t new_target_bitrate, uint32_t framerate) override { 1128 int32_t SetRates(uint32_t new_target_bitrate, uint32_t framerate) override {
1132 rtc::CritScope lock(&crit_); 1129 rtc::CritScope lock(&crit_);
1133 start_bitrate_kbps_ = new_target_bitrate; 1130 start_bitrate_kbps_ = new_target_bitrate;
1134 start_bitrate_changed_.Set();
1135 return FakeEncoder::SetRates(new_target_bitrate, framerate); 1131 return FakeEncoder::SetRates(new_target_bitrate, framerate);
1136 } 1132 }
1137 1133
1138 int GetStartBitrateKbps() const { 1134 int GetStartBitrateKbps() const {
1139 rtc::CritScope lock(&crit_); 1135 rtc::CritScope lock(&crit_);
1140 return start_bitrate_kbps_; 1136 return start_bitrate_kbps_;
1141 } 1137 }
1142 1138
1143 bool WaitForStartBitrate() {
1144 return start_bitrate_changed_.Wait(
1145 VideoSendStreamTest::kDefaultTimeoutMs);
1146 }
1147
1148 private: 1139 private:
1149 rtc::CriticalSection crit_; 1140 rtc::CriticalSection crit_;
1150 rtc::Event start_bitrate_changed_;
1151 int start_bitrate_kbps_ GUARDED_BY(crit_); 1141 int start_bitrate_kbps_ GUARDED_BY(crit_);
1152 }; 1142 };
1153 1143
1154 CreateSenderCall(Call::Config()); 1144 CreateSenderCall(Call::Config());
1155 1145
1156 test::NullTransport transport; 1146 test::NullTransport transport;
1157 CreateSendConfig(1, 0, &transport); 1147 CreateSendConfig(1, 0, &transport);
1158 1148
1159 Call::Config::BitrateConfig bitrate_config; 1149 Call::Config::BitrateConfig bitrate_config;
1160 bitrate_config.start_bitrate_bps = 1150 bitrate_config.start_bitrate_bps =
1161 2 * video_encoder_config_.streams[0].max_bitrate_bps; 1151 2 * video_encoder_config_.streams[0].max_bitrate_bps;
1162 sender_call_->SetBitrateConfig(bitrate_config); 1152 sender_call_->SetBitrateConfig(bitrate_config);
1163 1153
1164 StartBitrateObserver encoder; 1154 StartBitrateObserver encoder;
1165 video_send_config_.encoder_settings.encoder = &encoder; 1155 video_send_config_.encoder_settings.encoder = &encoder;
1166 1156
1167 CreateVideoStreams(); 1157 CreateVideoStreams();
1168 1158
1169 EXPECT_TRUE(encoder.WaitForStartBitrate());
1170 EXPECT_EQ(video_encoder_config_.streams[0].max_bitrate_bps / 1000, 1159 EXPECT_EQ(video_encoder_config_.streams[0].max_bitrate_bps / 1000,
1171 encoder.GetStartBitrateKbps()); 1160 encoder.GetStartBitrateKbps());
1172 1161
1173 video_encoder_config_.streams[0].max_bitrate_bps = 1162 video_encoder_config_.streams[0].max_bitrate_bps =
1174 2 * bitrate_config.start_bitrate_bps; 1163 2 * bitrate_config.start_bitrate_bps;
1175 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_); 1164 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_);
1176 1165
1177 // New bitrate should be reconfigured above the previous max. As there's no 1166 // New bitrate should be reconfigured above the previous max. As there's no
1178 // network connection this shouldn't be flaky, as no bitrate should've been 1167 // network connection this shouldn't be flaky, as no bitrate should've been
1179 // reported in between. 1168 // reported in between.
1180 EXPECT_TRUE(encoder.WaitForStartBitrate());
1181 EXPECT_EQ(bitrate_config.start_bitrate_bps / 1000, 1169 EXPECT_EQ(bitrate_config.start_bitrate_bps / 1000,
1182 encoder.GetStartBitrateKbps()); 1170 encoder.GetStartBitrateKbps());
1183 1171
1184 DestroyStreams(); 1172 DestroyStreams();
1185 } 1173 }
1186 1174
1187 TEST_F(VideoSendStreamTest, CapturesTextureAndVideoFrames) { 1175 TEST_F(VideoSendStreamTest, CapturesTextureAndVideoFrames) {
1188 class FrameObserver : public I420FrameCallback { 1176 class FrameObserver : public I420FrameCallback {
1189 public: 1177 public:
1190 FrameObserver() : output_frame_event_(false, false) {} 1178 FrameObserver() : output_frame_event_(false, false) {}
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
1384 } 1372 }
1385 1373
1386 int32_t SetRates(uint32_t newBitRate, uint32_t frameRate) override { 1374 int32_t SetRates(uint32_t newBitRate, uint32_t frameRate) override {
1387 EXPECT_TRUE(IsReadyForEncode()); 1375 EXPECT_TRUE(IsReadyForEncode());
1388 return 0; 1376 return 0;
1389 } 1377 }
1390 1378
1391 void OnVideoStreamsCreated( 1379 void OnVideoStreamsCreated(
1392 VideoSendStream* send_stream, 1380 VideoSendStream* send_stream,
1393 const std::vector<VideoReceiveStream*>& receive_streams) override { 1381 const std::vector<VideoReceiveStream*>& receive_streams) override {
1382 // Encoder initialization should be done in stream construction before
1383 // starting.
1384 EXPECT_TRUE(IsReadyForEncode());
1394 stream_ = send_stream; 1385 stream_ = send_stream;
1395 } 1386 }
1396 1387
1397 void ModifyVideoConfigs( 1388 void ModifyVideoConfigs(
1398 VideoSendStream::Config* send_config, 1389 VideoSendStream::Config* send_config,
1399 std::vector<VideoReceiveStream::Config>* receive_configs, 1390 std::vector<VideoReceiveStream::Config>* receive_configs,
1400 VideoEncoderConfig* encoder_config) override { 1391 VideoEncoderConfig* encoder_config) override {
1401 send_config->encoder_settings.encoder = this; 1392 send_config->encoder_settings.encoder = this;
1402 encoder_config_ = *encoder_config; 1393 encoder_config_ = *encoder_config;
1403 } 1394 }
(...skipping 27 matching lines...) Expand all
1431 EXPECT_EQ(1u, test_encoder.num_releases()); 1422 EXPECT_EQ(1u, test_encoder.num_releases());
1432 } 1423 }
1433 1424
1434 TEST_F(VideoSendStreamTest, EncoderSetupPropagatesCommonEncoderConfigValues) { 1425 TEST_F(VideoSendStreamTest, EncoderSetupPropagatesCommonEncoderConfigValues) {
1435 class VideoCodecConfigObserver : public test::SendTest, 1426 class VideoCodecConfigObserver : public test::SendTest,
1436 public test::FakeEncoder { 1427 public test::FakeEncoder {
1437 public: 1428 public:
1438 VideoCodecConfigObserver() 1429 VideoCodecConfigObserver()
1439 : SendTest(kDefaultTimeoutMs), 1430 : SendTest(kDefaultTimeoutMs),
1440 FakeEncoder(Clock::GetRealTimeClock()), 1431 FakeEncoder(Clock::GetRealTimeClock()),
1441 init_encode_event_(false, false),
1442 num_initializations_(0) {} 1432 num_initializations_(0) {}
1443 1433
1444 private: 1434 private:
1445 void ModifyVideoConfigs( 1435 void ModifyVideoConfigs(
1446 VideoSendStream::Config* send_config, 1436 VideoSendStream::Config* send_config,
1447 std::vector<VideoReceiveStream::Config>* receive_configs, 1437 std::vector<VideoReceiveStream::Config>* receive_configs,
1448 VideoEncoderConfig* encoder_config) override { 1438 VideoEncoderConfig* encoder_config) override {
1449 send_config->encoder_settings.encoder = this; 1439 send_config->encoder_settings.encoder = this;
1450 encoder_config_ = *encoder_config; 1440 encoder_config_ = *encoder_config;
1451 } 1441 }
1452 1442
1453 void OnVideoStreamsCreated( 1443 void OnVideoStreamsCreated(
1454 VideoSendStream* send_stream, 1444 VideoSendStream* send_stream,
1455 const std::vector<VideoReceiveStream*>& receive_streams) override { 1445 const std::vector<VideoReceiveStream*>& receive_streams) override {
1456 stream_ = send_stream; 1446 stream_ = send_stream;
1457 } 1447 }
1458 1448
1459 int32_t InitEncode(const VideoCodec* config, 1449 int32_t InitEncode(const VideoCodec* config,
1460 int32_t number_of_cores, 1450 int32_t number_of_cores,
1461 size_t max_payload_size) override { 1451 size_t max_payload_size) override {
1462 if (num_initializations_ == 0) { 1452 if (num_initializations_ == 0) {
1463 // Verify default values. 1453 // Verify default values.
1464 EXPECT_EQ(kRealtimeVideo, config->mode); 1454 EXPECT_EQ(kRealtimeVideo, config->mode);
1465 } else { 1455 } else {
1466 // Verify that changed values are propagated. 1456 // Verify that changed values are propagated.
1467 EXPECT_EQ(kScreensharing, config->mode); 1457 EXPECT_EQ(kScreensharing, config->mode);
1468 } 1458 }
1469 ++num_initializations_; 1459 ++num_initializations_;
1470 init_encode_event_.Set();
1471 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); 1460 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size);
1472 } 1461 }
1473 1462
1474 void PerformTest() override { 1463 void PerformTest() override {
1475 EXPECT_TRUE(init_encode_event_.Wait(kDefaultTimeoutMs));
1476 EXPECT_EQ(1u, num_initializations_) << "VideoEncoder not initialized."; 1464 EXPECT_EQ(1u, num_initializations_) << "VideoEncoder not initialized.";
1477 1465
1478 encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen; 1466 encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen;
1479 stream_->ReconfigureVideoEncoder(encoder_config_); 1467 stream_->ReconfigureVideoEncoder(encoder_config_);
1480 EXPECT_TRUE(init_encode_event_.Wait(kDefaultTimeoutMs));
1481 EXPECT_EQ(2u, num_initializations_) 1468 EXPECT_EQ(2u, num_initializations_)
1482 << "ReconfigureVideoEncoder did not reinitialize the encoder with " 1469 << "ReconfigureVideoEncoder did not reinitialize the encoder with "
1483 "new encoder settings."; 1470 "new encoder settings.";
1484 } 1471 }
1485 1472
1486 rtc::Event init_encode_event_;
1487 size_t num_initializations_; 1473 size_t num_initializations_;
1488 VideoSendStream* stream_; 1474 VideoSendStream* stream_;
1489 VideoEncoderConfig encoder_config_; 1475 VideoEncoderConfig encoder_config_;
1490 } test; 1476 } test;
1491 1477
1492 RunBaseTest(&test); 1478 RunBaseTest(&test);
1493 } 1479 }
1494 1480
1495 static const size_t kVideoCodecConfigObserverNumberOfTemporalLayers = 4; 1481 static const size_t kVideoCodecConfigObserverNumberOfTemporalLayers = 4;
1496 template <typename T> 1482 template <typename T>
1497 class VideoCodecConfigObserver : public test::SendTest, 1483 class VideoCodecConfigObserver : public test::SendTest,
1498 public test::FakeEncoder { 1484 public test::FakeEncoder {
1499 public: 1485 public:
1500 VideoCodecConfigObserver(VideoCodecType video_codec_type, 1486 VideoCodecConfigObserver(VideoCodecType video_codec_type,
1501 const char* codec_name) 1487 const char* codec_name)
1502 : SendTest(VideoSendStreamTest::kDefaultTimeoutMs), 1488 : SendTest(VideoSendStreamTest::kDefaultTimeoutMs),
1503 FakeEncoder(Clock::GetRealTimeClock()), 1489 FakeEncoder(Clock::GetRealTimeClock()),
1504 video_codec_type_(video_codec_type), 1490 video_codec_type_(video_codec_type),
1505 codec_name_(codec_name), 1491 codec_name_(codec_name),
1506 init_encode_event_(false, false),
1507 num_initializations_(0) { 1492 num_initializations_(0) {
1508 memset(&encoder_settings_, 0, sizeof(encoder_settings_)); 1493 memset(&encoder_settings_, 0, sizeof(encoder_settings_));
1509 } 1494 }
1510 1495
1511 private: 1496 private:
1512 void ModifyVideoConfigs( 1497 void ModifyVideoConfigs(
1513 VideoSendStream::Config* send_config, 1498 VideoSendStream::Config* send_config,
1514 std::vector<VideoReceiveStream::Config>* receive_configs, 1499 std::vector<VideoReceiveStream::Config>* receive_configs,
1515 VideoEncoderConfig* encoder_config) override { 1500 VideoEncoderConfig* encoder_config) override {
1516 send_config->encoder_settings.encoder = this; 1501 send_config->encoder_settings.encoder = this;
(...skipping 13 matching lines...) Expand all
1530 const std::vector<VideoReceiveStream*>& receive_streams) override { 1515 const std::vector<VideoReceiveStream*>& receive_streams) override {
1531 stream_ = send_stream; 1516 stream_ = send_stream;
1532 } 1517 }
1533 1518
1534 int32_t InitEncode(const VideoCodec* config, 1519 int32_t InitEncode(const VideoCodec* config,
1535 int32_t number_of_cores, 1520 int32_t number_of_cores,
1536 size_t max_payload_size) override { 1521 size_t max_payload_size) override {
1537 EXPECT_EQ(video_codec_type_, config->codecType); 1522 EXPECT_EQ(video_codec_type_, config->codecType);
1538 VerifyCodecSpecifics(*config); 1523 VerifyCodecSpecifics(*config);
1539 ++num_initializations_; 1524 ++num_initializations_;
1540 init_encode_event_.Set();
1541 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); 1525 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size);
1542 } 1526 }
1543 1527
1544 void VerifyCodecSpecifics(const VideoCodec& config) const; 1528 void VerifyCodecSpecifics(const VideoCodec& config) const;
1545 1529
1546 void PerformTest() override { 1530 void PerformTest() override {
1547 EXPECT_TRUE( 1531 EXPECT_EQ(1u, num_initializations_) << "VideoEncoder not initialized.";
1548 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
1549 ASSERT_EQ(1u, num_initializations_) << "VideoEncoder not initialized.";
1550 1532
1551 encoder_settings_.frameDroppingOn = true; 1533 encoder_settings_.frameDroppingOn = true;
1552 stream_->ReconfigureVideoEncoder(encoder_config_); 1534 stream_->ReconfigureVideoEncoder(encoder_config_);
1553 ASSERT_TRUE(
1554 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
1555 EXPECT_EQ(2u, num_initializations_) 1535 EXPECT_EQ(2u, num_initializations_)
1556 << "ReconfigureVideoEncoder did not reinitialize the encoder with " 1536 << "ReconfigureVideoEncoder did not reinitialize the encoder with "
1557 "new encoder settings."; 1537 "new encoder settings.";
1558 } 1538 }
1559 1539
1560 int32_t Encode(const VideoFrame& input_image, 1540 int32_t Encode(const VideoFrame& input_image,
1561 const CodecSpecificInfo* codec_specific_info, 1541 const CodecSpecificInfo* codec_specific_info,
1562 const std::vector<FrameType>* frame_types) override { 1542 const std::vector<FrameType>* frame_types) override {
1563 // Silently skip the encode, FakeEncoder::Encode doesn't produce VP8. 1543 // Silently skip the encode, FakeEncoder::Encode doesn't produce VP8.
1564 return 0; 1544 return 0;
1565 } 1545 }
1566 1546
1567 T encoder_settings_; 1547 T encoder_settings_;
1568 const VideoCodecType video_codec_type_; 1548 const VideoCodecType video_codec_type_;
1569 const char* const codec_name_; 1549 const char* const codec_name_;
1570 rtc::Event init_encode_event_;
1571 size_t num_initializations_; 1550 size_t num_initializations_;
1572 VideoSendStream* stream_; 1551 VideoSendStream* stream_;
1573 VideoEncoderConfig encoder_config_; 1552 VideoEncoderConfig encoder_config_;
1574 }; 1553 };
1575 1554
1576 template <> 1555 template <>
1577 void VideoCodecConfigObserver<VideoCodecH264>::VerifyCodecSpecifics( 1556 void VideoCodecConfigObserver<VideoCodecH264>::VerifyCodecSpecifics(
1578 const VideoCodec& config) const { 1557 const VideoCodec& config) const {
1579 EXPECT_EQ(0, memcmp(&config.codecSpecific.H264, &encoder_settings_, 1558 EXPECT_EQ(0, memcmp(&config.codecSpecific.H264, &encoder_settings_,
1580 sizeof(encoder_settings_))); 1559 sizeof(encoder_settings_)));
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
1749 static const int kLowerMaxBitrateKbps = 312; 1728 static const int kLowerMaxBitrateKbps = 312;
1750 static const int kMaxBitrateKbps = 413; 1729 static const int kMaxBitrateKbps = 413;
1751 static const int kIncreasedStartBitrateKbps = 451; 1730 static const int kIncreasedStartBitrateKbps = 451;
1752 static const int kIncreasedMaxBitrateKbps = 597; 1731 static const int kIncreasedMaxBitrateKbps = 597;
1753 class EncoderBitrateThresholdObserver : public test::SendTest, 1732 class EncoderBitrateThresholdObserver : public test::SendTest,
1754 public test::FakeEncoder { 1733 public test::FakeEncoder {
1755 public: 1734 public:
1756 EncoderBitrateThresholdObserver() 1735 EncoderBitrateThresholdObserver()
1757 : SendTest(kDefaultTimeoutMs), 1736 : SendTest(kDefaultTimeoutMs),
1758 FakeEncoder(Clock::GetRealTimeClock()), 1737 FakeEncoder(Clock::GetRealTimeClock()),
1759 init_encode_event_(false, false),
1760 num_initializations_(0) {} 1738 num_initializations_(0) {}
1761 1739
1762 private: 1740 private:
1763 int32_t InitEncode(const VideoCodec* codecSettings, 1741 int32_t InitEncode(const VideoCodec* codecSettings,
1764 int32_t numberOfCores, 1742 int32_t numberOfCores,
1765 size_t maxPayloadSize) override { 1743 size_t maxPayloadSize) override {
1766 if (num_initializations_ == 0) { 1744 if (num_initializations_ == 0) {
1767 EXPECT_EQ(static_cast<unsigned int>(kMinBitrateKbps), 1745 EXPECT_EQ(static_cast<unsigned int>(kMinBitrateKbps),
1768 codecSettings->minBitrate); 1746 codecSettings->minBitrate);
1769 EXPECT_EQ(static_cast<unsigned int>(kStartBitrateKbps), 1747 EXPECT_EQ(static_cast<unsigned int>(kStartBitrateKbps),
1770 codecSettings->startBitrate); 1748 codecSettings->startBitrate);
1771 EXPECT_EQ(static_cast<unsigned int>(kMaxBitrateKbps), 1749 EXPECT_EQ(static_cast<unsigned int>(kMaxBitrateKbps),
1772 codecSettings->maxBitrate); 1750 codecSettings->maxBitrate);
1773 observation_complete_.Set(); 1751 observation_complete_.Set();
1774 } else if (num_initializations_ == 1) { 1752 } else if (num_initializations_ == 1) {
1775 EXPECT_EQ(static_cast<unsigned int>(kLowerMaxBitrateKbps), 1753 EXPECT_EQ(static_cast<unsigned int>(kLowerMaxBitrateKbps),
1776 codecSettings->maxBitrate); 1754 codecSettings->maxBitrate);
1777 // The start bitrate should be kept (-1) and capped to the max bitrate. 1755 // The start bitrate should be kept (-1) and capped to the max bitrate.
1778 // Since this is not an end-to-end call no receiver should have been 1756 // Since this is not an end-to-end call no receiver should have been
1779 // returning a REMB that could lower this estimate. 1757 // returning a REMB that could lower this estimate.
1780 EXPECT_EQ(codecSettings->startBitrate, codecSettings->maxBitrate); 1758 EXPECT_EQ(codecSettings->startBitrate, codecSettings->maxBitrate);
1781 } else if (num_initializations_ == 2) { 1759 } else if (num_initializations_ == 2) {
1782 EXPECT_EQ(static_cast<unsigned int>(kIncreasedMaxBitrateKbps), 1760 EXPECT_EQ(static_cast<unsigned int>(kIncreasedMaxBitrateKbps),
1783 codecSettings->maxBitrate); 1761 codecSettings->maxBitrate);
1784 EXPECT_EQ(static_cast<unsigned int>(kIncreasedStartBitrateKbps), 1762 EXPECT_EQ(static_cast<unsigned int>(kIncreasedStartBitrateKbps),
1785 codecSettings->startBitrate); 1763 codecSettings->startBitrate);
1786 } 1764 }
1787 ++num_initializations_; 1765 ++num_initializations_;
1788 init_encode_event_.Set();
1789 return FakeEncoder::InitEncode(codecSettings, numberOfCores, 1766 return FakeEncoder::InitEncode(codecSettings, numberOfCores,
1790 maxPayloadSize); 1767 maxPayloadSize);
1791 } 1768 }
1792 1769
1793 Call::Config GetSenderCallConfig() override { 1770 Call::Config GetSenderCallConfig() override {
1794 Call::Config config; 1771 Call::Config config;
1795 config.bitrate_config.min_bitrate_bps = kMinBitrateKbps * 1000; 1772 config.bitrate_config.min_bitrate_bps = kMinBitrateKbps * 1000;
1796 config.bitrate_config.start_bitrate_bps = kStartBitrateKbps * 1000; 1773 config.bitrate_config.start_bitrate_bps = kStartBitrateKbps * 1000;
1797 config.bitrate_config.max_bitrate_bps = kMaxBitrateKbps * 1000; 1774 config.bitrate_config.max_bitrate_bps = kMaxBitrateKbps * 1000;
1798 return config; 1775 return config;
(...skipping 15 matching lines...) Expand all
1814 call_ = sender_call; 1791 call_ = sender_call;
1815 } 1792 }
1816 1793
1817 void OnVideoStreamsCreated( 1794 void OnVideoStreamsCreated(
1818 VideoSendStream* send_stream, 1795 VideoSendStream* send_stream,
1819 const std::vector<VideoReceiveStream*>& receive_streams) override { 1796 const std::vector<VideoReceiveStream*>& receive_streams) override {
1820 send_stream_ = send_stream; 1797 send_stream_ = send_stream;
1821 } 1798 }
1822 1799
1823 void PerformTest() override { 1800 void PerformTest() override {
1824 ASSERT_TRUE(
1825 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs))
1826 << "Timed out while waiting encoder to be configured.";
1827 Call::Config::BitrateConfig bitrate_config; 1801 Call::Config::BitrateConfig bitrate_config;
1828 bitrate_config.start_bitrate_bps = kIncreasedStartBitrateKbps * 1000; 1802 bitrate_config.start_bitrate_bps = kIncreasedStartBitrateKbps * 1000;
1829 bitrate_config.max_bitrate_bps = kIncreasedMaxBitrateKbps * 1000; 1803 bitrate_config.max_bitrate_bps = kIncreasedMaxBitrateKbps * 1000;
1830 call_->SetBitrateConfig(bitrate_config); 1804 call_->SetBitrateConfig(bitrate_config);
1831 EXPECT_TRUE(Wait()) 1805 EXPECT_TRUE(Wait())
1832 << "Timed out while waiting encoder to be configured."; 1806 << "Timed out while waiting encoder to be configured.";
1833 encoder_config_.streams[0].min_bitrate_bps = 0; 1807 encoder_config_.streams[0].min_bitrate_bps = 0;
1834 encoder_config_.streams[0].max_bitrate_bps = kLowerMaxBitrateKbps * 1000; 1808 encoder_config_.streams[0].max_bitrate_bps = kLowerMaxBitrateKbps * 1000;
1835 send_stream_->ReconfigureVideoEncoder(encoder_config_); 1809 send_stream_->ReconfigureVideoEncoder(encoder_config_);
1836 ASSERT_TRUE(
1837 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
1838 EXPECT_EQ(2, num_initializations_) 1810 EXPECT_EQ(2, num_initializations_)
1839 << "Encoder should have been reconfigured with the new value."; 1811 << "Encoder should have been reconfigured with the new value.";
1840 encoder_config_.streams[0].target_bitrate_bps = 1812 encoder_config_.streams[0].target_bitrate_bps =
1841 encoder_config_.streams[0].min_bitrate_bps; 1813 encoder_config_.streams[0].min_bitrate_bps;
1842 encoder_config_.streams[0].max_bitrate_bps = 1814 encoder_config_.streams[0].max_bitrate_bps =
1843 kIncreasedMaxBitrateKbps * 1000; 1815 kIncreasedMaxBitrateKbps * 1000;
1844 send_stream_->ReconfigureVideoEncoder(encoder_config_); 1816 send_stream_->ReconfigureVideoEncoder(encoder_config_);
1845 ASSERT_TRUE(
1846 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
1847 EXPECT_EQ(3, num_initializations_) 1817 EXPECT_EQ(3, num_initializations_)
1848 << "Encoder should have been reconfigured with the new value."; 1818 << "Encoder should have been reconfigured with the new value.";
1849 } 1819 }
1850 1820
1851 rtc::Event init_encode_event_;
1852 int num_initializations_; 1821 int num_initializations_;
1853 webrtc::Call* call_; 1822 webrtc::Call* call_;
1854 webrtc::VideoSendStream* send_stream_; 1823 webrtc::VideoSendStream* send_stream_;
1855 webrtc::VideoEncoderConfig encoder_config_; 1824 webrtc::VideoEncoderConfig encoder_config_;
1856 } test; 1825 } test;
1857 1826
1858 RunBaseTest(&test); 1827 RunBaseTest(&test);
1859 } 1828 }
1860 1829
1861 TEST_F(VideoSendStreamTest, ReportsSentResolution) { 1830 TEST_F(VideoSendStreamTest, ReportsSentResolution) {
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
2344 observation_complete_.Set(); 2313 observation_complete_.Set();
2345 } 2314 }
2346 } 2315 }
2347 } test; 2316 } test;
2348 2317
2349 RunBaseTest(&test); 2318 RunBaseTest(&test);
2350 } 2319 }
2351 #endif 2320 #endif
2352 2321
2353 } // namespace webrtc 2322 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/video_send_stream.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698