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

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

Issue 2060403002: Add task queue to Call. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@move_getpadding
Patch Set: Rebased Created 4 years, 5 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
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 847 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
1146 VideoEncoderConfig* encoder_config) override { 1147 VideoEncoderConfig* encoder_config) override {
1147 RTC_DCHECK_EQ(1u, encoder_config->streams.size()); 1148 RTC_DCHECK_EQ(1u, encoder_config->streams.size());
1148 if (running_without_padding_) { 1149 if (running_without_padding_) {
1149 encoder_config->min_transmit_bitrate_bps = 0; 1150 encoder_config->min_transmit_bitrate_bps = 0;
1150 encoder_config->content_type = 1151 encoder_config->content_type =
1151 VideoEncoderConfig::ContentType::kRealtimeVideo; 1152 VideoEncoderConfig::ContentType::kRealtimeVideo;
1152 } else { 1153 } else {
1153 encoder_config->min_transmit_bitrate_bps = kMinTransmitBitrateBps; 1154 encoder_config->min_transmit_bitrate_bps = kMinTransmitBitrateBps;
1154 encoder_config->content_type = VideoEncoderConfig::ContentType::kScreen; 1155 encoder_config->content_type = VideoEncoderConfig::ContentType::kScreen;
1155 } 1156 }
1156 encoder_config_ = *encoder_config; 1157 encoder_config_ = encoder_config->Copy();
1157 } 1158 }
1158 1159
1159 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { 1160 void OnCallsCreated(Call* sender_call, Call* receiver_call) override {
1160 call_ = sender_call; 1161 call_ = sender_call;
1161 } 1162 }
1162 1163
1163 Action OnSendRtp(const uint8_t* packet, size_t length) override { 1164 Action OnSendRtp(const uint8_t* packet, size_t length) override {
1164 rtc::CritScope lock(&crit_); 1165 rtc::CritScope lock(&crit_);
1165 1166
1166 if (running_without_padding_) 1167 if (running_without_padding_)
1167 EXPECT_EQ(0, call_->GetStats().max_padding_bitrate_bps); 1168 EXPECT_EQ(0, call_->GetStats().max_padding_bitrate_bps);
1168 1169
1169 // Wait until at least kMinPacketsToSend frames have been encoded, so that 1170 // Wait until at least kMinPacketsToSend frames have been encoded, so that
1170 // we have reliable data. 1171 // we have reliable data.
1171 if (++packets_sent_ < kMinPacketsToSend) 1172 if (++packets_sent_ < kMinPacketsToSend)
1172 return SEND_PACKET; 1173 return SEND_PACKET;
1173 1174
1174 if (running_without_padding_) { 1175 if (running_without_padding_) {
1175 // We've sent kMinPacketsToSend packets with default configuration, switch 1176 // We've sent kMinPacketsToSend packets with default configuration, switch
1176 // to enabling screen content and setting min transmit bitrate. 1177 // to enabling screen content and setting min transmit bitrate.
1177 packets_sent_ = 0; 1178 packets_sent_ = 0;
1178 encoder_config_.min_transmit_bitrate_bps = kMinTransmitBitrateBps; 1179 encoder_config_.min_transmit_bitrate_bps = kMinTransmitBitrateBps;
1179 encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen; 1180 encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen;
1180 send_stream_->ReconfigureVideoEncoder(encoder_config_); 1181 send_stream_->ReconfigureVideoEncoder(encoder_config_.Copy());
1181 running_without_padding_ = false; 1182 running_without_padding_ = false;
1182 return SEND_PACKET; 1183 return SEND_PACKET;
1183 } 1184 }
1184 1185
1185 // Make sure the pacer has been configured with a min transmit bitrate. 1186 // Make sure the pacer has been configured with a min transmit bitrate.
1186 if (call_->GetStats().max_padding_bitrate_bps > 0) 1187 if (call_->GetStats().max_padding_bitrate_bps > 0)
1187 observation_complete_.Set(); 1188 observation_complete_.Set();
1188 1189
1189 return SEND_PACKET; 1190 return SEND_PACKET;
1190 } 1191 }
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
1265 video_send_config_.encoder_settings.encoder = &encoder; 1266 video_send_config_.encoder_settings.encoder = &encoder;
1266 1267
1267 CreateVideoStreams(); 1268 CreateVideoStreams();
1268 1269
1269 EXPECT_TRUE(encoder.WaitForStartBitrate()); 1270 EXPECT_TRUE(encoder.WaitForStartBitrate());
1270 EXPECT_EQ(video_encoder_config_.streams[0].max_bitrate_bps / 1000, 1271 EXPECT_EQ(video_encoder_config_.streams[0].max_bitrate_bps / 1000,
1271 encoder.GetStartBitrateKbps()); 1272 encoder.GetStartBitrateKbps());
1272 1273
1273 video_encoder_config_.streams[0].max_bitrate_bps = 1274 video_encoder_config_.streams[0].max_bitrate_bps =
1274 2 * bitrate_config.start_bitrate_bps; 1275 2 * bitrate_config.start_bitrate_bps;
1275 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_); 1276 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_.Copy());
1276 1277
1277 // New bitrate should be reconfigured above the previous max. As there's no 1278 // New bitrate should be reconfigured above the previous max. As there's no
1278 // network connection this shouldn't be flaky, as no bitrate should've been 1279 // network connection this shouldn't be flaky, as no bitrate should've been
1279 // reported in between. 1280 // reported in between.
1280 EXPECT_TRUE(encoder.WaitForStartBitrate()); 1281 EXPECT_TRUE(encoder.WaitForStartBitrate());
1281 EXPECT_EQ(bitrate_config.start_bitrate_bps / 1000, 1282 EXPECT_EQ(bitrate_config.start_bitrate_bps / 1000,
1282 encoder.GetStartBitrateKbps()); 1283 encoder.GetStartBitrateKbps());
1283 1284
1284 DestroyStreams(); 1285 DestroyStreams();
1285 } 1286 }
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
1529 VideoSendStream* send_stream, 1530 VideoSendStream* send_stream,
1530 const std::vector<VideoReceiveStream*>& receive_streams) override { 1531 const std::vector<VideoReceiveStream*>& receive_streams) override {
1531 stream_ = send_stream; 1532 stream_ = send_stream;
1532 } 1533 }
1533 1534
1534 void ModifyVideoConfigs( 1535 void ModifyVideoConfigs(
1535 VideoSendStream::Config* send_config, 1536 VideoSendStream::Config* send_config,
1536 std::vector<VideoReceiveStream::Config>* receive_configs, 1537 std::vector<VideoReceiveStream::Config>* receive_configs,
1537 VideoEncoderConfig* encoder_config) override { 1538 VideoEncoderConfig* encoder_config) override {
1538 send_config->encoder_settings.encoder = this; 1539 send_config->encoder_settings.encoder = this;
1539 encoder_config_ = *encoder_config; 1540 encoder_config_ = encoder_config->Copy();
1540 } 1541 }
1541 1542
1542 void PerformTest() override { 1543 void PerformTest() override {
1543 EXPECT_TRUE(Wait()) << "Timed out while waiting for Encode."; 1544 EXPECT_TRUE(Wait()) << "Timed out while waiting for Encode.";
1544 EXPECT_EQ(0u, num_releases()); 1545 EXPECT_EQ(0u, num_releases());
1545 stream_->ReconfigureVideoEncoder(encoder_config_); 1546 stream_->ReconfigureVideoEncoder(std::move(encoder_config_));
1546 EXPECT_EQ(0u, num_releases()); 1547 EXPECT_EQ(0u, num_releases());
1547 stream_->Stop(); 1548 stream_->Stop();
1548 // Encoder should not be released before destroying the VideoSendStream. 1549 // Encoder should not be released before destroying the VideoSendStream.
1549 EXPECT_FALSE(IsReleased()); 1550 EXPECT_FALSE(IsReleased());
1550 EXPECT_TRUE(IsReadyForEncode()); 1551 EXPECT_TRUE(IsReadyForEncode());
1551 stream_->Start(); 1552 stream_->Start();
1552 // Sanity check, make sure we still encode frames with this encoder. 1553 // Sanity check, make sure we still encode frames with this encoder.
1553 EXPECT_TRUE(Wait()) << "Timed out while waiting for Encode."; 1554 EXPECT_TRUE(Wait()) << "Timed out while waiting for Encode.";
1554 } 1555 }
1555 1556
(...skipping 21 matching lines...) Expand all
1577 FakeEncoder(Clock::GetRealTimeClock()), 1578 FakeEncoder(Clock::GetRealTimeClock()),
1578 init_encode_event_(false, false), 1579 init_encode_event_(false, false),
1579 num_initializations_(0) {} 1580 num_initializations_(0) {}
1580 1581
1581 private: 1582 private:
1582 void ModifyVideoConfigs( 1583 void ModifyVideoConfigs(
1583 VideoSendStream::Config* send_config, 1584 VideoSendStream::Config* send_config,
1584 std::vector<VideoReceiveStream::Config>* receive_configs, 1585 std::vector<VideoReceiveStream::Config>* receive_configs,
1585 VideoEncoderConfig* encoder_config) override { 1586 VideoEncoderConfig* encoder_config) override {
1586 send_config->encoder_settings.encoder = this; 1587 send_config->encoder_settings.encoder = this;
1587 encoder_config_ = *encoder_config; 1588 encoder_config_ = encoder_config->Copy();
1588 } 1589 }
1589 1590
1590 void OnVideoStreamsCreated( 1591 void OnVideoStreamsCreated(
1591 VideoSendStream* send_stream, 1592 VideoSendStream* send_stream,
1592 const std::vector<VideoReceiveStream*>& receive_streams) override { 1593 const std::vector<VideoReceiveStream*>& receive_streams) override {
1593 stream_ = send_stream; 1594 stream_ = send_stream;
1594 } 1595 }
1595 1596
1596 int32_t InitEncode(const VideoCodec* config, 1597 int32_t InitEncode(const VideoCodec* config,
1597 int32_t number_of_cores, 1598 int32_t number_of_cores,
1598 size_t max_payload_size) override { 1599 size_t max_payload_size) override {
1599 if (num_initializations_ == 0) { 1600 if (num_initializations_ == 0) {
1600 // Verify default values. 1601 // Verify default values.
1601 EXPECT_EQ(kRealtimeVideo, config->mode); 1602 EXPECT_EQ(kRealtimeVideo, config->mode);
1602 } else { 1603 } else {
1603 // Verify that changed values are propagated. 1604 // Verify that changed values are propagated.
1604 EXPECT_EQ(kScreensharing, config->mode); 1605 EXPECT_EQ(kScreensharing, config->mode);
1605 } 1606 }
1606 ++num_initializations_; 1607 ++num_initializations_;
1607 init_encode_event_.Set(); 1608 init_encode_event_.Set();
1608 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); 1609 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size);
1609 } 1610 }
1610 1611
1611 void PerformTest() override { 1612 void PerformTest() override {
1612 EXPECT_TRUE(init_encode_event_.Wait(kDefaultTimeoutMs)); 1613 EXPECT_TRUE(init_encode_event_.Wait(kDefaultTimeoutMs));
1613 EXPECT_EQ(1u, num_initializations_) << "VideoEncoder not initialized."; 1614 EXPECT_EQ(1u, num_initializations_) << "VideoEncoder not initialized.";
1614 1615
1615 encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen; 1616 encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen;
1616 stream_->ReconfigureVideoEncoder(encoder_config_); 1617 stream_->ReconfigureVideoEncoder(std::move(encoder_config_));
1617 EXPECT_TRUE(init_encode_event_.Wait(kDefaultTimeoutMs)); 1618 EXPECT_TRUE(init_encode_event_.Wait(kDefaultTimeoutMs));
1618 EXPECT_EQ(2u, num_initializations_) 1619 EXPECT_EQ(2u, num_initializations_)
1619 << "ReconfigureVideoEncoder did not reinitialize the encoder with " 1620 << "ReconfigureVideoEncoder did not reinitialize the encoder with "
1620 "new encoder settings."; 1621 "new encoder settings.";
1621 } 1622 }
1622 1623
1623 rtc::Event init_encode_event_; 1624 rtc::Event init_encode_event_;
1624 size_t num_initializations_; 1625 size_t num_initializations_;
1625 VideoSendStream* stream_; 1626 VideoSendStream* stream_;
1626 VideoEncoderConfig encoder_config_; 1627 VideoEncoderConfig encoder_config_;
(...skipping 25 matching lines...) Expand all
1652 VideoEncoderConfig* encoder_config) override { 1653 VideoEncoderConfig* encoder_config) override {
1653 send_config->encoder_settings.encoder = this; 1654 send_config->encoder_settings.encoder = this;
1654 send_config->encoder_settings.payload_name = codec_name_; 1655 send_config->encoder_settings.payload_name = codec_name_;
1655 1656
1656 for (size_t i = 0; i < encoder_config->streams.size(); ++i) { 1657 for (size_t i = 0; i < encoder_config->streams.size(); ++i) {
1657 encoder_config->streams[i].temporal_layer_thresholds_bps.resize( 1658 encoder_config->streams[i].temporal_layer_thresholds_bps.resize(
1658 kVideoCodecConfigObserverNumberOfTemporalLayers - 1); 1659 kVideoCodecConfigObserverNumberOfTemporalLayers - 1);
1659 } 1660 }
1660 1661
1661 encoder_config->encoder_specific_settings = &encoder_settings_; 1662 encoder_config->encoder_specific_settings = &encoder_settings_;
1662 encoder_config_ = *encoder_config; 1663 encoder_config_ = encoder_config->Copy();
1663 } 1664 }
1664 1665
1665 void OnVideoStreamsCreated( 1666 void OnVideoStreamsCreated(
1666 VideoSendStream* send_stream, 1667 VideoSendStream* send_stream,
1667 const std::vector<VideoReceiveStream*>& receive_streams) override { 1668 const std::vector<VideoReceiveStream*>& receive_streams) override {
1668 stream_ = send_stream; 1669 stream_ = send_stream;
1669 } 1670 }
1670 1671
1671 int32_t InitEncode(const VideoCodec* config, 1672 int32_t InitEncode(const VideoCodec* config,
1672 int32_t number_of_cores, 1673 int32_t number_of_cores,
1673 size_t max_payload_size) override { 1674 size_t max_payload_size) override {
1674 EXPECT_EQ(video_codec_type_, config->codecType); 1675 EXPECT_EQ(video_codec_type_, config->codecType);
1675 VerifyCodecSpecifics(*config); 1676 VerifyCodecSpecifics(*config);
1676 ++num_initializations_; 1677 ++num_initializations_;
1677 init_encode_event_.Set(); 1678 init_encode_event_.Set();
1678 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); 1679 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size);
1679 } 1680 }
1680 1681
1681 void VerifyCodecSpecifics(const VideoCodec& config) const; 1682 void VerifyCodecSpecifics(const VideoCodec& config) const;
1682 1683
1683 void PerformTest() override { 1684 void PerformTest() override {
1684 EXPECT_TRUE( 1685 EXPECT_TRUE(
1685 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)); 1686 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
1686 ASSERT_EQ(1u, num_initializations_) << "VideoEncoder not initialized."; 1687 ASSERT_EQ(1u, num_initializations_) << "VideoEncoder not initialized.";
1687 1688
1688 encoder_settings_.frameDroppingOn = true; 1689 encoder_settings_.frameDroppingOn = true;
1689 stream_->ReconfigureVideoEncoder(encoder_config_); 1690 stream_->ReconfigureVideoEncoder(std::move(encoder_config_));
1690 ASSERT_TRUE( 1691 ASSERT_TRUE(
1691 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)); 1692 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
1692 EXPECT_EQ(2u, num_initializations_) 1693 EXPECT_EQ(2u, num_initializations_)
1693 << "ReconfigureVideoEncoder did not reinitialize the encoder with " 1694 << "ReconfigureVideoEncoder did not reinitialize the encoder with "
1694 "new encoder settings."; 1695 "new encoder settings.";
1695 } 1696 }
1696 1697
1697 int32_t Encode(const VideoFrame& input_image, 1698 int32_t Encode(const VideoFrame& input_image,
1698 const CodecSpecificInfo* codec_specific_info, 1699 const CodecSpecificInfo* codec_specific_info,
1699 const std::vector<FrameType>* frame_types) override { 1700 const std::vector<FrameType>* frame_types) override {
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
1876 static const int kMaxBitrateKbps = 413; 1877 static const int kMaxBitrateKbps = 413;
1877 static const int kIncreasedStartBitrateKbps = 451; 1878 static const int kIncreasedStartBitrateKbps = 451;
1878 static const int kIncreasedMaxBitrateKbps = 597; 1879 static const int kIncreasedMaxBitrateKbps = 597;
1879 class EncoderBitrateThresholdObserver : public test::SendTest, 1880 class EncoderBitrateThresholdObserver : public test::SendTest,
1880 public test::FakeEncoder { 1881 public test::FakeEncoder {
1881 public: 1882 public:
1882 EncoderBitrateThresholdObserver() 1883 EncoderBitrateThresholdObserver()
1883 : SendTest(kDefaultTimeoutMs), 1884 : SendTest(kDefaultTimeoutMs),
1884 FakeEncoder(Clock::GetRealTimeClock()), 1885 FakeEncoder(Clock::GetRealTimeClock()),
1885 init_encode_event_(false, false), 1886 init_encode_event_(false, false),
1887 bitrate_changed_event_(false, false),
1886 num_initializations_(0) {} 1888 num_initializations_(0) {}
1887 1889
1888 private: 1890 private:
1889 int32_t InitEncode(const VideoCodec* codecSettings, 1891 int32_t InitEncode(const VideoCodec* codecSettings,
1890 int32_t numberOfCores, 1892 int32_t numberOfCores,
1891 size_t maxPayloadSize) override { 1893 size_t maxPayloadSize) override {
1892 if (num_initializations_ == 0) { 1894 if (num_initializations_ == 0) {
1893 EXPECT_EQ(static_cast<unsigned int>(kMinBitrateKbps), 1895 EXPECT_EQ(static_cast<unsigned int>(kMinBitrateKbps),
1894 codecSettings->minBitrate); 1896 codecSettings->minBitrate);
1895 EXPECT_EQ(static_cast<unsigned int>(kStartBitrateKbps), 1897 EXPECT_EQ(static_cast<unsigned int>(kStartBitrateKbps),
1896 codecSettings->startBitrate); 1898 codecSettings->startBitrate);
1897 EXPECT_EQ(static_cast<unsigned int>(kMaxBitrateKbps), 1899 EXPECT_EQ(static_cast<unsigned int>(kMaxBitrateKbps),
1898 codecSettings->maxBitrate); 1900 codecSettings->maxBitrate);
1899 observation_complete_.Set(); 1901 observation_complete_.Set();
1900 } else if (num_initializations_ == 1) { 1902 } else if (num_initializations_ == 1) {
1901 EXPECT_EQ(static_cast<unsigned int>(kLowerMaxBitrateKbps), 1903 EXPECT_EQ(static_cast<unsigned int>(kLowerMaxBitrateKbps),
1902 codecSettings->maxBitrate); 1904 codecSettings->maxBitrate);
1903 // The start bitrate should be kept (-1) and capped to the max bitrate. 1905 // The start bitrate should be kept (-1) and capped to the max bitrate.
1904 // Since this is not an end-to-end call no receiver should have been 1906 // Since this is not an end-to-end call no receiver should have been
1905 // returning a REMB that could lower this estimate. 1907 // returning a REMB that could lower this estimate.
1906 EXPECT_EQ(codecSettings->startBitrate, codecSettings->maxBitrate); 1908 EXPECT_EQ(codecSettings->startBitrate, codecSettings->maxBitrate);
1907 } else if (num_initializations_ == 2) { 1909 } else if (num_initializations_ == 2) {
1908 EXPECT_EQ(static_cast<unsigned int>(kIncreasedMaxBitrateKbps), 1910 EXPECT_EQ(static_cast<unsigned int>(kIncreasedMaxBitrateKbps),
1909 codecSettings->maxBitrate); 1911 codecSettings->maxBitrate);
1910 EXPECT_EQ(static_cast<unsigned int>(kIncreasedStartBitrateKbps),
1911 codecSettings->startBitrate);
1912 } 1912 }
1913 ++num_initializations_; 1913 ++num_initializations_;
1914 init_encode_event_.Set(); 1914 init_encode_event_.Set();
1915 return FakeEncoder::InitEncode(codecSettings, numberOfCores, 1915 return FakeEncoder::InitEncode(codecSettings, numberOfCores,
1916 maxPayloadSize); 1916 maxPayloadSize);
1917 } 1917 }
1918 1918
1919 int32_t SetRates(uint32_t newBitRate, uint32_t frameRate) override {
1920 bitrate_changed_event_.Set();
1921 return FakeEncoder::SetRates(newBitRate, frameRate);
1922 }
1923
1919 Call::Config GetSenderCallConfig() override { 1924 Call::Config GetSenderCallConfig() override {
1920 Call::Config config; 1925 Call::Config config;
1921 config.bitrate_config.min_bitrate_bps = kMinBitrateKbps * 1000; 1926 config.bitrate_config.min_bitrate_bps = kMinBitrateKbps * 1000;
1922 config.bitrate_config.start_bitrate_bps = kStartBitrateKbps * 1000; 1927 config.bitrate_config.start_bitrate_bps = kStartBitrateKbps * 1000;
1923 config.bitrate_config.max_bitrate_bps = kMaxBitrateKbps * 1000; 1928 config.bitrate_config.max_bitrate_bps = kMaxBitrateKbps * 1000;
1924 return config; 1929 return config;
1925 } 1930 }
1926 1931
1927 void ModifyVideoConfigs( 1932 void ModifyVideoConfigs(
1928 VideoSendStream::Config* send_config, 1933 VideoSendStream::Config* send_config,
1929 std::vector<VideoReceiveStream::Config>* receive_configs, 1934 std::vector<VideoReceiveStream::Config>* receive_configs,
1930 VideoEncoderConfig* encoder_config) override { 1935 VideoEncoderConfig* encoder_config) override {
1931 send_config->encoder_settings.encoder = this; 1936 send_config->encoder_settings.encoder = this;
1932 // Set bitrates lower/higher than min/max to make sure they are properly 1937 // Set bitrates lower/higher than min/max to make sure they are properly
1933 // capped. 1938 // capped.
1934 encoder_config->streams.front().min_bitrate_bps = kMinBitrateKbps * 1000; 1939 encoder_config->streams.front().min_bitrate_bps = kMinBitrateKbps * 1000;
1935 encoder_config->streams.front().max_bitrate_bps = kMaxBitrateKbps * 1000; 1940 encoder_config->streams.front().max_bitrate_bps = kMaxBitrateKbps * 1000;
1936 encoder_config_ = *encoder_config; 1941 encoder_config_ = encoder_config->Copy();
1937 } 1942 }
1938 1943
1939 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { 1944 void OnCallsCreated(Call* sender_call, Call* receiver_call) override {
1940 call_ = sender_call; 1945 call_ = sender_call;
1941 } 1946 }
1942 1947
1943 void OnVideoStreamsCreated( 1948 void OnVideoStreamsCreated(
1944 VideoSendStream* send_stream, 1949 VideoSendStream* send_stream,
1945 const std::vector<VideoReceiveStream*>& receive_streams) override { 1950 const std::vector<VideoReceiveStream*>& receive_streams) override {
1946 send_stream_ = send_stream; 1951 send_stream_ = send_stream;
1947 } 1952 }
1948 1953
1949 void PerformTest() override { 1954 void PerformTest() override {
1950 ASSERT_TRUE( 1955 ASSERT_TRUE(
1951 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)) 1956 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs))
1952 << "Timed out while waiting encoder to be configured."; 1957 << "Timed out while waiting for encoder to be configured.";
1958 ASSERT_TRUE(
1959 bitrate_changed_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs))
1960 << "Timed out while waiting encoder rate to be set.";
1953 Call::Config::BitrateConfig bitrate_config; 1961 Call::Config::BitrateConfig bitrate_config;
1954 bitrate_config.start_bitrate_bps = kIncreasedStartBitrateKbps * 1000; 1962 bitrate_config.start_bitrate_bps = kIncreasedStartBitrateKbps * 1000;
1955 bitrate_config.max_bitrate_bps = kIncreasedMaxBitrateKbps * 1000; 1963 bitrate_config.max_bitrate_bps = kIncreasedMaxBitrateKbps * 1000;
1956 call_->SetBitrateConfig(bitrate_config); 1964 call_->SetBitrateConfig(bitrate_config);
1957 EXPECT_TRUE(Wait()) 1965 ASSERT_TRUE(
1958 << "Timed out while waiting encoder to be configured."; 1966 bitrate_changed_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs))
1967 << "Timed out while waiting for encoder rate to be set.";
1968
1959 encoder_config_.streams[0].min_bitrate_bps = 0; 1969 encoder_config_.streams[0].min_bitrate_bps = 0;
1960 encoder_config_.streams[0].max_bitrate_bps = kLowerMaxBitrateKbps * 1000; 1970 encoder_config_.streams[0].max_bitrate_bps = kLowerMaxBitrateKbps * 1000;
1961 send_stream_->ReconfigureVideoEncoder(encoder_config_); 1971 send_stream_->ReconfigureVideoEncoder(encoder_config_.Copy());
1962 ASSERT_TRUE( 1972 ASSERT_TRUE(
1963 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)); 1973 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
1964 EXPECT_EQ(2, num_initializations_) 1974 EXPECT_EQ(2, num_initializations_)
1965 << "Encoder should have been reconfigured with the new value."; 1975 << "Encoder should have been reconfigured with the new value.";
1966 encoder_config_.streams[0].target_bitrate_bps = 1976 encoder_config_.streams[0].target_bitrate_bps =
1967 encoder_config_.streams[0].min_bitrate_bps; 1977 encoder_config_.streams[0].min_bitrate_bps;
1968 encoder_config_.streams[0].max_bitrate_bps = 1978 encoder_config_.streams[0].max_bitrate_bps =
1969 kIncreasedMaxBitrateKbps * 1000; 1979 kIncreasedMaxBitrateKbps * 1000;
1970 send_stream_->ReconfigureVideoEncoder(encoder_config_); 1980 send_stream_->ReconfigureVideoEncoder(encoder_config_.Copy());
1971 ASSERT_TRUE( 1981 ASSERT_TRUE(
1972 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)); 1982 init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
1973 EXPECT_EQ(3, num_initializations_) 1983 EXPECT_EQ(3, num_initializations_)
1974 << "Encoder should have been reconfigured with the new value."; 1984 << "Encoder should have been reconfigured with the new value.";
1975 } 1985 }
1976 1986
1977 rtc::Event init_encode_event_; 1987 rtc::Event init_encode_event_;
1988 rtc::Event bitrate_changed_event_;
1978 int num_initializations_; 1989 int num_initializations_;
1979 webrtc::Call* call_; 1990 webrtc::Call* call_;
1980 webrtc::VideoSendStream* send_stream_; 1991 webrtc::VideoSendStream* send_stream_;
1981 webrtc::VideoEncoderConfig encoder_config_; 1992 webrtc::VideoEncoderConfig encoder_config_;
1982 } test; 1993 } test;
1983 1994
1984 RunBaseTest(&test); 1995 RunBaseTest(&test);
1985 } 1996 }
1986 1997
1987 TEST_F(VideoSendStreamTest, ReportsSentResolution) { 1998 TEST_F(VideoSendStreamTest, ReportsSentResolution) {
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
2088 std::vector<VideoReceiveStream::Config>* receive_configs, 2099 std::vector<VideoReceiveStream::Config>* receive_configs,
2089 VideoEncoderConfig* encoder_config) override { 2100 VideoEncoderConfig* encoder_config) override {
2090 encoder_config->encoder_specific_settings = &vp9_settings_; 2101 encoder_config->encoder_specific_settings = &vp9_settings_;
2091 send_config->encoder_settings.encoder = vp9_encoder_.get(); 2102 send_config->encoder_settings.encoder = vp9_encoder_.get();
2092 send_config->encoder_settings.payload_name = "VP9"; 2103 send_config->encoder_settings.payload_name = "VP9";
2093 send_config->encoder_settings.payload_type = kVp9PayloadType; 2104 send_config->encoder_settings.payload_type = kVp9PayloadType;
2094 ModifyVideoConfigsHook(send_config, receive_configs, encoder_config); 2105 ModifyVideoConfigsHook(send_config, receive_configs, encoder_config);
2095 EXPECT_EQ(1u, encoder_config->streams.size()); 2106 EXPECT_EQ(1u, encoder_config->streams.size());
2096 encoder_config->streams[0].temporal_layer_thresholds_bps.resize( 2107 encoder_config->streams[0].temporal_layer_thresholds_bps.resize(
2097 vp9_settings_.numberOfTemporalLayers - 1); 2108 vp9_settings_.numberOfTemporalLayers - 1);
2098 encoder_config_ = *encoder_config; 2109 encoder_config_ = encoder_config->Copy();
2099 } 2110 }
2100 2111
2101 void PerformTest() override { 2112 void PerformTest() override {
2102 EXPECT_TRUE(Wait()) << "Test timed out waiting for VP9 packet, num frames " 2113 EXPECT_TRUE(Wait()) << "Test timed out waiting for VP9 packet, num frames "
2103 << frames_sent_; 2114 << frames_sent_;
2104 } 2115 }
2105 2116
2106 Action OnSendRtp(const uint8_t* packet, size_t length) override { 2117 Action OnSendRtp(const uint8_t* packet, size_t length) override {
2107 RTPHeader header; 2118 RTPHeader header;
2108 EXPECT_TRUE(parser_->Parse(packet, length, &header)); 2119 EXPECT_TRUE(parser_->Parse(packet, length, &header));
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
2467 observation_complete_.Set(); 2478 observation_complete_.Set();
2468 } 2479 }
2469 } 2480 }
2470 } test; 2481 } test;
2471 2482
2472 RunBaseTest(&test); 2483 RunBaseTest(&test);
2473 } 2484 }
2474 #endif // !defined(RTC_DISABLE_VP9) 2485 #endif // !defined(RTC_DISABLE_VP9)
2475 2486
2476 } // namespace webrtc 2487 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698