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

Side by Side Diff: webrtc/media/engine/webrtcvideoengine2_unittest.cc

Issue 1745003002: Move suspend_below_min_bitrate from VideoOptions to MediaConfig. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/media/engine/webrtcvideoengine2.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2004 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 10
(...skipping 999 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 EXPECT_EQ(expected_extension, 1010 EXPECT_EQ(expected_extension,
1011 send_stream->GetConfig().rtp.extensions[0].name); 1011 send_stream->GetConfig().rtp.extensions[0].name);
1012 } 1012 }
1013 1013
1014 void TestCpuAdaptation(bool enable_overuse, bool is_screenshare); 1014 void TestCpuAdaptation(bool enable_overuse, bool is_screenshare);
1015 void TestReceiverLocalSsrcConfiguration(bool receiver_first); 1015 void TestReceiverLocalSsrcConfiguration(bool receiver_first);
1016 void TestReceiveUnsignalledSsrcPacket(uint8_t payload_type, 1016 void TestReceiveUnsignalledSsrcPacket(uint8_t payload_type,
1017 bool expect_created_receive_stream); 1017 bool expect_created_receive_stream);
1018 1018
1019 FakeVideoSendStream* SetDenoisingOption( 1019 FakeVideoSendStream* SetDenoisingOption(
1020 const cricket::VideoSendParameters& parameters, bool enabled) { 1020 const cricket::VideoSendParameters& parameters,
1021 cricket::FakeVideoCapturer* capturer,
1022 bool enabled) {
1021 cricket::VideoSendParameters params = parameters; 1023 cricket::VideoSendParameters params = parameters;
1022 params.options.video_noise_reduction = rtc::Optional<bool>(enabled); 1024 params.options.video_noise_reduction = rtc::Optional<bool>(enabled);
1025 // TODO(nisse): Switch to using SetOptions?
1023 channel_->SetSendParameters(params); 1026 channel_->SetSendParameters(params);
1027 // Options only take effect on the next frame.
1028 EXPECT_TRUE(capturer->CaptureFrame());
1029
1024 return fake_call_->GetVideoSendStreams().back(); 1030 return fake_call_->GetVideoSendStreams().back();
1025 } 1031 }
1026 1032
1027 FakeVideoSendStream* SetUpSimulcast(bool enabled, bool with_rtx) { 1033 FakeVideoSendStream* SetUpSimulcast(bool enabled, bool with_rtx) {
1028 const int kRtxSsrcOffset = 0xDEADBEEF; 1034 const int kRtxSsrcOffset = 0xDEADBEEF;
1029 last_ssrc_ += 3; 1035 last_ssrc_ += 3;
1030 std::vector<uint32_t> ssrcs; 1036 std::vector<uint32_t> ssrcs;
1031 std::vector<uint32_t> rtx_ssrcs; 1037 std::vector<uint32_t> rtx_ssrcs;
1032 uint32_t num_streams = enabled ? 3 : 1; 1038 uint32_t num_streams = enabled ? 3 : 1;
1033 for (uint32_t i = 0; i < num_streams; ++i) { 1039 for (uint32_t i = 0; i < num_streams; ++i) {
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after
1547 encoder_config.streams[0].temporal_layer_thresholds_bps[0]); 1553 encoder_config.streams[0].temporal_layer_thresholds_bps[0]);
1548 1554
1549 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1555 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL));
1550 } 1556 }
1551 1557
1552 TEST_F(WebRtcVideoChannel2Test, SuspendBelowMinBitrateDisabledByDefault) { 1558 TEST_F(WebRtcVideoChannel2Test, SuspendBelowMinBitrateDisabledByDefault) {
1553 FakeVideoSendStream* stream = AddSendStream(); 1559 FakeVideoSendStream* stream = AddSendStream();
1554 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate); 1560 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate);
1555 } 1561 }
1556 1562
1557 TEST_F(WebRtcVideoChannel2Test, SetOptionsWithSuspendBelowMinBitrate) { 1563 TEST_F(WebRtcVideoChannel2Test, SetMediaConfigSuspendBelowMinBitrate) {
1558 send_parameters_.options.suspend_below_min_bitrate = 1564 MediaConfig media_config = MediaConfig();
1559 rtc::Optional<bool>(true); 1565 media_config.video.suspend_below_min_bitrate = true;
1566
1567 channel_.reset(
1568 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions()));
1569
1560 channel_->SetSendParameters(send_parameters_); 1570 channel_->SetSendParameters(send_parameters_);
1561 1571
1562 FakeVideoSendStream* stream = AddSendStream(); 1572 FakeVideoSendStream* stream = AddSendStream();
1563 EXPECT_TRUE(stream->GetConfig().suspend_below_min_bitrate); 1573 EXPECT_TRUE(stream->GetConfig().suspend_below_min_bitrate);
1564 1574
1565 send_parameters_.options.suspend_below_min_bitrate = 1575 media_config.video.suspend_below_min_bitrate = false;
1566 rtc::Optional<bool>(false); 1576 channel_.reset(
1577 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions()));
1578
1567 channel_->SetSendParameters(send_parameters_); 1579 channel_->SetSendParameters(send_parameters_);
1568 1580
1569 stream = fake_call_->GetVideoSendStreams()[0]; 1581 stream = AddSendStream();
1570 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate); 1582 EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate);
1571 } 1583 }
1572 1584
1573 TEST_F(WebRtcVideoChannel2Test, Vp8DenoisingEnabledByDefault) { 1585 TEST_F(WebRtcVideoChannel2Test, Vp8DenoisingEnabledByDefault) {
1574 FakeVideoSendStream* stream = AddSendStream(); 1586 FakeVideoSendStream* stream = AddSendStream();
1575 webrtc::VideoCodecVP8 vp8_settings; 1587 webrtc::VideoCodecVP8 vp8_settings;
1576 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1588 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1577 EXPECT_TRUE(vp8_settings.denoisingOn); 1589 EXPECT_TRUE(vp8_settings.denoisingOn);
1578 } 1590 }
1579 1591
(...skipping 14 matching lines...) Expand all
1594 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1606 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer));
1595 channel_->SetSend(true); 1607 channel_->SetSend(true);
1596 1608
1597 EXPECT_TRUE(capturer.CaptureFrame()); 1609 EXPECT_TRUE(capturer.CaptureFrame());
1598 1610
1599 webrtc::VideoCodecVP8 vp8_settings; 1611 webrtc::VideoCodecVP8 vp8_settings;
1600 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1612 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1601 EXPECT_TRUE(vp8_settings.denoisingOn) 1613 EXPECT_TRUE(vp8_settings.denoisingOn)
1602 << "VP8 denoising should be on by default."; 1614 << "VP8 denoising should be on by default.";
1603 1615
1604 stream = SetDenoisingOption(parameters, false); 1616 stream = SetDenoisingOption(parameters, &capturer, false);
1605 1617
1606 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1618 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1607 EXPECT_FALSE(vp8_settings.denoisingOn); 1619 EXPECT_FALSE(vp8_settings.denoisingOn);
1608 EXPECT_TRUE(vp8_settings.automaticResizeOn); 1620 EXPECT_TRUE(vp8_settings.automaticResizeOn);
1609 EXPECT_TRUE(vp8_settings.frameDroppingOn); 1621 EXPECT_TRUE(vp8_settings.frameDroppingOn);
1610 1622
1611 stream = SetDenoisingOption(parameters, true); 1623 stream = SetDenoisingOption(parameters, &capturer, true);
1612 1624
1613 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1625 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1614 EXPECT_TRUE(vp8_settings.denoisingOn); 1626 EXPECT_TRUE(vp8_settings.denoisingOn);
1615 EXPECT_TRUE(vp8_settings.automaticResizeOn); 1627 EXPECT_TRUE(vp8_settings.automaticResizeOn);
1616 EXPECT_TRUE(vp8_settings.frameDroppingOn); 1628 EXPECT_TRUE(vp8_settings.frameDroppingOn);
1617 1629
1618 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1630 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL));
1619 stream = SetUpSimulcast(true, false); 1631 stream = SetUpSimulcast(true, false);
1620 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1632 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer));
1621 channel_->SetSend(true); 1633 channel_->SetSend(true);
1622 EXPECT_TRUE(capturer.CaptureFrame()); 1634 EXPECT_TRUE(capturer.CaptureFrame());
1623 1635
1624 EXPECT_EQ(3, stream->GetVideoStreams().size()); 1636 EXPECT_EQ(3, stream->GetVideoStreams().size());
1625 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1637 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1626 // Autmatic resize off when using simulcast. 1638 // Autmatic resize off when using simulcast.
1627 EXPECT_FALSE(vp8_settings.automaticResizeOn); 1639 EXPECT_FALSE(vp8_settings.automaticResizeOn);
1628 EXPECT_TRUE(vp8_settings.frameDroppingOn); 1640 EXPECT_TRUE(vp8_settings.frameDroppingOn);
1629 1641
1630 // In screen-share mode, denoising is forced off and simulcast disabled. 1642 // In screen-share mode, denoising is forced off and simulcast disabled.
1631 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1643 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL));
1632 capturer.SetScreencast(true); 1644 capturer.SetScreencast(true);
1633 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1645 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer));
1634 EXPECT_TRUE(capturer.CaptureFrame()); 1646 EXPECT_TRUE(capturer.CaptureFrame());
1635 stream = SetDenoisingOption(parameters, false); 1647 stream = SetDenoisingOption(parameters, &capturer, false);
1636 1648
1637 EXPECT_EQ(1, stream->GetVideoStreams().size()); 1649 EXPECT_EQ(1, stream->GetVideoStreams().size());
1638 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1650 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1639 EXPECT_FALSE(vp8_settings.denoisingOn); 1651 EXPECT_FALSE(vp8_settings.denoisingOn);
1640 // Resizing and frame dropping always off for screen sharing. 1652 // Resizing and frame dropping always off for screen sharing.
1641 EXPECT_FALSE(vp8_settings.automaticResizeOn); 1653 EXPECT_FALSE(vp8_settings.automaticResizeOn);
1642 EXPECT_FALSE(vp8_settings.frameDroppingOn); 1654 EXPECT_FALSE(vp8_settings.frameDroppingOn);
1643 1655
1644 stream = SetDenoisingOption(parameters, true); 1656 stream = SetDenoisingOption(parameters, &capturer, true);
1645 1657
1646 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; 1658 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set.";
1647 EXPECT_FALSE(vp8_settings.denoisingOn); 1659 EXPECT_FALSE(vp8_settings.denoisingOn);
1648 EXPECT_FALSE(vp8_settings.automaticResizeOn); 1660 EXPECT_FALSE(vp8_settings.automaticResizeOn);
1649 EXPECT_FALSE(vp8_settings.frameDroppingOn); 1661 EXPECT_FALSE(vp8_settings.frameDroppingOn);
1650 1662
1651 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1663 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL));
1652 } 1664 }
1653 1665
1654 class Vp9SettingsTest : public WebRtcVideoChannel2Test { 1666 class Vp9SettingsTest : public WebRtcVideoChannel2Test {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1688 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1700 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer));
1689 channel_->SetSend(true); 1701 channel_->SetSend(true);
1690 1702
1691 EXPECT_TRUE(capturer.CaptureFrame()); 1703 EXPECT_TRUE(capturer.CaptureFrame());
1692 1704
1693 webrtc::VideoCodecVP9 vp9_settings; 1705 webrtc::VideoCodecVP9 vp9_settings;
1694 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1706 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1695 EXPECT_FALSE(vp9_settings.denoisingOn) 1707 EXPECT_FALSE(vp9_settings.denoisingOn)
1696 << "VP9 denoising should be off by default."; 1708 << "VP9 denoising should be off by default.";
1697 1709
1698 stream = SetDenoisingOption(parameters, false); 1710 stream = SetDenoisingOption(parameters, &capturer, false);
1699 1711
1700 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1712 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1701 EXPECT_FALSE(vp9_settings.denoisingOn); 1713 EXPECT_FALSE(vp9_settings.denoisingOn);
1702 // Frame dropping always on for real time video. 1714 // Frame dropping always on for real time video.
1703 EXPECT_TRUE(vp9_settings.frameDroppingOn); 1715 EXPECT_TRUE(vp9_settings.frameDroppingOn);
1704 1716
1705 stream = SetDenoisingOption(parameters, true); 1717 stream = SetDenoisingOption(parameters, &capturer, true);
1706 1718
1707 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1719 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1708 EXPECT_TRUE(vp9_settings.denoisingOn); 1720 EXPECT_TRUE(vp9_settings.denoisingOn);
1709 EXPECT_TRUE(vp9_settings.frameDroppingOn); 1721 EXPECT_TRUE(vp9_settings.frameDroppingOn);
1710 1722
1711 // In screen-share mode, denoising is forced off. 1723 // In screen-share mode, denoising is forced off.
1712 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); 1724 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr));
1713 capturer.SetScreencast(true); 1725 capturer.SetScreencast(true);
1714 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 1726 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer));
1715 1727
1716 EXPECT_TRUE(capturer.CaptureFrame()); 1728 EXPECT_TRUE(capturer.CaptureFrame());
1717 stream = SetDenoisingOption(parameters, false); 1729 stream = SetDenoisingOption(parameters, &capturer, false);
1718 1730
1719 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1731 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1720 EXPECT_FALSE(vp9_settings.denoisingOn); 1732 EXPECT_FALSE(vp9_settings.denoisingOn);
1721 // Frame dropping always off for screen sharing. 1733 // Frame dropping always off for screen sharing.
1722 EXPECT_FALSE(vp9_settings.frameDroppingOn); 1734 EXPECT_FALSE(vp9_settings.frameDroppingOn);
1723 1735
1724 stream = SetDenoisingOption(parameters, false); 1736 stream = SetDenoisingOption(parameters, &capturer, false);
1725 1737
1726 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set."; 1738 ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
1727 EXPECT_FALSE(vp9_settings.denoisingOn); 1739 EXPECT_FALSE(vp9_settings.denoisingOn);
1728 EXPECT_FALSE(vp9_settings.frameDroppingOn); 1740 EXPECT_FALSE(vp9_settings.frameDroppingOn);
1729 1741
1730 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 1742 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL));
1731 } 1743 }
1732 1744
1733 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruse) { 1745 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruse) {
1734 TestCpuAdaptation(true, false); 1746 TestCpuAdaptation(true, false);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1810 } 1822 }
1811 1823
1812 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse, 1824 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse,
1813 bool is_screenshare) { 1825 bool is_screenshare) {
1814 cricket::VideoCodec codec = kVp8Codec720p; 1826 cricket::VideoCodec codec = kVp8Codec720p;
1815 cricket::VideoSendParameters parameters; 1827 cricket::VideoSendParameters parameters;
1816 parameters.codecs.push_back(codec); 1828 parameters.codecs.push_back(codec);
1817 1829
1818 MediaConfig media_config = MediaConfig(); 1830 MediaConfig media_config = MediaConfig();
1819 if (!enable_overuse) { 1831 if (!enable_overuse) {
1820 media_config.enable_cpu_overuse_detection = false; 1832 media_config.video.enable_cpu_overuse_detection = false;
1821 } 1833 }
1822 channel_.reset( 1834 channel_.reset(
1823 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); 1835 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions()));
1824 1836
1825 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 1837 EXPECT_TRUE(channel_->SetSendParameters(parameters));
1826 1838
1827 AddSendStream(); 1839 AddSendStream();
1828 1840
1829 cricket::FakeVideoCapturer capturer; 1841 cricket::FakeVideoCapturer capturer;
1830 capturer.SetScreencast(is_screenshare); 1842 capturer.SetScreencast(is_screenshare);
(...skipping 1339 matching lines...) Expand 10 before | Expand all | Expand 10 after
3170 // Test that we normalize send codec format size in simulcast. 3182 // Test that we normalize send codec format size in simulcast.
3171 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { 3183 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) {
3172 cricket::VideoCodec codec(kVp8Codec270p); 3184 cricket::VideoCodec codec(kVp8Codec270p);
3173 codec.width += 1; 3185 codec.width += 1;
3174 codec.height += 1; 3186 codec.height += 1;
3175 VerifySimulcastSettings(codec, 2, 2); 3187 VerifySimulcastSettings(codec, 2, 2);
3176 } 3188 }
3177 } // namespace cricket 3189 } // namespace cricket
3178 3190
3179 #endif // HAVE_WEBRTC_VIDEO 3191 #endif // HAVE_WEBRTC_VIDEO
OLDNEW
« no previous file with comments | « webrtc/media/engine/webrtcvideoengine2.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698