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

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

Issue 1600973002: Initialize VideoEncoder objects asynchronously. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rename new_codec_settings Created 4 years, 11 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') | webrtc/video/vie_channel.h » ('j') | 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 1041 matching lines...) Expand 10 before | Expand all | Expand 10 after
1052 bool bitrate_capped_; 1052 bool bitrate_capped_;
1053 } test; 1053 } test;
1054 1054
1055 RunBaseTest(&test); 1055 RunBaseTest(&test);
1056 } 1056 }
1057 1057
1058 TEST_F(VideoSendStreamTest, CanReconfigureToUseStartBitrateAbovePreviousMax) { 1058 TEST_F(VideoSendStreamTest, CanReconfigureToUseStartBitrateAbovePreviousMax) {
1059 class StartBitrateObserver : public test::FakeEncoder { 1059 class StartBitrateObserver : public test::FakeEncoder {
1060 public: 1060 public:
1061 StartBitrateObserver() 1061 StartBitrateObserver()
1062 : FakeEncoder(Clock::GetRealTimeClock()), start_bitrate_kbps_(0) {} 1062 : FakeEncoder(Clock::GetRealTimeClock()),
1063 start_bitrate_changed_(false, false),
1064 start_bitrate_kbps_(0) {}
1065
1063 int32_t InitEncode(const VideoCodec* config, 1066 int32_t InitEncode(const VideoCodec* config,
1064 int32_t number_of_cores, 1067 int32_t number_of_cores,
1065 size_t max_payload_size) override { 1068 size_t max_payload_size) override {
1066 rtc::CritScope lock(&crit_); 1069 rtc::CritScope lock(&crit_);
1067 start_bitrate_kbps_ = config->startBitrate; 1070 start_bitrate_kbps_ = config->startBitrate;
1071 start_bitrate_changed_.Set();
1068 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); 1072 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size);
1069 } 1073 }
1070 1074
1071 int32_t SetRates(uint32_t new_target_bitrate, uint32_t framerate) override { 1075 int32_t SetRates(uint32_t new_target_bitrate, uint32_t framerate) override {
1072 rtc::CritScope lock(&crit_); 1076 rtc::CritScope lock(&crit_);
1073 start_bitrate_kbps_ = new_target_bitrate; 1077 start_bitrate_kbps_ = new_target_bitrate;
1078 start_bitrate_changed_.Set();
1074 return FakeEncoder::SetRates(new_target_bitrate, framerate); 1079 return FakeEncoder::SetRates(new_target_bitrate, framerate);
1075 } 1080 }
1076 1081
1077 int GetStartBitrateKbps() const { 1082 int GetStartBitrateKbps() const {
1078 rtc::CritScope lock(&crit_); 1083 rtc::CritScope lock(&crit_);
1079 return start_bitrate_kbps_; 1084 return start_bitrate_kbps_;
1080 } 1085 }
1081 1086
1087 bool WaitForStartBitrate() {
1088 return start_bitrate_changed_.Wait(
1089 VideoSendStreamTest::kDefaultTimeoutMs);
1090 }
1091
1082 private: 1092 private:
1083 mutable rtc::CriticalSection crit_; 1093 mutable rtc::CriticalSection crit_;
1094 rtc::Event start_bitrate_changed_;
1084 int start_bitrate_kbps_ GUARDED_BY(crit_); 1095 int start_bitrate_kbps_ GUARDED_BY(crit_);
1085 }; 1096 };
1086 1097
1087 CreateSenderCall(Call::Config()); 1098 CreateSenderCall(Call::Config());
1088 1099
1089 test::NullTransport transport; 1100 test::NullTransport transport;
1090 CreateSendConfig(1, 0, &transport); 1101 CreateSendConfig(1, 0, &transport);
1091 1102
1092 Call::Config::BitrateConfig bitrate_config; 1103 Call::Config::BitrateConfig bitrate_config;
1093 bitrate_config.start_bitrate_bps = 1104 bitrate_config.start_bitrate_bps =
1094 2 * video_encoder_config_.streams[0].max_bitrate_bps; 1105 2 * video_encoder_config_.streams[0].max_bitrate_bps;
1095 sender_call_->SetBitrateConfig(bitrate_config); 1106 sender_call_->SetBitrateConfig(bitrate_config);
1096 1107
1097 StartBitrateObserver encoder; 1108 StartBitrateObserver encoder;
1098 video_send_config_.encoder_settings.encoder = &encoder; 1109 video_send_config_.encoder_settings.encoder = &encoder;
1099 1110
1100 CreateVideoStreams(); 1111 CreateVideoStreams();
1101 1112
1113 EXPECT_TRUE(encoder.WaitForStartBitrate());
1102 EXPECT_EQ(video_encoder_config_.streams[0].max_bitrate_bps / 1000, 1114 EXPECT_EQ(video_encoder_config_.streams[0].max_bitrate_bps / 1000,
1103 encoder.GetStartBitrateKbps()); 1115 encoder.GetStartBitrateKbps());
1104 1116
1105 video_encoder_config_.streams[0].max_bitrate_bps = 1117 video_encoder_config_.streams[0].max_bitrate_bps =
1106 2 * bitrate_config.start_bitrate_bps; 1118 2 * bitrate_config.start_bitrate_bps;
1107 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_); 1119 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_);
1108 1120
1109 // New bitrate should be reconfigured above the previous max. As there's no 1121 // New bitrate should be reconfigured above the previous max. As there's no
1110 // network connection this shouldn't be flaky, as no bitrate should've been 1122 // network connection this shouldn't be flaky, as no bitrate should've been
1111 // reported in between. 1123 // reported in between.
1124 EXPECT_TRUE(encoder.WaitForStartBitrate());
1112 EXPECT_EQ(bitrate_config.start_bitrate_bps / 1000, 1125 EXPECT_EQ(bitrate_config.start_bitrate_bps / 1000,
1113 encoder.GetStartBitrateKbps()); 1126 encoder.GetStartBitrateKbps());
1114 1127
1115 DestroyStreams(); 1128 DestroyStreams();
1116 } 1129 }
1117 1130
1118 TEST_F(VideoSendStreamTest, CapturesTextureAndVideoFrames) { 1131 TEST_F(VideoSendStreamTest, CapturesTextureAndVideoFrames) {
1119 class FrameObserver : public I420FrameCallback { 1132 class FrameObserver : public I420FrameCallback {
1120 public: 1133 public:
1121 FrameObserver() : output_frame_event_(false, false) {} 1134 FrameObserver() : output_frame_event_(false, false) {}
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
1317 } 1330 }
1318 1331
1319 int32_t SetRates(uint32_t newBitRate, uint32_t frameRate) override { 1332 int32_t SetRates(uint32_t newBitRate, uint32_t frameRate) override {
1320 EXPECT_TRUE(IsReadyForEncode()); 1333 EXPECT_TRUE(IsReadyForEncode());
1321 return 0; 1334 return 0;
1322 } 1335 }
1323 1336
1324 void OnVideoStreamsCreated( 1337 void OnVideoStreamsCreated(
1325 VideoSendStream* send_stream, 1338 VideoSendStream* send_stream,
1326 const std::vector<VideoReceiveStream*>& receive_streams) override { 1339 const std::vector<VideoReceiveStream*>& receive_streams) override {
1327 // Encoder initialization should be done in stream construction before
1328 // starting.
1329 EXPECT_TRUE(IsReadyForEncode());
1330 stream_ = send_stream; 1340 stream_ = send_stream;
1331 } 1341 }
1332 1342
1333 void ModifyVideoConfigs( 1343 void ModifyVideoConfigs(
1334 VideoSendStream::Config* send_config, 1344 VideoSendStream::Config* send_config,
1335 std::vector<VideoReceiveStream::Config>* receive_configs, 1345 std::vector<VideoReceiveStream::Config>* receive_configs,
1336 VideoEncoderConfig* encoder_config) override { 1346 VideoEncoderConfig* encoder_config) override {
1337 send_config->encoder_settings.encoder = this; 1347 send_config->encoder_settings.encoder = this;
1338 encoder_config_ = *encoder_config; 1348 encoder_config_ = *encoder_config;
1339 } 1349 }
(...skipping 27 matching lines...) Expand all
1367 EXPECT_EQ(1u, test_encoder.num_releases()); 1377 EXPECT_EQ(1u, test_encoder.num_releases());
1368 } 1378 }
1369 1379
1370 TEST_F(VideoSendStreamTest, EncoderSetupPropagatesCommonEncoderConfigValues) { 1380 TEST_F(VideoSendStreamTest, EncoderSetupPropagatesCommonEncoderConfigValues) {
1371 class VideoCodecConfigObserver : public test::SendTest, 1381 class VideoCodecConfigObserver : public test::SendTest,
1372 public test::FakeEncoder { 1382 public test::FakeEncoder {
1373 public: 1383 public:
1374 VideoCodecConfigObserver() 1384 VideoCodecConfigObserver()
1375 : SendTest(kDefaultTimeoutMs), 1385 : SendTest(kDefaultTimeoutMs),
1376 FakeEncoder(Clock::GetRealTimeClock()), 1386 FakeEncoder(Clock::GetRealTimeClock()),
1387 init_encode_event_(false, false),
1377 num_initializations_(0) {} 1388 num_initializations_(0) {}
1378 1389
1379 private: 1390 private:
1380 void ModifyVideoConfigs( 1391 void ModifyVideoConfigs(
1381 VideoSendStream::Config* send_config, 1392 VideoSendStream::Config* send_config,
1382 std::vector<VideoReceiveStream::Config>* receive_configs, 1393 std::vector<VideoReceiveStream::Config>* receive_configs,
1383 VideoEncoderConfig* encoder_config) override { 1394 VideoEncoderConfig* encoder_config) override {
1384 send_config->encoder_settings.encoder = this; 1395 send_config->encoder_settings.encoder = this;
1385 encoder_config_ = *encoder_config; 1396 encoder_config_ = *encoder_config;
1386 } 1397 }
1387 1398
1388 void OnVideoStreamsCreated( 1399 void OnVideoStreamsCreated(
1389 VideoSendStream* send_stream, 1400 VideoSendStream* send_stream,
1390 const std::vector<VideoReceiveStream*>& receive_streams) override { 1401 const std::vector<VideoReceiveStream*>& receive_streams) override {
1391 stream_ = send_stream; 1402 stream_ = send_stream;
1392 } 1403 }
1393 1404
1394 int32_t InitEncode(const VideoCodec* config, 1405 int32_t InitEncode(const VideoCodec* config,
1395 int32_t number_of_cores, 1406 int32_t number_of_cores,
1396 size_t max_payload_size) override { 1407 size_t max_payload_size) override {
1397 if (num_initializations_ == 0) { 1408 if (num_initializations_ == 0) {
1398 // Verify default values. 1409 // Verify default values.
1399 EXPECT_EQ(kRealtimeVideo, config->mode); 1410 EXPECT_EQ(kRealtimeVideo, config->mode);
1400 } else { 1411 } else {
1401 // Verify that changed values are propagated. 1412 // Verify that changed values are propagated.
1402 EXPECT_EQ(kScreensharing, config->mode); 1413 EXPECT_EQ(kScreensharing, config->mode);
1403 } 1414 }
1404 ++num_initializations_; 1415 ++num_initializations_;
1416 init_encode_event_.Set();
1405 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); 1417 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size);
1406 } 1418 }
1407 1419
1408 void PerformTest() override { 1420 void PerformTest() override {
1421 EXPECT_TRUE(init_encode_event_.Wait(kDefaultTimeoutMs));
1409 EXPECT_EQ(1u, num_initializations_) << "VideoEncoder not initialized."; 1422 EXPECT_EQ(1u, num_initializations_) << "VideoEncoder not initialized.";
1410 1423
1411 encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen; 1424 encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen;
1412 stream_->ReconfigureVideoEncoder(encoder_config_); 1425 stream_->ReconfigureVideoEncoder(encoder_config_);
1426 EXPECT_TRUE(init_encode_event_.Wait(kDefaultTimeoutMs));
1413 EXPECT_EQ(2u, num_initializations_) 1427 EXPECT_EQ(2u, num_initializations_)
1414 << "ReconfigureVideoEncoder did not reinitialize the encoder with " 1428 << "ReconfigureVideoEncoder did not reinitialize the encoder with "
1415 "new encoder settings."; 1429 "new encoder settings.";
1416 } 1430 }
1417 1431
1432 rtc::Event init_encode_event_;
1418 size_t num_initializations_; 1433 size_t num_initializations_;
1419 VideoSendStream* stream_; 1434 VideoSendStream* stream_;
1420 VideoEncoderConfig encoder_config_; 1435 VideoEncoderConfig encoder_config_;
1421 } test; 1436 } test;
1422 1437
1423 RunBaseTest(&test); 1438 RunBaseTest(&test);
1424 } 1439 }
1425 1440
1426 static const size_t kVideoCodecConfigObserverNumberOfTemporalLayers = 4; 1441 static const size_t kVideoCodecConfigObserverNumberOfTemporalLayers = 4;
1427 template <typename T> 1442 template <typename T>
1428 class VideoCodecConfigObserver : public test::SendTest, 1443 class VideoCodecConfigObserver : public test::SendTest,
1429 public test::FakeEncoder { 1444 public test::FakeEncoder {
1430 public: 1445 public:
1431 VideoCodecConfigObserver(VideoCodecType video_codec_type, 1446 VideoCodecConfigObserver(VideoCodecType video_codec_type,
1432 const char* codec_name) 1447 const char* codec_name)
1433 : SendTest(VideoSendStreamTest::kDefaultTimeoutMs), 1448 : SendTest(VideoSendStreamTest::kDefaultTimeoutMs),
1434 FakeEncoder(Clock::GetRealTimeClock()), 1449 FakeEncoder(Clock::GetRealTimeClock()),
1435 video_codec_type_(video_codec_type), 1450 video_codec_type_(video_codec_type),
1436 codec_name_(codec_name), 1451 codec_name_(codec_name),
1452 init_encode_event_(false, false),
1437 num_initializations_(0) { 1453 num_initializations_(0) {
1438 memset(&encoder_settings_, 0, sizeof(encoder_settings_)); 1454 memset(&encoder_settings_, 0, sizeof(encoder_settings_));
1439 } 1455 }
1440 1456
1441 private: 1457 private:
1442 void ModifyVideoConfigs( 1458 void ModifyVideoConfigs(
1443 VideoSendStream::Config* send_config, 1459 VideoSendStream::Config* send_config,
1444 std::vector<VideoReceiveStream::Config>* receive_configs, 1460 std::vector<VideoReceiveStream::Config>* receive_configs,
1445 VideoEncoderConfig* encoder_config) override { 1461 VideoEncoderConfig* encoder_config) override {
1446 send_config->encoder_settings.encoder = this; 1462 send_config->encoder_settings.encoder = this;
(...skipping 13 matching lines...) Expand all
1460 const std::vector<VideoReceiveStream*>& receive_streams) override { 1476 const std::vector<VideoReceiveStream*>& receive_streams) override {
1461 stream_ = send_stream; 1477 stream_ = send_stream;
1462 } 1478 }
1463 1479
1464 int32_t InitEncode(const VideoCodec* config, 1480 int32_t InitEncode(const VideoCodec* config,
1465 int32_t number_of_cores, 1481 int32_t number_of_cores,
1466 size_t max_payload_size) override { 1482 size_t max_payload_size) override {
1467 EXPECT_EQ(video_codec_type_, config->codecType); 1483 EXPECT_EQ(video_codec_type_, config->codecType);
1468 VerifyCodecSpecifics(*config); 1484 VerifyCodecSpecifics(*config);
1469 ++num_initializations_; 1485 ++num_initializations_;
1486 init_encode_event_.Set();
1470 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); 1487 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size);
1471 } 1488 }
1472 1489
1473 void VerifyCodecSpecifics(const VideoCodec& config) const; 1490 void VerifyCodecSpecifics(const VideoCodec& config) const;
1474 1491
1475 void PerformTest() override { 1492 void PerformTest() override {
1476 EXPECT_EQ(1u, num_initializations_) << "VideoEncoder not initialized."; 1493 EXPECT_TRUE(
1494 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
1495 ASSERT_EQ(1u, num_initializations_) << "VideoEncoder not initialized.";
1477 1496
1478 encoder_settings_.frameDroppingOn = true; 1497 encoder_settings_.frameDroppingOn = true;
1479 stream_->ReconfigureVideoEncoder(encoder_config_); 1498 stream_->ReconfigureVideoEncoder(encoder_config_);
1499 ASSERT_TRUE(
1500 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
1480 EXPECT_EQ(2u, num_initializations_) 1501 EXPECT_EQ(2u, num_initializations_)
1481 << "ReconfigureVideoEncoder did not reinitialize the encoder with " 1502 << "ReconfigureVideoEncoder did not reinitialize the encoder with "
1482 "new encoder settings."; 1503 "new encoder settings.";
1483 } 1504 }
1484 1505
1485 int32_t Encode(const VideoFrame& input_image, 1506 int32_t Encode(const VideoFrame& input_image,
1486 const CodecSpecificInfo* codec_specific_info, 1507 const CodecSpecificInfo* codec_specific_info,
1487 const std::vector<FrameType>* frame_types) override { 1508 const std::vector<FrameType>* frame_types) override {
1488 // Silently skip the encode, FakeEncoder::Encode doesn't produce VP8. 1509 // Silently skip the encode, FakeEncoder::Encode doesn't produce VP8.
1489 return 0; 1510 return 0;
1490 } 1511 }
1491 1512
1492 T encoder_settings_; 1513 T encoder_settings_;
1493 const VideoCodecType video_codec_type_; 1514 const VideoCodecType video_codec_type_;
1494 const char* const codec_name_; 1515 const char* const codec_name_;
1516 rtc::Event init_encode_event_;
1495 size_t num_initializations_; 1517 size_t num_initializations_;
1496 VideoSendStream* stream_; 1518 VideoSendStream* stream_;
1497 VideoEncoderConfig encoder_config_; 1519 VideoEncoderConfig encoder_config_;
1498 }; 1520 };
1499 1521
1500 template <> 1522 template <>
1501 void VideoCodecConfigObserver<VideoCodecH264>::VerifyCodecSpecifics( 1523 void VideoCodecConfigObserver<VideoCodecH264>::VerifyCodecSpecifics(
1502 const VideoCodec& config) const { 1524 const VideoCodec& config) const {
1503 EXPECT_EQ(0, memcmp(&config.codecSpecific.H264, &encoder_settings_, 1525 EXPECT_EQ(0, memcmp(&config.codecSpecific.H264, &encoder_settings_,
1504 sizeof(encoder_settings_))); 1526 sizeof(encoder_settings_)));
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
1673 static const int kLowerMaxBitrateKbps = 312; 1695 static const int kLowerMaxBitrateKbps = 312;
1674 static const int kMaxBitrateKbps = 413; 1696 static const int kMaxBitrateKbps = 413;
1675 static const int kIncreasedStartBitrateKbps = 451; 1697 static const int kIncreasedStartBitrateKbps = 451;
1676 static const int kIncreasedMaxBitrateKbps = 597; 1698 static const int kIncreasedMaxBitrateKbps = 597;
1677 class EncoderBitrateThresholdObserver : public test::SendTest, 1699 class EncoderBitrateThresholdObserver : public test::SendTest,
1678 public test::FakeEncoder { 1700 public test::FakeEncoder {
1679 public: 1701 public:
1680 EncoderBitrateThresholdObserver() 1702 EncoderBitrateThresholdObserver()
1681 : SendTest(kDefaultTimeoutMs), 1703 : SendTest(kDefaultTimeoutMs),
1682 FakeEncoder(Clock::GetRealTimeClock()), 1704 FakeEncoder(Clock::GetRealTimeClock()),
1705 init_encode_event_(false, false),
1683 num_initializations_(0) {} 1706 num_initializations_(0) {}
1684 1707
1685 private: 1708 private:
1686 int32_t InitEncode(const VideoCodec* codecSettings, 1709 int32_t InitEncode(const VideoCodec* codecSettings,
1687 int32_t numberOfCores, 1710 int32_t numberOfCores,
1688 size_t maxPayloadSize) override { 1711 size_t maxPayloadSize) override {
1689 if (num_initializations_ == 0) { 1712 if (num_initializations_ == 0) {
1690 EXPECT_EQ(static_cast<unsigned int>(kMinBitrateKbps), 1713 EXPECT_EQ(static_cast<unsigned int>(kMinBitrateKbps),
1691 codecSettings->minBitrate); 1714 codecSettings->minBitrate);
1692 EXPECT_EQ(static_cast<unsigned int>(kStartBitrateKbps), 1715 EXPECT_EQ(static_cast<unsigned int>(kStartBitrateKbps),
1693 codecSettings->startBitrate); 1716 codecSettings->startBitrate);
1694 EXPECT_EQ(static_cast<unsigned int>(kMaxBitrateKbps), 1717 EXPECT_EQ(static_cast<unsigned int>(kMaxBitrateKbps),
1695 codecSettings->maxBitrate); 1718 codecSettings->maxBitrate);
1696 observation_complete_.Set();
1697 } else if (num_initializations_ == 1) { 1719 } else if (num_initializations_ == 1) {
1698 EXPECT_EQ(static_cast<unsigned int>(kLowerMaxBitrateKbps), 1720 EXPECT_EQ(static_cast<unsigned int>(kLowerMaxBitrateKbps),
1699 codecSettings->maxBitrate); 1721 codecSettings->maxBitrate);
1700 // The start bitrate should be kept (-1) and capped to the max bitrate. 1722 // The start bitrate should be kept (-1) and capped to the max bitrate.
1701 // Since this is not an end-to-end call no receiver should have been 1723 // Since this is not an end-to-end call no receiver should have been
1702 // returning a REMB that could lower this estimate. 1724 // returning a REMB that could lower this estimate.
1703 EXPECT_EQ(codecSettings->startBitrate, codecSettings->maxBitrate); 1725 EXPECT_EQ(codecSettings->startBitrate, codecSettings->maxBitrate);
1704 } else if (num_initializations_ == 2) { 1726 } else if (num_initializations_ == 2) {
1705 EXPECT_EQ(static_cast<unsigned int>(kIncreasedMaxBitrateKbps), 1727 EXPECT_EQ(static_cast<unsigned int>(kIncreasedMaxBitrateKbps),
1706 codecSettings->maxBitrate); 1728 codecSettings->maxBitrate);
1707 EXPECT_EQ(static_cast<unsigned int>(kIncreasedStartBitrateKbps), 1729 EXPECT_EQ(static_cast<unsigned int>(kIncreasedStartBitrateKbps),
1708 codecSettings->startBitrate); 1730 codecSettings->startBitrate);
1709 } 1731 }
1710 ++num_initializations_; 1732 ++num_initializations_;
1733 init_encode_event_.Set();
1711 return FakeEncoder::InitEncode(codecSettings, numberOfCores, 1734 return FakeEncoder::InitEncode(codecSettings, numberOfCores,
1712 maxPayloadSize); 1735 maxPayloadSize);
1713 } 1736 }
1714 1737
1715 Call::Config GetSenderCallConfig() override { 1738 Call::Config GetSenderCallConfig() override {
1716 Call::Config config; 1739 Call::Config config;
1717 config.bitrate_config.min_bitrate_bps = kMinBitrateKbps * 1000; 1740 config.bitrate_config.min_bitrate_bps = kMinBitrateKbps * 1000;
1718 config.bitrate_config.start_bitrate_bps = kStartBitrateKbps * 1000; 1741 config.bitrate_config.start_bitrate_bps = kStartBitrateKbps * 1000;
1719 config.bitrate_config.max_bitrate_bps = kMaxBitrateKbps * 1000; 1742 config.bitrate_config.max_bitrate_bps = kMaxBitrateKbps * 1000;
1720 return config; 1743 return config;
(...skipping 15 matching lines...) Expand all
1736 call_ = sender_call; 1759 call_ = sender_call;
1737 } 1760 }
1738 1761
1739 void OnVideoStreamsCreated( 1762 void OnVideoStreamsCreated(
1740 VideoSendStream* send_stream, 1763 VideoSendStream* send_stream,
1741 const std::vector<VideoReceiveStream*>& receive_streams) override { 1764 const std::vector<VideoReceiveStream*>& receive_streams) override {
1742 send_stream_ = send_stream; 1765 send_stream_ = send_stream;
1743 } 1766 }
1744 1767
1745 void PerformTest() override { 1768 void PerformTest() override {
1769 ASSERT_TRUE(
1770 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs))
1771 << "Timed out while waiting encoder to be configured.";
1746 Call::Config::BitrateConfig bitrate_config; 1772 Call::Config::BitrateConfig bitrate_config;
1747 bitrate_config.start_bitrate_bps = kIncreasedStartBitrateKbps * 1000; 1773 bitrate_config.start_bitrate_bps = kIncreasedStartBitrateKbps * 1000;
1748 bitrate_config.max_bitrate_bps = kIncreasedMaxBitrateKbps * 1000; 1774 bitrate_config.max_bitrate_bps = kIncreasedMaxBitrateKbps * 1000;
1749 call_->SetBitrateConfig(bitrate_config); 1775 call_->SetBitrateConfig(bitrate_config);
1750 EXPECT_TRUE(Wait())
1751 << "Timed out while waiting encoder to be configured.";
1752 encoder_config_.streams[0].min_bitrate_bps = 0; 1776 encoder_config_.streams[0].min_bitrate_bps = 0;
1753 encoder_config_.streams[0].max_bitrate_bps = kLowerMaxBitrateKbps * 1000; 1777 encoder_config_.streams[0].max_bitrate_bps = kLowerMaxBitrateKbps * 1000;
1754 send_stream_->ReconfigureVideoEncoder(encoder_config_); 1778 send_stream_->ReconfigureVideoEncoder(encoder_config_);
1779 ASSERT_TRUE(
1780 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
1755 EXPECT_EQ(2, num_initializations_) 1781 EXPECT_EQ(2, num_initializations_)
1756 << "Encoder should have been reconfigured with the new value."; 1782 << "Encoder should have been reconfigured with the new value.";
1757 encoder_config_.streams[0].target_bitrate_bps = 1783 encoder_config_.streams[0].target_bitrate_bps =
1758 encoder_config_.streams[0].min_bitrate_bps; 1784 encoder_config_.streams[0].min_bitrate_bps;
1759 encoder_config_.streams[0].max_bitrate_bps = 1785 encoder_config_.streams[0].max_bitrate_bps =
1760 kIncreasedMaxBitrateKbps * 1000; 1786 kIncreasedMaxBitrateKbps * 1000;
1761 send_stream_->ReconfigureVideoEncoder(encoder_config_); 1787 send_stream_->ReconfigureVideoEncoder(encoder_config_);
1788 ASSERT_TRUE(
1789 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
1762 EXPECT_EQ(3, num_initializations_) 1790 EXPECT_EQ(3, num_initializations_)
1763 << "Encoder should have been reconfigured with the new value."; 1791 << "Encoder should have been reconfigured with the new value.";
1764 } 1792 }
1765 1793
1794 rtc::Event init_encode_event_;
1766 int num_initializations_; 1795 int num_initializations_;
1767 webrtc::Call* call_; 1796 webrtc::Call* call_;
1768 webrtc::VideoSendStream* send_stream_; 1797 webrtc::VideoSendStream* send_stream_;
1769 webrtc::VideoEncoderConfig encoder_config_; 1798 webrtc::VideoEncoderConfig encoder_config_;
1770 } test; 1799 } test;
1771 1800
1772 RunBaseTest(&test); 1801 RunBaseTest(&test);
1773 } 1802 }
1774 1803
1775 TEST_F(VideoSendStreamTest, ReportsSentResolution) { 1804 TEST_F(VideoSendStreamTest, ReportsSentResolution) {
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after
2231 observation_complete_.Set(); 2260 observation_complete_.Set();
2232 } 2261 }
2233 } 2262 }
2234 } test; 2263 } test;
2235 2264
2236 RunBaseTest(&test); 2265 RunBaseTest(&test);
2237 } 2266 }
2238 #endif 2267 #endif
2239 2268
2240 } // namespace webrtc 2269 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/video_send_stream.cc ('k') | webrtc/video/vie_channel.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698