OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |