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 847 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
858 if (stats.suspended == false) { | 858 if (stats.suspended == false) { |
859 // Stats flipped to false. Test is complete. | 859 // Stats flipped to false. Test is complete. |
860 observation_complete_.Set(); | 860 observation_complete_.Set(); |
861 } | 861 } |
862 SendRtcpFeedback(0); // REMB is only sent if value is > 0. | 862 SendRtcpFeedback(0); // REMB is only sent if value is > 0. |
863 } | 863 } |
864 | 864 |
865 return SEND_PACKET; | 865 return SEND_PACKET; |
866 } | 866 } |
867 | 867 |
868 // This method implements the rtc::VideoSinkInterface | 868 // This method implements the rtc::VideoSinkInterface. This is called when |
| 869 // a frame is provided to the VideoSendStream. |
869 void OnFrame(const VideoFrame& video_frame) override { | 870 void OnFrame(const VideoFrame& video_frame) override { |
870 rtc::CritScope lock(&crit_); | 871 rtc::CritScope lock(&crit_); |
871 if (test_state_ == kDuringSuspend && | 872 if (test_state_ == kDuringSuspend && |
872 ++suspended_frame_count_ > kSuspendTimeFrames) { | 873 ++suspended_frame_count_ > kSuspendTimeFrames) { |
873 VideoSendStream::Stats stats = stream_->GetStats(); | 874 VideoSendStream::Stats stats = stream_->GetStats(); |
874 EXPECT_TRUE(stats.suspended); | 875 EXPECT_TRUE(stats.suspended); |
875 SendRtcpFeedback(high_remb_bps_); | 876 SendRtcpFeedback(high_remb_bps_); |
876 test_state_ = kWaitingForPacket; | 877 test_state_ = kWaitingForPacket; |
877 } | 878 } |
878 } | 879 } |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1174 video_send_config_.encoder_settings.encoder = &encoder; | 1175 video_send_config_.encoder_settings.encoder = &encoder; |
1175 | 1176 |
1176 CreateVideoStreams(); | 1177 CreateVideoStreams(); |
1177 | 1178 |
1178 EXPECT_TRUE(encoder.WaitForStartBitrate()); | 1179 EXPECT_TRUE(encoder.WaitForStartBitrate()); |
1179 EXPECT_EQ(video_encoder_config_.streams[0].max_bitrate_bps / 1000, | 1180 EXPECT_EQ(video_encoder_config_.streams[0].max_bitrate_bps / 1000, |
1180 encoder.GetStartBitrateKbps()); | 1181 encoder.GetStartBitrateKbps()); |
1181 | 1182 |
1182 video_encoder_config_.streams[0].max_bitrate_bps = | 1183 video_encoder_config_.streams[0].max_bitrate_bps = |
1183 2 * bitrate_config.start_bitrate_bps; | 1184 2 * bitrate_config.start_bitrate_bps; |
1184 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_); | 1185 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_.Copy()); |
1185 | 1186 |
1186 // New bitrate should be reconfigured above the previous max. As there's no | 1187 // New bitrate should be reconfigured above the previous max. As there's no |
1187 // network connection this shouldn't be flaky, as no bitrate should've been | 1188 // network connection this shouldn't be flaky, as no bitrate should've been |
1188 // reported in between. | 1189 // reported in between. |
1189 EXPECT_TRUE(encoder.WaitForStartBitrate()); | 1190 EXPECT_TRUE(encoder.WaitForStartBitrate()); |
1190 EXPECT_EQ(bitrate_config.start_bitrate_bps / 1000, | 1191 EXPECT_EQ(bitrate_config.start_bitrate_bps / 1000, |
1191 encoder.GetStartBitrateKbps()); | 1192 encoder.GetStartBitrateKbps()); |
1192 | 1193 |
1193 DestroyStreams(); | 1194 DestroyStreams(); |
1194 } | 1195 } |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1438 VideoSendStream* send_stream, | 1439 VideoSendStream* send_stream, |
1439 const std::vector<VideoReceiveStream*>& receive_streams) override { | 1440 const std::vector<VideoReceiveStream*>& receive_streams) override { |
1440 stream_ = send_stream; | 1441 stream_ = send_stream; |
1441 } | 1442 } |
1442 | 1443 |
1443 void ModifyVideoConfigs( | 1444 void ModifyVideoConfigs( |
1444 VideoSendStream::Config* send_config, | 1445 VideoSendStream::Config* send_config, |
1445 std::vector<VideoReceiveStream::Config>* receive_configs, | 1446 std::vector<VideoReceiveStream::Config>* receive_configs, |
1446 VideoEncoderConfig* encoder_config) override { | 1447 VideoEncoderConfig* encoder_config) override { |
1447 send_config->encoder_settings.encoder = this; | 1448 send_config->encoder_settings.encoder = this; |
1448 encoder_config_ = *encoder_config; | 1449 encoder_config_ = encoder_config->Copy(); |
1449 } | 1450 } |
1450 | 1451 |
1451 void PerformTest() override { | 1452 void PerformTest() override { |
1452 EXPECT_TRUE(Wait()) << "Timed out while waiting for Encode."; | 1453 EXPECT_TRUE(Wait()) << "Timed out while waiting for Encode."; |
1453 EXPECT_EQ(0u, num_releases()); | 1454 EXPECT_EQ(0u, num_releases()); |
1454 stream_->ReconfigureVideoEncoder(encoder_config_); | 1455 stream_->ReconfigureVideoEncoder(std::move(encoder_config_)); |
1455 EXPECT_EQ(0u, num_releases()); | 1456 EXPECT_EQ(0u, num_releases()); |
1456 stream_->Stop(); | 1457 stream_->Stop(); |
1457 // Encoder should not be released before destroying the VideoSendStream. | 1458 // Encoder should not be released before destroying the VideoSendStream. |
1458 EXPECT_FALSE(IsReleased()); | 1459 EXPECT_FALSE(IsReleased()); |
1459 EXPECT_TRUE(IsReadyForEncode()); | 1460 EXPECT_TRUE(IsReadyForEncode()); |
1460 stream_->Start(); | 1461 stream_->Start(); |
1461 // Sanity check, make sure we still encode frames with this encoder. | 1462 // Sanity check, make sure we still encode frames with this encoder. |
1462 EXPECT_TRUE(Wait()) << "Timed out while waiting for Encode."; | 1463 EXPECT_TRUE(Wait()) << "Timed out while waiting for Encode."; |
1463 } | 1464 } |
1464 | 1465 |
(...skipping 21 matching lines...) Expand all Loading... |
1486 FakeEncoder(Clock::GetRealTimeClock()), | 1487 FakeEncoder(Clock::GetRealTimeClock()), |
1487 init_encode_event_(false, false), | 1488 init_encode_event_(false, false), |
1488 num_initializations_(0) {} | 1489 num_initializations_(0) {} |
1489 | 1490 |
1490 private: | 1491 private: |
1491 void ModifyVideoConfigs( | 1492 void ModifyVideoConfigs( |
1492 VideoSendStream::Config* send_config, | 1493 VideoSendStream::Config* send_config, |
1493 std::vector<VideoReceiveStream::Config>* receive_configs, | 1494 std::vector<VideoReceiveStream::Config>* receive_configs, |
1494 VideoEncoderConfig* encoder_config) override { | 1495 VideoEncoderConfig* encoder_config) override { |
1495 send_config->encoder_settings.encoder = this; | 1496 send_config->encoder_settings.encoder = this; |
1496 encoder_config_ = *encoder_config; | 1497 encoder_config_ = encoder_config->Copy(); |
1497 } | 1498 } |
1498 | 1499 |
1499 void OnVideoStreamsCreated( | 1500 void OnVideoStreamsCreated( |
1500 VideoSendStream* send_stream, | 1501 VideoSendStream* send_stream, |
1501 const std::vector<VideoReceiveStream*>& receive_streams) override { | 1502 const std::vector<VideoReceiveStream*>& receive_streams) override { |
1502 stream_ = send_stream; | 1503 stream_ = send_stream; |
1503 } | 1504 } |
1504 | 1505 |
1505 int32_t InitEncode(const VideoCodec* config, | 1506 int32_t InitEncode(const VideoCodec* config, |
1506 int32_t number_of_cores, | 1507 int32_t number_of_cores, |
1507 size_t max_payload_size) override { | 1508 size_t max_payload_size) override { |
1508 if (num_initializations_ == 0) { | 1509 if (num_initializations_ == 0) { |
1509 // Verify default values. | 1510 // Verify default values. |
1510 EXPECT_EQ(kRealtimeVideo, config->mode); | 1511 EXPECT_EQ(kRealtimeVideo, config->mode); |
1511 } else { | 1512 } else { |
1512 // Verify that changed values are propagated. | 1513 // Verify that changed values are propagated. |
1513 EXPECT_EQ(kScreensharing, config->mode); | 1514 EXPECT_EQ(kScreensharing, config->mode); |
1514 } | 1515 } |
1515 ++num_initializations_; | 1516 ++num_initializations_; |
1516 init_encode_event_.Set(); | 1517 init_encode_event_.Set(); |
1517 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); | 1518 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); |
1518 } | 1519 } |
1519 | 1520 |
1520 void PerformTest() override { | 1521 void PerformTest() override { |
1521 EXPECT_TRUE(init_encode_event_.Wait(kDefaultTimeoutMs)); | 1522 EXPECT_TRUE(init_encode_event_.Wait(kDefaultTimeoutMs)); |
1522 EXPECT_EQ(1u, num_initializations_) << "VideoEncoder not initialized."; | 1523 EXPECT_EQ(1u, num_initializations_) << "VideoEncoder not initialized."; |
1523 | 1524 |
1524 encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen; | 1525 encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen; |
1525 stream_->ReconfigureVideoEncoder(encoder_config_); | 1526 stream_->ReconfigureVideoEncoder(std::move(encoder_config_)); |
1526 EXPECT_TRUE(init_encode_event_.Wait(kDefaultTimeoutMs)); | 1527 EXPECT_TRUE(init_encode_event_.Wait(kDefaultTimeoutMs)); |
1527 EXPECT_EQ(2u, num_initializations_) | 1528 EXPECT_EQ(2u, num_initializations_) |
1528 << "ReconfigureVideoEncoder did not reinitialize the encoder with " | 1529 << "ReconfigureVideoEncoder did not reinitialize the encoder with " |
1529 "new encoder settings."; | 1530 "new encoder settings."; |
1530 } | 1531 } |
1531 | 1532 |
1532 rtc::Event init_encode_event_; | 1533 rtc::Event init_encode_event_; |
1533 size_t num_initializations_; | 1534 size_t num_initializations_; |
1534 VideoSendStream* stream_; | 1535 VideoSendStream* stream_; |
1535 VideoEncoderConfig encoder_config_; | 1536 VideoEncoderConfig encoder_config_; |
(...skipping 25 matching lines...) Expand all Loading... |
1561 VideoEncoderConfig* encoder_config) override { | 1562 VideoEncoderConfig* encoder_config) override { |
1562 send_config->encoder_settings.encoder = this; | 1563 send_config->encoder_settings.encoder = this; |
1563 send_config->encoder_settings.payload_name = codec_name_; | 1564 send_config->encoder_settings.payload_name = codec_name_; |
1564 | 1565 |
1565 for (size_t i = 0; i < encoder_config->streams.size(); ++i) { | 1566 for (size_t i = 0; i < encoder_config->streams.size(); ++i) { |
1566 encoder_config->streams[i].temporal_layer_thresholds_bps.resize( | 1567 encoder_config->streams[i].temporal_layer_thresholds_bps.resize( |
1567 kVideoCodecConfigObserverNumberOfTemporalLayers - 1); | 1568 kVideoCodecConfigObserverNumberOfTemporalLayers - 1); |
1568 } | 1569 } |
1569 | 1570 |
1570 encoder_config->encoder_specific_settings = &encoder_settings_; | 1571 encoder_config->encoder_specific_settings = &encoder_settings_; |
1571 encoder_config_ = *encoder_config; | 1572 encoder_config_ = encoder_config->Copy(); |
1572 } | 1573 } |
1573 | 1574 |
1574 void OnVideoStreamsCreated( | 1575 void OnVideoStreamsCreated( |
1575 VideoSendStream* send_stream, | 1576 VideoSendStream* send_stream, |
1576 const std::vector<VideoReceiveStream*>& receive_streams) override { | 1577 const std::vector<VideoReceiveStream*>& receive_streams) override { |
1577 stream_ = send_stream; | 1578 stream_ = send_stream; |
1578 } | 1579 } |
1579 | 1580 |
1580 int32_t InitEncode(const VideoCodec* config, | 1581 int32_t InitEncode(const VideoCodec* config, |
1581 int32_t number_of_cores, | 1582 int32_t number_of_cores, |
1582 size_t max_payload_size) override { | 1583 size_t max_payload_size) override { |
1583 EXPECT_EQ(video_codec_type_, config->codecType); | 1584 EXPECT_EQ(video_codec_type_, config->codecType); |
1584 VerifyCodecSpecifics(*config); | 1585 VerifyCodecSpecifics(*config); |
1585 ++num_initializations_; | 1586 ++num_initializations_; |
1586 init_encode_event_.Set(); | 1587 init_encode_event_.Set(); |
1587 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); | 1588 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); |
1588 } | 1589 } |
1589 | 1590 |
1590 void VerifyCodecSpecifics(const VideoCodec& config) const; | 1591 void VerifyCodecSpecifics(const VideoCodec& config) const; |
1591 | 1592 |
1592 void PerformTest() override { | 1593 void PerformTest() override { |
1593 EXPECT_TRUE( | 1594 EXPECT_TRUE( |
1594 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)); | 1595 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)); |
1595 ASSERT_EQ(1u, num_initializations_) << "VideoEncoder not initialized."; | 1596 ASSERT_EQ(1u, num_initializations_) << "VideoEncoder not initialized."; |
1596 | 1597 |
1597 encoder_settings_.frameDroppingOn = true; | 1598 encoder_settings_.frameDroppingOn = true; |
1598 stream_->ReconfigureVideoEncoder(encoder_config_); | 1599 stream_->ReconfigureVideoEncoder(std::move(encoder_config_)); |
1599 ASSERT_TRUE( | 1600 ASSERT_TRUE( |
1600 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)); | 1601 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)); |
1601 EXPECT_EQ(2u, num_initializations_) | 1602 EXPECT_EQ(2u, num_initializations_) |
1602 << "ReconfigureVideoEncoder did not reinitialize the encoder with " | 1603 << "ReconfigureVideoEncoder did not reinitialize the encoder with " |
1603 "new encoder settings."; | 1604 "new encoder settings."; |
1604 } | 1605 } |
1605 | 1606 |
1606 int32_t Encode(const VideoFrame& input_image, | 1607 int32_t Encode(const VideoFrame& input_image, |
1607 const CodecSpecificInfo* codec_specific_info, | 1608 const CodecSpecificInfo* codec_specific_info, |
1608 const std::vector<FrameType>* frame_types) override { | 1609 const std::vector<FrameType>* frame_types) override { |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1785 static const int kMaxBitrateKbps = 413; | 1786 static const int kMaxBitrateKbps = 413; |
1786 static const int kIncreasedStartBitrateKbps = 451; | 1787 static const int kIncreasedStartBitrateKbps = 451; |
1787 static const int kIncreasedMaxBitrateKbps = 597; | 1788 static const int kIncreasedMaxBitrateKbps = 597; |
1788 class EncoderBitrateThresholdObserver : public test::SendTest, | 1789 class EncoderBitrateThresholdObserver : public test::SendTest, |
1789 public test::FakeEncoder { | 1790 public test::FakeEncoder { |
1790 public: | 1791 public: |
1791 EncoderBitrateThresholdObserver() | 1792 EncoderBitrateThresholdObserver() |
1792 : SendTest(kDefaultTimeoutMs), | 1793 : SendTest(kDefaultTimeoutMs), |
1793 FakeEncoder(Clock::GetRealTimeClock()), | 1794 FakeEncoder(Clock::GetRealTimeClock()), |
1794 init_encode_event_(false, false), | 1795 init_encode_event_(false, false), |
| 1796 bitrate_changed_event_(false, false), |
1795 num_initializations_(0) {} | 1797 num_initializations_(0) {} |
1796 | 1798 |
1797 private: | 1799 private: |
1798 int32_t InitEncode(const VideoCodec* codecSettings, | 1800 int32_t InitEncode(const VideoCodec* codecSettings, |
1799 int32_t numberOfCores, | 1801 int32_t numberOfCores, |
1800 size_t maxPayloadSize) override { | 1802 size_t maxPayloadSize) override { |
1801 if (num_initializations_ == 0) { | 1803 if (num_initializations_ == 0) { |
1802 EXPECT_EQ(static_cast<unsigned int>(kMinBitrateKbps), | 1804 EXPECT_EQ(static_cast<unsigned int>(kMinBitrateKbps), |
1803 codecSettings->minBitrate); | 1805 codecSettings->minBitrate); |
1804 EXPECT_EQ(static_cast<unsigned int>(kStartBitrateKbps), | 1806 EXPECT_EQ(static_cast<unsigned int>(kStartBitrateKbps), |
(...skipping 13 matching lines...) Expand all Loading... |
1818 codecSettings->maxBitrate); | 1820 codecSettings->maxBitrate); |
1819 EXPECT_EQ(static_cast<unsigned int>(kIncreasedStartBitrateKbps), | 1821 EXPECT_EQ(static_cast<unsigned int>(kIncreasedStartBitrateKbps), |
1820 codecSettings->startBitrate); | 1822 codecSettings->startBitrate); |
1821 } | 1823 } |
1822 ++num_initializations_; | 1824 ++num_initializations_; |
1823 init_encode_event_.Set(); | 1825 init_encode_event_.Set(); |
1824 return FakeEncoder::InitEncode(codecSettings, numberOfCores, | 1826 return FakeEncoder::InitEncode(codecSettings, numberOfCores, |
1825 maxPayloadSize); | 1827 maxPayloadSize); |
1826 } | 1828 } |
1827 | 1829 |
| 1830 int32_t SetRates(uint32_t newBitRate, uint32_t frameRate) override { |
| 1831 bitrate_changed_event_.Set(); |
| 1832 return FakeEncoder::SetRates(newBitRate, frameRate); |
| 1833 } |
| 1834 |
1828 Call::Config GetSenderCallConfig() override { | 1835 Call::Config GetSenderCallConfig() override { |
1829 Call::Config config; | 1836 Call::Config config; |
1830 config.bitrate_config.min_bitrate_bps = kMinBitrateKbps * 1000; | 1837 config.bitrate_config.min_bitrate_bps = kMinBitrateKbps * 1000; |
1831 config.bitrate_config.start_bitrate_bps = kStartBitrateKbps * 1000; | 1838 config.bitrate_config.start_bitrate_bps = kStartBitrateKbps * 1000; |
1832 config.bitrate_config.max_bitrate_bps = kMaxBitrateKbps * 1000; | 1839 config.bitrate_config.max_bitrate_bps = kMaxBitrateKbps * 1000; |
1833 return config; | 1840 return config; |
1834 } | 1841 } |
1835 | 1842 |
1836 void ModifyVideoConfigs( | 1843 void ModifyVideoConfigs( |
1837 VideoSendStream::Config* send_config, | 1844 VideoSendStream::Config* send_config, |
1838 std::vector<VideoReceiveStream::Config>* receive_configs, | 1845 std::vector<VideoReceiveStream::Config>* receive_configs, |
1839 VideoEncoderConfig* encoder_config) override { | 1846 VideoEncoderConfig* encoder_config) override { |
1840 send_config->encoder_settings.encoder = this; | 1847 send_config->encoder_settings.encoder = this; |
1841 // Set bitrates lower/higher than min/max to make sure they are properly | 1848 // Set bitrates lower/higher than min/max to make sure they are properly |
1842 // capped. | 1849 // capped. |
1843 encoder_config->streams.front().min_bitrate_bps = kMinBitrateKbps * 1000; | 1850 encoder_config->streams.front().min_bitrate_bps = kMinBitrateKbps * 1000; |
1844 encoder_config->streams.front().max_bitrate_bps = kMaxBitrateKbps * 1000; | 1851 encoder_config->streams.front().max_bitrate_bps = kMaxBitrateKbps * 1000; |
1845 encoder_config_ = *encoder_config; | 1852 encoder_config_ = encoder_config->Copy(); |
1846 } | 1853 } |
1847 | 1854 |
1848 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { | 1855 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { |
1849 call_ = sender_call; | 1856 call_ = sender_call; |
1850 } | 1857 } |
1851 | 1858 |
1852 void OnVideoStreamsCreated( | 1859 void OnVideoStreamsCreated( |
1853 VideoSendStream* send_stream, | 1860 VideoSendStream* send_stream, |
1854 const std::vector<VideoReceiveStream*>& receive_streams) override { | 1861 const std::vector<VideoReceiveStream*>& receive_streams) override { |
1855 send_stream_ = send_stream; | 1862 send_stream_ = send_stream; |
1856 } | 1863 } |
1857 | 1864 |
1858 void PerformTest() override { | 1865 void PerformTest() override { |
1859 ASSERT_TRUE( | 1866 ASSERT_TRUE( |
1860 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)) | 1867 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)) |
1861 << "Timed out while waiting encoder to be configured."; | 1868 << "Timed out while waiting for encoder to be configured."; |
| 1869 ASSERT_TRUE( |
| 1870 bitrate_changed_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)) |
| 1871 << "Timed out while waiting encoder rate to be set."; |
1862 Call::Config::BitrateConfig bitrate_config; | 1872 Call::Config::BitrateConfig bitrate_config; |
1863 bitrate_config.start_bitrate_bps = kIncreasedStartBitrateKbps * 1000; | 1873 bitrate_config.start_bitrate_bps = kIncreasedStartBitrateKbps * 1000; |
1864 bitrate_config.max_bitrate_bps = kIncreasedMaxBitrateKbps * 1000; | 1874 bitrate_config.max_bitrate_bps = kIncreasedMaxBitrateKbps * 1000; |
1865 call_->SetBitrateConfig(bitrate_config); | 1875 call_->SetBitrateConfig(bitrate_config); |
1866 EXPECT_TRUE(Wait()) | 1876 ASSERT_TRUE( |
1867 << "Timed out while waiting encoder to be configured."; | 1877 bitrate_changed_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)) |
| 1878 << "Timed out while waiting for encoder rate to be set."; |
| 1879 |
1868 encoder_config_.streams[0].min_bitrate_bps = 0; | 1880 encoder_config_.streams[0].min_bitrate_bps = 0; |
1869 encoder_config_.streams[0].max_bitrate_bps = kLowerMaxBitrateKbps * 1000; | 1881 encoder_config_.streams[0].max_bitrate_bps = kLowerMaxBitrateKbps * 1000; |
1870 send_stream_->ReconfigureVideoEncoder(encoder_config_); | 1882 send_stream_->ReconfigureVideoEncoder(encoder_config_.Copy()); |
1871 ASSERT_TRUE( | 1883 ASSERT_TRUE( |
1872 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)); | 1884 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)); |
1873 EXPECT_EQ(2, num_initializations_) | 1885 EXPECT_EQ(2, num_initializations_) |
1874 << "Encoder should have been reconfigured with the new value."; | 1886 << "Encoder should have been reconfigured with the new value."; |
1875 encoder_config_.streams[0].target_bitrate_bps = | 1887 encoder_config_.streams[0].target_bitrate_bps = |
1876 encoder_config_.streams[0].min_bitrate_bps; | 1888 encoder_config_.streams[0].min_bitrate_bps; |
1877 encoder_config_.streams[0].max_bitrate_bps = | 1889 encoder_config_.streams[0].max_bitrate_bps = |
1878 kIncreasedMaxBitrateKbps * 1000; | 1890 kIncreasedMaxBitrateKbps * 1000; |
1879 send_stream_->ReconfigureVideoEncoder(encoder_config_); | 1891 send_stream_->ReconfigureVideoEncoder(encoder_config_.Copy()); |
1880 ASSERT_TRUE( | 1892 ASSERT_TRUE( |
1881 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)); | 1893 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)); |
1882 EXPECT_EQ(3, num_initializations_) | 1894 EXPECT_EQ(3, num_initializations_) |
1883 << "Encoder should have been reconfigured with the new value."; | 1895 << "Encoder should have been reconfigured with the new value."; |
1884 } | 1896 } |
1885 | 1897 |
1886 rtc::Event init_encode_event_; | 1898 rtc::Event init_encode_event_; |
| 1899 rtc::Event bitrate_changed_event_; |
1887 int num_initializations_; | 1900 int num_initializations_; |
1888 webrtc::Call* call_; | 1901 webrtc::Call* call_; |
1889 webrtc::VideoSendStream* send_stream_; | 1902 webrtc::VideoSendStream* send_stream_; |
1890 webrtc::VideoEncoderConfig encoder_config_; | 1903 webrtc::VideoEncoderConfig encoder_config_; |
1891 } test; | 1904 } test; |
1892 | 1905 |
1893 RunBaseTest(&test); | 1906 RunBaseTest(&test); |
1894 } | 1907 } |
1895 | 1908 |
1896 TEST_F(VideoSendStreamTest, ReportsSentResolution) { | 1909 TEST_F(VideoSendStreamTest, ReportsSentResolution) { |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1997 std::vector<VideoReceiveStream::Config>* receive_configs, | 2010 std::vector<VideoReceiveStream::Config>* receive_configs, |
1998 VideoEncoderConfig* encoder_config) override { | 2011 VideoEncoderConfig* encoder_config) override { |
1999 encoder_config->encoder_specific_settings = &vp9_settings_; | 2012 encoder_config->encoder_specific_settings = &vp9_settings_; |
2000 send_config->encoder_settings.encoder = vp9_encoder_.get(); | 2013 send_config->encoder_settings.encoder = vp9_encoder_.get(); |
2001 send_config->encoder_settings.payload_name = "VP9"; | 2014 send_config->encoder_settings.payload_name = "VP9"; |
2002 send_config->encoder_settings.payload_type = kVp9PayloadType; | 2015 send_config->encoder_settings.payload_type = kVp9PayloadType; |
2003 ModifyVideoConfigsHook(send_config, receive_configs, encoder_config); | 2016 ModifyVideoConfigsHook(send_config, receive_configs, encoder_config); |
2004 EXPECT_EQ(1u, encoder_config->streams.size()); | 2017 EXPECT_EQ(1u, encoder_config->streams.size()); |
2005 encoder_config->streams[0].temporal_layer_thresholds_bps.resize( | 2018 encoder_config->streams[0].temporal_layer_thresholds_bps.resize( |
2006 vp9_settings_.numberOfTemporalLayers - 1); | 2019 vp9_settings_.numberOfTemporalLayers - 1); |
2007 encoder_config_ = *encoder_config; | 2020 encoder_config_ = encoder_config->Copy(); |
2008 } | 2021 } |
2009 | 2022 |
2010 void PerformTest() override { | 2023 void PerformTest() override { |
2011 EXPECT_TRUE(Wait()) << "Test timed out waiting for VP9 packet, num frames " | 2024 EXPECT_TRUE(Wait()) << "Test timed out waiting for VP9 packet, num frames " |
2012 << frames_sent_; | 2025 << frames_sent_; |
2013 } | 2026 } |
2014 | 2027 |
2015 Action OnSendRtp(const uint8_t* packet, size_t length) override { | 2028 Action OnSendRtp(const uint8_t* packet, size_t length) override { |
2016 RTPHeader header; | 2029 RTPHeader header; |
2017 EXPECT_TRUE(parser_->Parse(packet, length, &header)); | 2030 EXPECT_TRUE(parser_->Parse(packet, length, &header)); |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2376 observation_complete_.Set(); | 2389 observation_complete_.Set(); |
2377 } | 2390 } |
2378 } | 2391 } |
2379 } test; | 2392 } test; |
2380 | 2393 |
2381 RunBaseTest(&test); | 2394 RunBaseTest(&test); |
2382 } | 2395 } |
2383 #endif // !defined(RTC_DISABLE_VP9) | 2396 #endif // !defined(RTC_DISABLE_VP9) |
2384 | 2397 |
2385 } // namespace webrtc | 2398 } // namespace webrtc |
OLD | NEW |