OLD | NEW |
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 14 matching lines...) Expand all Loading... |
25 #include "webrtc/media/engine/webrtcvideochannelfactory.h" | 25 #include "webrtc/media/engine/webrtcvideochannelfactory.h" |
26 #include "webrtc/media/engine/webrtcvideoengine2.h" | 26 #include "webrtc/media/engine/webrtcvideoengine2.h" |
27 #include "webrtc/media/engine/webrtcvoiceengine.h" | 27 #include "webrtc/media/engine/webrtcvoiceengine.h" |
28 #include "webrtc/test/field_trial.h" | 28 #include "webrtc/test/field_trial.h" |
29 #include "webrtc/video_encoder.h" | 29 #include "webrtc/video_encoder.h" |
30 | 30 |
31 using webrtc::RtpExtension; | 31 using webrtc::RtpExtension; |
32 | 32 |
33 namespace { | 33 namespace { |
34 static const int kDefaultQpMax = 56; | 34 static const int kDefaultQpMax = 56; |
35 static const int kDefaultFramerate = 30; | |
36 | 35 |
37 static const cricket::VideoCodec kVp8Codec720p(100, "VP8", 1280, 720, 30); | 36 static const cricket::VideoCodec kVp8Codec(100, "VP8"); |
38 static const cricket::VideoCodec kVp8Codec360p(100, "VP8", 640, 360, 30); | 37 static const cricket::VideoCodec kVp9Codec(101, "VP9"); |
39 static const cricket::VideoCodec kVp8Codec270p(100, "VP8", 480, 270, 30); | 38 static const cricket::VideoCodec kH264Codec(102, "H264"); |
40 | 39 |
41 static const cricket::VideoCodec kVp8Codec(100, "VP8", 640, 400, 30); | 40 static const cricket::VideoCodec kRedCodec(116, "red"); |
42 static const cricket::VideoCodec kVp9Codec(101, "VP9", 640, 400, 30); | 41 static const cricket::VideoCodec kUlpfecCodec(117, "ulpfec"); |
43 static const cricket::VideoCodec kH264Codec(102, "H264", 640, 400, 30); | |
44 | |
45 static const cricket::VideoCodec kRedCodec(116, "red", 0, 0, 0); | |
46 static const cricket::VideoCodec kUlpfecCodec(117, "ulpfec", 0, 0, 0); | |
47 | 42 |
48 static const uint8_t kRedRtxPayloadType = 125; | 43 static const uint8_t kRedRtxPayloadType = 125; |
49 | 44 |
50 static const uint32_t kSsrcs1[] = {1}; | 45 static const uint32_t kSsrcs1[] = {1}; |
51 static const uint32_t kSsrcs3[] = {1, 2, 3}; | 46 static const uint32_t kSsrcs3[] = {1, 2, 3}; |
52 static const uint32_t kRtxSsrcs1[] = {4}; | 47 static const uint32_t kRtxSsrcs1[] = {4}; |
53 static const uint32_t kIncomingUnsignalledSsrc = 0xC0FFEE; | 48 static const uint32_t kIncomingUnsignalledSsrc = 0xC0FFEE; |
54 static const char kUnsupportedExtensionName[] = | 49 static const char kUnsupportedExtensionName[] = |
55 "urn:ietf:params:rtp-hdrext:unsupported"; | 50 "urn:ietf:params:rtp-hdrext:unsupported"; |
56 | 51 |
(...skipping 770 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
827 WEBRTC_BASE_TEST(AddRemoveSendStreams); | 822 WEBRTC_BASE_TEST(AddRemoveSendStreams); |
828 | 823 |
829 WEBRTC_BASE_TEST(SimulateConference); | 824 WEBRTC_BASE_TEST(SimulateConference); |
830 | 825 |
831 WEBRTC_DISABLED_BASE_TEST(AddRemoveCapturer); | 826 WEBRTC_DISABLED_BASE_TEST(AddRemoveCapturer); |
832 | 827 |
833 WEBRTC_BASE_TEST(RemoveCapturerWithoutAdd); | 828 WEBRTC_BASE_TEST(RemoveCapturerWithoutAdd); |
834 | 829 |
835 WEBRTC_BASE_TEST(AddRemoveCapturerMultipleSources); | 830 WEBRTC_BASE_TEST(AddRemoveCapturerMultipleSources); |
836 | 831 |
837 // TODO(pbos): Figure out why this fails so often. | |
838 WEBRTC_DISABLED_BASE_TEST(HighAspectHighHeightCapturer); | |
839 | |
840 WEBRTC_BASE_TEST(RejectEmptyStreamParams); | 832 WEBRTC_BASE_TEST(RejectEmptyStreamParams); |
841 | 833 |
842 WEBRTC_BASE_TEST(AdaptResolution16x10); | |
843 | |
844 WEBRTC_BASE_TEST(AdaptResolution4x3); | |
845 | |
846 // TODO(juberti): Restore this test once we support sending 0 fps. | |
847 WEBRTC_DISABLED_BASE_TEST(AdaptDropAllFrames); | |
848 // TODO(juberti): Understand why we get decode errors on this test. | |
849 WEBRTC_DISABLED_BASE_TEST(AdaptFramerate); | |
850 | |
851 WEBRTC_BASE_TEST(SendsLowerResolutionOnSmallerFrames); | |
852 | |
853 WEBRTC_BASE_TEST(MultipleSendStreams); | 834 WEBRTC_BASE_TEST(MultipleSendStreams); |
854 | 835 |
855 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Vga) { | 836 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Vga) { |
856 SendAndReceive(cricket::VideoCodec(100, "VP8", 640, 400, 30)); | 837 SendAndReceive(cricket::VideoCodec(100, "VP8")); |
857 } | 838 } |
858 | 839 |
859 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Qvga) { | 840 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8Qvga) { |
860 SendAndReceive(cricket::VideoCodec(100, "VP8", 320, 200, 30)); | 841 SendAndReceive(cricket::VideoCodec(100, "VP8")); |
861 } | 842 } |
862 | 843 |
863 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8SvcQqvga) { | 844 TEST_F(WebRtcVideoChannel2BaseTest, SendAndReceiveVp8SvcQqvga) { |
864 SendAndReceive(cricket::VideoCodec(100, "VP8", 160, 100, 30)); | 845 SendAndReceive(cricket::VideoCodec(100, "VP8")); |
865 } | 846 } |
866 | 847 |
867 TEST_F(WebRtcVideoChannel2BaseTest, TwoStreamsSendAndReceive) { | 848 TEST_F(WebRtcVideoChannel2BaseTest, TwoStreamsSendAndReceive) { |
868 // Set a high bitrate to not be downscaled by VP8 due to low initial start | 849 // Set a high bitrate to not be downscaled by VP8 due to low initial start |
869 // bitrates. This currently happens at <250k, and two streams sharing 300k | 850 // bitrates. This currently happens at <250k, and two streams sharing 300k |
870 // initially will use QVGA instead of VGA. | 851 // initially will use QVGA instead of VGA. |
871 // TODO(pbos): Set up the quality scaler so that both senders reliably start | 852 // TODO(pbos): Set up the quality scaler so that both senders reliably start |
872 // at QVGA, then verify that instead. | 853 // at QVGA, then verify that instead. |
873 cricket::VideoCodec codec = kVp8Codec; | 854 cricket::VideoCodec codec = kVp8Codec; |
874 codec.params[kCodecParamStartBitrate] = "1000000"; | 855 codec.params[kCodecParamStartBitrate] = "1000000"; |
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1502 EXPECT_GT(send_stream->GetConfig().rtp.nack.rtp_history_ms, 0); | 1483 EXPECT_GT(send_stream->GetConfig().rtp.nack.rtp_history_ms, 0); |
1503 } | 1484 } |
1504 | 1485 |
1505 // This test verifies that new frame sizes reconfigures encoders even though not | 1486 // This test verifies that new frame sizes reconfigures encoders even though not |
1506 // (yet) sending. The purpose of this is to permit encoding as quickly as | 1487 // (yet) sending. The purpose of this is to permit encoding as quickly as |
1507 // possible once we start sending. Likely the frames being input are from the | 1488 // possible once we start sending. Likely the frames being input are from the |
1508 // same source that will be sent later, which just means that we're ready | 1489 // same source that will be sent later, which just means that we're ready |
1509 // earlier. | 1490 // earlier. |
1510 TEST_F(WebRtcVideoChannel2Test, ReconfiguresEncodersWhenNotSending) { | 1491 TEST_F(WebRtcVideoChannel2Test, ReconfiguresEncodersWhenNotSending) { |
1511 cricket::VideoSendParameters parameters; | 1492 cricket::VideoSendParameters parameters; |
1512 parameters.codecs.push_back(kVp8Codec720p); | 1493 parameters.codecs.push_back(kVp8Codec); |
1513 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 1494 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
1514 channel_->SetSend(false); | 1495 channel_->SetSend(false); |
1515 | 1496 |
1516 FakeVideoSendStream* stream = AddSendStream(); | 1497 FakeVideoSendStream* stream = AddSendStream(); |
1517 | 1498 |
1518 // No frames entered. | 1499 // No frames entered. |
1519 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); | 1500 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); |
1520 EXPECT_EQ(0u, streams[0].width); | 1501 EXPECT_EQ(0u, streams[0].width); |
1521 EXPECT_EQ(0u, streams[0].height); | 1502 EXPECT_EQ(0u, streams[0].height); |
1522 | 1503 |
1523 cricket::FakeVideoCapturer capturer; | 1504 cricket::FakeVideoCapturer capturer; |
1524 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, &capturer)); | 1505 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, &capturer)); |
1525 EXPECT_EQ(cricket::CS_RUNNING, | 1506 VideoFormat capture_format = capturer.GetSupportedFormats()->front(); |
1526 capturer.Start(capturer.GetSupportedFormats()->front())); | 1507 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format)); |
1527 EXPECT_TRUE(capturer.CaptureFrame()); | 1508 EXPECT_TRUE(capturer.CaptureFrame()); |
1528 | 1509 |
1529 // Frame entered, should be reconfigured to new dimensions. | 1510 // Frame entered, should be reconfigured to new dimensions. |
1530 streams = stream->GetVideoStreams(); | 1511 streams = stream->GetVideoStreams(); |
1531 EXPECT_EQ(kVp8Codec720p.width, streams[0].width); | 1512 EXPECT_EQ(capture_format.width, streams[0].width); |
1532 EXPECT_EQ(kVp8Codec720p.height, streams[0].height); | 1513 EXPECT_EQ(capture_format.height, streams[0].height); |
1533 | 1514 |
1534 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, nullptr)); | 1515 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, nullptr)); |
1535 } | 1516 } |
1536 | 1517 |
1537 TEST_F(WebRtcVideoChannel2Test, UsesCorrectSettingsForScreencast) { | 1518 TEST_F(WebRtcVideoChannel2Test, UsesCorrectSettingsForScreencast) { |
1538 static const int kScreenshareMinBitrateKbps = 800; | 1519 static const int kScreenshareMinBitrateKbps = 800; |
1539 cricket::VideoCodec codec = kVp8Codec360p; | 1520 cricket::VideoCodec codec = kVp8Codec; |
1540 cricket::VideoSendParameters parameters; | 1521 cricket::VideoSendParameters parameters; |
1541 parameters.codecs.push_back(codec); | 1522 parameters.codecs.push_back(codec); |
1542 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 1523 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
1543 AddSendStream(); | 1524 AddSendStream(); |
1544 | 1525 |
1545 cricket::FakeVideoCapturer capturer; | 1526 cricket::FakeVideoCapturer capturer; |
1546 VideoOptions min_bitrate_options; | 1527 VideoOptions min_bitrate_options; |
1547 min_bitrate_options.screencast_min_bitrate_kbps = | 1528 min_bitrate_options.screencast_min_bitrate_kbps = |
1548 rtc::Optional<int>(kScreenshareMinBitrateKbps); | 1529 rtc::Optional<int>(kScreenshareMinBitrateKbps); |
1549 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &min_bitrate_options, | 1530 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &min_bitrate_options, |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1718 | 1699 |
1719 TEST_F(WebRtcVideoChannel2Test, Vp8DenoisingEnabledByDefault) { | 1700 TEST_F(WebRtcVideoChannel2Test, Vp8DenoisingEnabledByDefault) { |
1720 FakeVideoSendStream* stream = AddSendStream(); | 1701 FakeVideoSendStream* stream = AddSendStream(); |
1721 webrtc::VideoCodecVP8 vp8_settings; | 1702 webrtc::VideoCodecVP8 vp8_settings; |
1722 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; | 1703 ASSERT_TRUE(stream->GetVp8Settings(&vp8_settings)) << "No VP8 config set."; |
1723 EXPECT_TRUE(vp8_settings.denoisingOn); | 1704 EXPECT_TRUE(vp8_settings.denoisingOn); |
1724 } | 1705 } |
1725 | 1706 |
1726 TEST_F(WebRtcVideoChannel2Test, VerifyVp8SpecificSettings) { | 1707 TEST_F(WebRtcVideoChannel2Test, VerifyVp8SpecificSettings) { |
1727 cricket::VideoSendParameters parameters; | 1708 cricket::VideoSendParameters parameters; |
1728 parameters.codecs.push_back(kVp8Codec720p); | 1709 parameters.codecs.push_back(kVp8Codec); |
1729 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 1710 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
1730 | 1711 |
1731 // Single-stream settings should apply with RTX as well (verifies that we | 1712 // Single-stream settings should apply with RTX as well (verifies that we |
1732 // check number of regular SSRCs and not StreamParams::ssrcs which contains | 1713 // check number of regular SSRCs and not StreamParams::ssrcs which contains |
1733 // both RTX and regular SSRCs). | 1714 // both RTX and regular SSRCs). |
1734 FakeVideoSendStream* stream = SetUpSimulcast(false, true); | 1715 FakeVideoSendStream* stream = SetUpSimulcast(false, true); |
1735 | 1716 |
1736 cricket::FakeVideoCapturer capturer; | 1717 cricket::FakeVideoCapturer capturer; |
1737 EXPECT_EQ(cricket::CS_RUNNING, | 1718 EXPECT_EQ(cricket::CS_RUNNING, |
1738 capturer.Start(capturer.GetSupportedFormats()->front())); | 1719 capturer.Start(capturer.GetSupportedFormats()->front())); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1799 // Test that setting the same options doesn't result in the encoder being | 1780 // Test that setting the same options doesn't result in the encoder being |
1800 // reconfigured. | 1781 // reconfigured. |
1801 TEST_F(WebRtcVideoChannel2Test, SetIdenticalOptionsDoesntReconfigureEncoder) { | 1782 TEST_F(WebRtcVideoChannel2Test, SetIdenticalOptionsDoesntReconfigureEncoder) { |
1802 VideoOptions options; | 1783 VideoOptions options; |
1803 cricket::FakeVideoCapturer capturer; | 1784 cricket::FakeVideoCapturer capturer; |
1804 | 1785 |
1805 AddSendStream(); | 1786 AddSendStream(); |
1806 EXPECT_EQ(cricket::CS_RUNNING, | 1787 EXPECT_EQ(cricket::CS_RUNNING, |
1807 capturer.Start(capturer.GetSupportedFormats()->front())); | 1788 capturer.Start(capturer.GetSupportedFormats()->front())); |
1808 cricket::VideoSendParameters parameters; | 1789 cricket::VideoSendParameters parameters; |
1809 parameters.codecs.push_back(kVp8Codec720p); | 1790 parameters.codecs.push_back(kVp8Codec); |
1810 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 1791 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
1811 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); | 1792 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); |
1812 | 1793 |
1813 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options, &capturer)); | 1794 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options, &capturer)); |
1814 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options, &capturer)); | 1795 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options, &capturer)); |
1815 EXPECT_TRUE(capturer.CaptureFrame()); | 1796 EXPECT_TRUE(capturer.CaptureFrame()); |
1816 // Expect 1 reconfigurations at this point from the initial configuration. | 1797 // Expect 1 reconfigurations at this point from the initial configuration. |
1817 EXPECT_EQ(1, send_stream->num_encoder_reconfigurations()); | 1798 EXPECT_EQ(1, send_stream->num_encoder_reconfigurations()); |
1818 | 1799 |
1819 // Set the options one more time and expect no additional reconfigurations. | 1800 // Set the options one more time and expect no additional reconfigurations. |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1979 | 1960 |
1980 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenDisabled) { | 1961 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenDisabled) { |
1981 TestCpuAdaptation(false, false); | 1962 TestCpuAdaptation(false, false); |
1982 } | 1963 } |
1983 | 1964 |
1984 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenScreensharing) { | 1965 TEST_F(WebRtcVideoChannel2Test, DoesNotAdaptOnOveruseWhenScreensharing) { |
1985 TestCpuAdaptation(true, true); | 1966 TestCpuAdaptation(true, true); |
1986 } | 1967 } |
1987 | 1968 |
1988 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruseAndChangeResolution) { | 1969 TEST_F(WebRtcVideoChannel2Test, AdaptsOnOveruseAndChangeResolution) { |
1989 cricket::VideoCodec codec = kVp8Codec720p; | 1970 cricket::VideoCodec codec = kVp8Codec; |
1990 cricket::VideoSendParameters parameters; | 1971 cricket::VideoSendParameters parameters; |
1991 parameters.codecs.push_back(codec); | 1972 parameters.codecs.push_back(codec); |
1992 | 1973 |
1993 MediaConfig media_config = MediaConfig(); | 1974 MediaConfig media_config = MediaConfig(); |
1994 channel_.reset( | 1975 channel_.reset( |
1995 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); | 1976 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); |
1996 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 1977 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
1997 | 1978 |
1998 AddSendStream(); | 1979 AddSendStream(); |
1999 | 1980 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2053 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); | 2034 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); |
2054 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); | 2035 EXPECT_TRUE(capturer.CaptureCustomFrame(1284, 724, cricket::FOURCC_I420)); |
2055 EXPECT_EQ(7, send_stream->GetNumberOfSwappedFrames()); | 2036 EXPECT_EQ(7, send_stream->GetNumberOfSwappedFrames()); |
2056 EXPECT_EQ(1284, send_stream->GetLastWidth()); | 2037 EXPECT_EQ(1284, send_stream->GetLastWidth()); |
2057 EXPECT_EQ(724, send_stream->GetLastHeight()); | 2038 EXPECT_EQ(724, send_stream->GetLastHeight()); |
2058 | 2039 |
2059 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, nullptr)); | 2040 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, nullptr)); |
2060 } | 2041 } |
2061 | 2042 |
2062 TEST_F(WebRtcVideoChannel2Test, PreviousAdaptationDoesNotApplyToScreenshare) { | 2043 TEST_F(WebRtcVideoChannel2Test, PreviousAdaptationDoesNotApplyToScreenshare) { |
2063 cricket::VideoCodec codec = kVp8Codec720p; | 2044 cricket::VideoCodec codec = kVp8Codec; |
2064 cricket::VideoSendParameters parameters; | 2045 cricket::VideoSendParameters parameters; |
2065 parameters.codecs.push_back(codec); | 2046 parameters.codecs.push_back(codec); |
2066 | 2047 |
2067 MediaConfig media_config = MediaConfig(); | 2048 MediaConfig media_config = MediaConfig(); |
2068 channel_.reset( | 2049 channel_.reset( |
2069 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); | 2050 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); |
2070 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2051 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
2071 | 2052 |
2072 AddSendStream(); | 2053 AddSendStream(); |
2073 | 2054 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2116 EXPECT_TRUE(capturer.CaptureCustomFrame(1280, 720, cricket::FOURCC_I420)); | 2097 EXPECT_TRUE(capturer.CaptureCustomFrame(1280, 720, cricket::FOURCC_I420)); |
2117 EXPECT_EQ(4, send_stream->GetNumberOfSwappedFrames()); | 2098 EXPECT_EQ(4, send_stream->GetNumberOfSwappedFrames()); |
2118 EXPECT_EQ(1280 * 3 / 4, send_stream->GetLastWidth()); | 2099 EXPECT_EQ(1280 * 3 / 4, send_stream->GetLastWidth()); |
2119 EXPECT_EQ(720 * 3 / 4, send_stream->GetLastHeight()); | 2100 EXPECT_EQ(720 * 3 / 4, send_stream->GetLastHeight()); |
2120 | 2101 |
2121 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, nullptr)); | 2102 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, nullptr)); |
2122 } | 2103 } |
2123 | 2104 |
2124 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse, | 2105 void WebRtcVideoChannel2Test::TestCpuAdaptation(bool enable_overuse, |
2125 bool is_screenshare) { | 2106 bool is_screenshare) { |
2126 cricket::VideoCodec codec = kVp8Codec720p; | 2107 cricket::VideoCodec codec = kVp8Codec; |
2127 cricket::VideoSendParameters parameters; | 2108 cricket::VideoSendParameters parameters; |
2128 parameters.codecs.push_back(codec); | 2109 parameters.codecs.push_back(codec); |
2129 | 2110 |
2130 MediaConfig media_config = MediaConfig(); | 2111 MediaConfig media_config = MediaConfig(); |
2131 if (!enable_overuse) { | 2112 if (!enable_overuse) { |
2132 media_config.video.enable_cpu_overuse_detection = false; | 2113 media_config.video.enable_cpu_overuse_detection = false; |
2133 } | 2114 } |
2134 channel_.reset( | 2115 channel_.reset( |
2135 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); | 2116 engine_.CreateChannel(fake_call_.get(), media_config, VideoOptions())); |
2136 | 2117 |
2137 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2118 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2138 | 2119 |
2139 AddSendStream(); | 2120 AddSendStream(); |
2140 | 2121 |
2141 cricket::FakeVideoCapturer capturer; | 2122 cricket::FakeVideoCapturer capturer; |
2142 VideoOptions options; | 2123 VideoOptions options; |
2143 options.is_screencast = rtc::Optional<bool>(is_screenshare); | 2124 options.is_screencast = rtc::Optional<bool>(is_screenshare); |
2144 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options, &capturer)); | 2125 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, &options, &capturer)); |
2145 EXPECT_EQ(cricket::CS_RUNNING, | 2126 cricket::VideoFormat capture_format = capturer.GetSupportedFormats()->front(); |
2146 capturer.Start(capturer.GetSupportedFormats()->front())); | 2127 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format)); |
2147 | 2128 |
2148 EXPECT_TRUE(channel_->SetSend(true)); | 2129 EXPECT_TRUE(channel_->SetSend(true)); |
2149 | 2130 |
2150 // Trigger overuse. | 2131 // Trigger overuse. |
2151 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); | 2132 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); |
2152 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); | 2133 FakeVideoSendStream* send_stream = fake_call_->GetVideoSendStreams().front(); |
2153 webrtc::LoadObserver* overuse_callback = | 2134 webrtc::LoadObserver* overuse_callback = |
2154 send_stream->GetConfig().overuse_callback; | 2135 send_stream->GetConfig().overuse_callback; |
2155 | 2136 |
2156 if (!enable_overuse) { | 2137 if (!enable_overuse) { |
2157 ASSERT_TRUE(overuse_callback == NULL); | 2138 ASSERT_TRUE(overuse_callback == NULL); |
2158 | 2139 |
2159 EXPECT_TRUE(capturer.CaptureFrame()); | 2140 EXPECT_TRUE(capturer.CaptureFrame()); |
2160 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); | 2141 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); |
2161 | 2142 |
2162 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); | 2143 EXPECT_EQ(capture_format.width, send_stream->GetLastWidth()); |
2163 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); | 2144 EXPECT_EQ(capture_format.height, send_stream->GetLastHeight()); |
2164 | 2145 |
2165 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, nullptr)); | 2146 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, nullptr)); |
2166 return; | 2147 return; |
2167 } | 2148 } |
2168 | 2149 |
2169 ASSERT_TRUE(overuse_callback != NULL); | 2150 ASSERT_TRUE(overuse_callback != NULL); |
2170 EXPECT_TRUE(capturer.CaptureFrame()); | 2151 EXPECT_TRUE(capturer.CaptureFrame()); |
2171 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); | 2152 EXPECT_EQ(1, send_stream->GetNumberOfSwappedFrames()); |
2172 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); | 2153 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse); |
2173 | 2154 |
2174 EXPECT_TRUE(capturer.CaptureFrame()); | 2155 EXPECT_TRUE(capturer.CaptureFrame()); |
2175 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); | 2156 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); |
2176 | 2157 |
2177 if (is_screenshare) { | 2158 if (is_screenshare) { |
2178 // Do not adapt screen share. | 2159 // Do not adapt screen share. |
2179 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); | 2160 EXPECT_EQ(capture_format.width, send_stream->GetLastWidth()); |
2180 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); | 2161 EXPECT_EQ(capture_format.height, send_stream->GetLastHeight()); |
2181 } else { | 2162 } else { |
2182 EXPECT_LT(send_stream->GetLastWidth(), codec.width); | 2163 EXPECT_LT(send_stream->GetLastWidth(), capture_format.width); |
2183 EXPECT_LT(send_stream->GetLastHeight(), codec.height); | 2164 EXPECT_LT(send_stream->GetLastHeight(), capture_format.height); |
2184 } | 2165 } |
2185 | 2166 |
2186 // Trigger underuse which should go back to normal resolution. | 2167 // Trigger underuse which should go back to normal resolution. |
2187 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); | 2168 overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse); |
2188 EXPECT_TRUE(capturer.CaptureFrame()); | 2169 EXPECT_TRUE(capturer.CaptureFrame()); |
2189 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); | 2170 EXPECT_EQ(3, send_stream->GetNumberOfSwappedFrames()); |
2190 | 2171 |
2191 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); | 2172 EXPECT_EQ(capture_format.width, send_stream->GetLastWidth()); |
2192 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); | 2173 EXPECT_EQ(capture_format.height, send_stream->GetLastHeight()); |
2193 | 2174 |
2194 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, nullptr)); | 2175 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, nullptr)); |
2195 } | 2176 } |
2196 | 2177 |
2197 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) { | 2178 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) { |
2198 // Start at last timestamp to verify that wraparounds are estimated correctly. | 2179 // Start at last timestamp to verify that wraparounds are estimated correctly. |
2199 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu; | 2180 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu; |
2200 static const int64_t kInitialNtpTimeMs = 1247891230; | 2181 static const int64_t kInitialNtpTimeMs = 1247891230; |
2201 static const int kFrameOffsetMs = 20; | 2182 static const int kFrameOffsetMs = 20; |
2202 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 2183 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2263 FakeVideoSendStream* stream = AddSendStream(); | 2244 FakeVideoSendStream* stream = AddSendStream(); |
2264 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy(); | 2245 webrtc::VideoSendStream::Config config = stream->GetConfig().Copy(); |
2265 | 2246 |
2266 EXPECT_EQ(-1, config.rtp.ulpfec.ulpfec_payload_type); | 2247 EXPECT_EQ(-1, config.rtp.ulpfec.ulpfec_payload_type); |
2267 EXPECT_EQ(-1, config.rtp.ulpfec.red_payload_type); | 2248 EXPECT_EQ(-1, config.rtp.ulpfec.red_payload_type); |
2268 } | 2249 } |
2269 | 2250 |
2270 TEST_F(WebRtcVideoChannel2Test, | 2251 TEST_F(WebRtcVideoChannel2Test, |
2271 SetSendCodecRejectsRtxWithoutAssociatedPayloadType) { | 2252 SetSendCodecRejectsRtxWithoutAssociatedPayloadType) { |
2272 cricket::VideoSendParameters parameters; | 2253 cricket::VideoSendParameters parameters; |
2273 cricket::VideoCodec rtx_codec(96, "rtx", 0, 0, 0); | 2254 cricket::VideoCodec rtx_codec(96, "rtx"); |
2274 parameters.codecs.push_back(rtx_codec); | 2255 parameters.codecs.push_back(rtx_codec); |
2275 EXPECT_FALSE(channel_->SetSendParameters(parameters)) | 2256 EXPECT_FALSE(channel_->SetSendParameters(parameters)) |
2276 << "RTX codec without associated payload type should be rejected."; | 2257 << "RTX codec without associated payload type should be rejected."; |
2277 } | 2258 } |
2278 | 2259 |
2279 TEST_F(WebRtcVideoChannel2Test, | 2260 TEST_F(WebRtcVideoChannel2Test, |
2280 SetSendCodecRejectsRtxWithoutMatchingVideoCodec) { | 2261 SetSendCodecRejectsRtxWithoutMatchingVideoCodec) { |
2281 cricket::VideoSendParameters parameters; | 2262 cricket::VideoSendParameters parameters; |
2282 cricket::VideoCodec rtx_codec = | 2263 cricket::VideoCodec rtx_codec = |
2283 cricket::VideoCodec::CreateRtxCodec(96, kVp8Codec.id); | 2264 cricket::VideoCodec::CreateRtxCodec(96, kVp8Codec.id); |
(...skipping 24 matching lines...) Expand all Loading... |
2308 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2289 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
2309 stream = fake_call_->GetVideoSendStreams()[0]; | 2290 stream = fake_call_->GetVideoSendStreams()[0]; |
2310 ASSERT_TRUE(stream != NULL); | 2291 ASSERT_TRUE(stream != NULL); |
2311 config = stream->GetConfig().Copy(); | 2292 config = stream->GetConfig().Copy(); |
2312 EXPECT_EQ(-1, config.rtp.ulpfec.ulpfec_payload_type) | 2293 EXPECT_EQ(-1, config.rtp.ulpfec.ulpfec_payload_type) |
2313 << "SetSendCodec without FEC should disable current FEC."; | 2294 << "SetSendCodec without FEC should disable current FEC."; |
2314 } | 2295 } |
2315 | 2296 |
2316 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) { | 2297 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) { |
2317 cricket::VideoSendParameters parameters; | 2298 cricket::VideoSendParameters parameters; |
2318 cricket::VideoCodec codec720p(100, "VP8", 1280, 720, 30); | 2299 cricket::VideoCodec codec(100, "VP8"); |
2319 codec720p.SetParam(kCodecParamMaxQuantization, kDefaultQpMax); | 2300 codec.SetParam(kCodecParamMaxQuantization, kDefaultQpMax); |
2320 parameters.codecs.push_back(codec720p); | 2301 parameters.codecs.push_back(codec); |
2321 | 2302 |
2322 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2303 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
2323 channel_->SetSend(true); | 2304 channel_->SetSend(true); |
2324 | 2305 |
2325 FakeVideoSendStream* stream = AddSendStream(); | 2306 FakeVideoSendStream* stream = AddSendStream(); |
2326 cricket::FakeVideoCapturer capturer; | 2307 cricket::FakeVideoCapturer capturer; |
2327 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, &capturer)); | 2308 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, &capturer)); |
2328 | 2309 |
2329 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); | 2310 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); |
2330 EXPECT_EQ(kDefaultQpMax, streams[0].max_qp); | 2311 EXPECT_EQ(kDefaultQpMax, streams[0].max_qp); |
2331 | 2312 |
2332 parameters.codecs.clear(); | 2313 parameters.codecs.clear(); |
2333 codec720p.SetParam(kCodecParamMaxQuantization, kDefaultQpMax + 1); | 2314 codec.SetParam(kCodecParamMaxQuantization, kDefaultQpMax + 1); |
2334 parameters.codecs.push_back(codec720p); | 2315 parameters.codecs.push_back(codec); |
2335 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2316 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
2336 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams(); | 2317 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams(); |
2337 EXPECT_EQ(kDefaultQpMax + 1, streams[0].max_qp); | 2318 EXPECT_EQ(kDefaultQpMax + 1, streams[0].max_qp); |
2338 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, nullptr)); | 2319 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, nullptr)); |
2339 } | 2320 } |
2340 | 2321 |
2341 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) { | 2322 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) { |
2342 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", | 2323 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", |
2343 200000); | 2324 200000); |
2344 } | 2325 } |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2440 send_parameters_.max_bandwidth_bps = 77777; | 2421 send_parameters_.max_bandwidth_bps = 77777; |
2441 ASSERT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2422 ASSERT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2442 EXPECT_EQ(send_parameters_.max_bandwidth_bps, | 2423 EXPECT_EQ(send_parameters_.max_bandwidth_bps, |
2443 fake_call_->GetConfig().bitrate_config.max_bitrate_bps); | 2424 fake_call_->GetConfig().bitrate_config.max_bitrate_bps); |
2444 EXPECT_EQ(send_parameters_.max_bandwidth_bps, | 2425 EXPECT_EQ(send_parameters_.max_bandwidth_bps, |
2445 stream->GetVideoStreams()[0].max_bitrate_bps); | 2426 stream->GetVideoStreams()[0].max_bitrate_bps); |
2446 } | 2427 } |
2447 | 2428 |
2448 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) { | 2429 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) { |
2449 cricket::VideoSendParameters parameters; | 2430 cricket::VideoSendParameters parameters; |
2450 parameters.codecs.push_back(kVp8Codec720p); | 2431 parameters.codecs.push_back(kVp8Codec); |
2451 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2432 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
2452 channel_->SetSend(true); | 2433 channel_->SetSend(true); |
2453 | 2434 |
2454 FakeVideoSendStream* stream = AddSendStream(); | 2435 FakeVideoSendStream* stream = AddSendStream(); |
2455 | 2436 |
2456 cricket::FakeVideoCapturer capturer; | 2437 cricket::FakeVideoCapturer capturer; |
2457 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, &capturer)); | 2438 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, &capturer)); |
2458 EXPECT_EQ(cricket::CS_RUNNING, | 2439 EXPECT_EQ(cricket::CS_RUNNING, |
2459 capturer.Start(capturer.GetSupportedFormats()->front())); | 2440 capturer.Start(capturer.GetSupportedFormats()->front())); |
2460 | 2441 |
2461 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); | 2442 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); |
2462 int initial_max_bitrate_bps = streams[0].max_bitrate_bps; | 2443 int initial_max_bitrate_bps = streams[0].max_bitrate_bps; |
2463 EXPECT_GT(initial_max_bitrate_bps, 0); | 2444 EXPECT_GT(initial_max_bitrate_bps, 0); |
2464 | 2445 |
2465 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; | 2446 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; |
2466 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2447 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2467 // Insert a frame to update the encoder config. | 2448 // Insert a frame to update the encoder config. |
2468 EXPECT_TRUE(capturer.CaptureFrame()); | 2449 EXPECT_TRUE(capturer.CaptureFrame()); |
2469 streams = stream->GetVideoStreams(); | 2450 streams = stream->GetVideoStreams(); |
2470 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps); | 2451 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps); |
2471 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, nullptr)); | 2452 EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, true, nullptr, nullptr)); |
2472 } | 2453 } |
2473 | 2454 |
2474 TEST_F(WebRtcVideoChannel2Test, | 2455 TEST_F(WebRtcVideoChannel2Test, |
2475 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) { | 2456 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) { |
2476 cricket::VideoSendParameters parameters; | 2457 cricket::VideoSendParameters parameters; |
2477 parameters.codecs.push_back(kVp8Codec720p); | 2458 parameters.codecs.push_back(kVp8Codec); |
2478 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 2459 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
2479 channel_->SetSend(true); | 2460 channel_->SetSend(true); |
2480 | 2461 |
2481 FakeVideoSendStream* stream = AddSendStream( | 2462 FakeVideoSendStream* stream = AddSendStream( |
2482 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); | 2463 cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3))); |
2483 | 2464 |
2484 // Send a frame to make sure this scales up to >1 stream (simulcast). | 2465 // Send a frame to make sure this scales up to >1 stream (simulcast). |
2485 cricket::FakeVideoCapturer capturer; | 2466 cricket::FakeVideoCapturer capturer; |
2486 EXPECT_TRUE(channel_->SetVideoSend(kSsrcs3[0], true, nullptr, &capturer)); | 2467 EXPECT_TRUE(channel_->SetVideoSend(kSsrcs3[0], true, nullptr, &capturer)); |
2487 EXPECT_EQ(cricket::CS_RUNNING, | 2468 EXPECT_EQ(cricket::CS_RUNNING, |
(...skipping 24 matching lines...) Expand all Loading... |
2512 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization; | 2493 parameters.codecs[0].params[kCodecParamMaxQuantization] = kMaxQuantization; |
2513 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2494 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2514 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)), | 2495 EXPECT_EQ(static_cast<unsigned int>(atoi(kMaxQuantization)), |
2515 AddSendStream()->GetVideoStreams().back().max_qp); | 2496 AddSendStream()->GetVideoStreams().back().max_qp); |
2516 | 2497 |
2517 VideoCodec codec; | 2498 VideoCodec codec; |
2518 EXPECT_TRUE(channel_->GetSendCodec(&codec)); | 2499 EXPECT_TRUE(channel_->GetSendCodec(&codec)); |
2519 EXPECT_EQ(kMaxQuantization, codec.params[kCodecParamMaxQuantization]); | 2500 EXPECT_EQ(kMaxQuantization, codec.params[kCodecParamMaxQuantization]); |
2520 } | 2501 } |
2521 | 2502 |
2522 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsRejectBadDimensions) { | |
2523 cricket::VideoSendParameters parameters; | |
2524 parameters.codecs.push_back(kVp8Codec); | |
2525 | |
2526 parameters.codecs[0].width = 0; | |
2527 EXPECT_FALSE(channel_->SetSendParameters(parameters)) | |
2528 << "Codec set though codec width is zero."; | |
2529 | |
2530 parameters.codecs[0].width = kVp8Codec.width; | |
2531 parameters.codecs[0].height = 0; | |
2532 EXPECT_FALSE(channel_->SetSendParameters(parameters)) | |
2533 << "Codec set though codec height is zero."; | |
2534 } | |
2535 | |
2536 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsRejectBadPayloadTypes) { | 2503 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsRejectBadPayloadTypes) { |
2537 // TODO(pbos): Should we only allow the dynamic range? | 2504 // TODO(pbos): Should we only allow the dynamic range? |
2538 static const int kIncorrectPayloads[] = {-2, -1, 128, 129}; | 2505 static const int kIncorrectPayloads[] = {-2, -1, 128, 129}; |
2539 cricket::VideoSendParameters parameters; | 2506 cricket::VideoSendParameters parameters; |
2540 parameters.codecs.push_back(kVp8Codec); | 2507 parameters.codecs.push_back(kVp8Codec); |
2541 for (size_t i = 0; i < arraysize(kIncorrectPayloads); ++i) { | 2508 for (size_t i = 0; i < arraysize(kIncorrectPayloads); ++i) { |
2542 parameters.codecs[0].id = kIncorrectPayloads[i]; | 2509 parameters.codecs[0].id = kIncorrectPayloads[i]; |
2543 EXPECT_FALSE(channel_->SetSendParameters(parameters)) | 2510 EXPECT_FALSE(channel_->SetSendParameters(parameters)) |
2544 << "Bad payload type '" << kIncorrectPayloads[i] << "' accepted."; | 2511 << "Bad payload type '" << kIncorrectPayloads[i] << "' accepted."; |
2545 } | 2512 } |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2578 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsWithOnlyVp8) { | 2545 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsWithOnlyVp8) { |
2579 cricket::VideoRecvParameters parameters; | 2546 cricket::VideoRecvParameters parameters; |
2580 parameters.codecs.push_back(kVp8Codec); | 2547 parameters.codecs.push_back(kVp8Codec); |
2581 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 2548 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
2582 } | 2549 } |
2583 | 2550 |
2584 // Test that we set our inbound RTX codecs properly. | 2551 // Test that we set our inbound RTX codecs properly. |
2585 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsWithRtx) { | 2552 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsWithRtx) { |
2586 cricket::VideoRecvParameters parameters; | 2553 cricket::VideoRecvParameters parameters; |
2587 parameters.codecs.push_back(kVp8Codec); | 2554 parameters.codecs.push_back(kVp8Codec); |
2588 cricket::VideoCodec rtx_codec(96, "rtx", 0, 0, 0); | 2555 cricket::VideoCodec rtx_codec(96, "rtx"); |
2589 parameters.codecs.push_back(rtx_codec); | 2556 parameters.codecs.push_back(rtx_codec); |
2590 EXPECT_FALSE(channel_->SetRecvParameters(parameters)) | 2557 EXPECT_FALSE(channel_->SetRecvParameters(parameters)) |
2591 << "RTX codec without associated payload should be rejected."; | 2558 << "RTX codec without associated payload should be rejected."; |
2592 | 2559 |
2593 parameters.codecs[1].SetParam("apt", kVp8Codec.id + 1); | 2560 parameters.codecs[1].SetParam("apt", kVp8Codec.id + 1); |
2594 EXPECT_FALSE(channel_->SetRecvParameters(parameters)) | 2561 EXPECT_FALSE(channel_->SetRecvParameters(parameters)) |
2595 << "RTX codec with invalid associated payload type should be rejected."; | 2562 << "RTX codec with invalid associated payload type should be rejected."; |
2596 | 2563 |
2597 parameters.codecs[1].SetParam("apt", kVp8Codec.id); | 2564 parameters.codecs[1].SetParam("apt", kVp8Codec.id); |
2598 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 2565 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
2599 | 2566 |
2600 cricket::VideoCodec rtx_codec2(97, "rtx", 0, 0, 0); | 2567 cricket::VideoCodec rtx_codec2(97, "rtx"); |
2601 rtx_codec2.SetParam("apt", rtx_codec.id); | 2568 rtx_codec2.SetParam("apt", rtx_codec.id); |
2602 parameters.codecs.push_back(rtx_codec2); | 2569 parameters.codecs.push_back(rtx_codec2); |
2603 | 2570 |
2604 EXPECT_FALSE(channel_->SetRecvParameters(parameters)) << | 2571 EXPECT_FALSE(channel_->SetRecvParameters(parameters)) << |
2605 "RTX codec with another RTX as associated payload type should be " | 2572 "RTX codec with another RTX as associated payload type should be " |
2606 "rejected."; | 2573 "rejected."; |
2607 } | 2574 } |
2608 | 2575 |
2609 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsDifferentPayloadType) { | 2576 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsDifferentPayloadType) { |
2610 cricket::VideoRecvParameters parameters; | 2577 cricket::VideoRecvParameters parameters; |
2611 parameters.codecs.push_back(kVp8Codec); | 2578 parameters.codecs.push_back(kVp8Codec); |
2612 parameters.codecs[0].id = 99; | 2579 parameters.codecs[0].id = 99; |
2613 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 2580 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
2614 } | 2581 } |
2615 | 2582 |
2616 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsAcceptDefaultCodecs) { | 2583 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsAcceptDefaultCodecs) { |
2617 cricket::VideoRecvParameters parameters; | 2584 cricket::VideoRecvParameters parameters; |
2618 parameters.codecs = engine_.codecs(); | 2585 parameters.codecs = engine_.codecs(); |
2619 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 2586 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
2620 | 2587 |
2621 FakeVideoReceiveStream* stream = AddRecvStream(); | 2588 FakeVideoReceiveStream* stream = AddRecvStream(); |
2622 const webrtc::VideoReceiveStream::Config& config = stream->GetConfig(); | 2589 const webrtc::VideoReceiveStream::Config& config = stream->GetConfig(); |
2623 EXPECT_EQ(engine_.codecs()[0].name, config.decoders[0].payload_name); | 2590 EXPECT_EQ(engine_.codecs()[0].name, config.decoders[0].payload_name); |
2624 EXPECT_EQ(engine_.codecs()[0].id, config.decoders[0].payload_type); | 2591 EXPECT_EQ(engine_.codecs()[0].id, config.decoders[0].payload_type); |
2625 } | 2592 } |
2626 | 2593 |
2627 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsRejectUnsupportedCodec) { | 2594 TEST_F(WebRtcVideoChannel2Test, SetRecvCodecsRejectUnsupportedCodec) { |
2628 cricket::VideoRecvParameters parameters; | 2595 cricket::VideoRecvParameters parameters; |
2629 parameters.codecs.push_back(kVp8Codec); | 2596 parameters.codecs.push_back(kVp8Codec); |
2630 parameters.codecs.push_back(VideoCodec(101, "WTF3", 640, 400, 30)); | 2597 parameters.codecs.push_back(VideoCodec(101, "WTF3")); |
2631 EXPECT_FALSE(channel_->SetRecvParameters(parameters)); | 2598 EXPECT_FALSE(channel_->SetRecvParameters(parameters)); |
2632 } | 2599 } |
2633 | 2600 |
2634 // TODO(pbos): Enable VP9 through external codec support | 2601 // TODO(pbos): Enable VP9 through external codec support |
2635 TEST_F(WebRtcVideoChannel2Test, | 2602 TEST_F(WebRtcVideoChannel2Test, |
2636 DISABLED_SetRecvCodecsAcceptsMultipleVideoCodecs) { | 2603 DISABLED_SetRecvCodecsAcceptsMultipleVideoCodecs) { |
2637 cricket::VideoRecvParameters parameters; | 2604 cricket::VideoRecvParameters parameters; |
2638 parameters.codecs.push_back(kVp8Codec); | 2605 parameters.codecs.push_back(kVp8Codec); |
2639 parameters.codecs.push_back(kVp9Codec); | 2606 parameters.codecs.push_back(kVp9Codec); |
2640 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 2607 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2931 // Capture format VGA. | 2898 // Capture format VGA. |
2932 cricket::FakeVideoCapturer video_capturer_vga; | 2899 cricket::FakeVideoCapturer video_capturer_vga; |
2933 const std::vector<cricket::VideoFormat>* formats = | 2900 const std::vector<cricket::VideoFormat>* formats = |
2934 video_capturer_vga.GetSupportedFormats(); | 2901 video_capturer_vga.GetSupportedFormats(); |
2935 cricket::VideoFormat capture_format_vga = (*formats)[1]; | 2902 cricket::VideoFormat capture_format_vga = (*formats)[1]; |
2936 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); | 2903 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); |
2937 EXPECT_TRUE( | 2904 EXPECT_TRUE( |
2938 channel_->SetVideoSend(kSsrcs3[0], true, nullptr, &video_capturer_vga)); | 2905 channel_->SetVideoSend(kSsrcs3[0], true, nullptr, &video_capturer_vga)); |
2939 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); | 2906 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); |
2940 | 2907 |
2941 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30); | 2908 cricket::VideoCodec send_codec(100, "VP8"); |
2942 cricket::VideoSendParameters parameters; | 2909 cricket::VideoSendParameters parameters; |
2943 parameters.codecs.push_back(send_codec); | 2910 parameters.codecs.push_back(send_codec); |
2944 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2911 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2945 EXPECT_TRUE(channel_->SetSend(true)); | 2912 EXPECT_TRUE(channel_->SetSend(true)); |
2946 | 2913 |
2947 // Verify that the CpuOveruseObserver is registered and trigger downgrade. | 2914 // Verify that the CpuOveruseObserver is registered and trigger downgrade. |
2948 | 2915 |
2949 // Trigger overuse. | 2916 // Trigger overuse. |
2950 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); | 2917 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); |
2951 webrtc::LoadObserver* overuse_callback = | 2918 webrtc::LoadObserver* overuse_callback = |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3006 // Capture format VGA. | 2973 // Capture format VGA. |
3007 cricket::FakeVideoCapturer video_capturer_vga; | 2974 cricket::FakeVideoCapturer video_capturer_vga; |
3008 const std::vector<cricket::VideoFormat>* formats = | 2975 const std::vector<cricket::VideoFormat>* formats = |
3009 video_capturer_vga.GetSupportedFormats(); | 2976 video_capturer_vga.GetSupportedFormats(); |
3010 cricket::VideoFormat capture_format_vga = (*formats)[1]; | 2977 cricket::VideoFormat capture_format_vga = (*formats)[1]; |
3011 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); | 2978 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga)); |
3012 EXPECT_TRUE( | 2979 EXPECT_TRUE( |
3013 channel_->SetVideoSend(kSsrcs3[0], true, nullptr, &video_capturer_vga)); | 2980 channel_->SetVideoSend(kSsrcs3[0], true, nullptr, &video_capturer_vga)); |
3014 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); | 2981 EXPECT_TRUE(video_capturer_vga.CaptureFrame()); |
3015 | 2982 |
3016 cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30); | 2983 cricket::VideoCodec send_codec(100, "VP8"); |
3017 cricket::VideoSendParameters parameters; | 2984 cricket::VideoSendParameters parameters; |
3018 parameters.codecs.push_back(send_codec); | 2985 parameters.codecs.push_back(send_codec); |
3019 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2986 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
3020 EXPECT_TRUE(channel_->SetSend(true)); | 2987 EXPECT_TRUE(channel_->SetSend(true)); |
3021 | 2988 |
3022 // Verify that the CpuOveruseObserver is registered and trigger downgrade. | 2989 // Verify that the CpuOveruseObserver is registered and trigger downgrade. |
3023 | 2990 |
3024 // Trigger overuse -> adapt CPU. | 2991 // Trigger overuse -> adapt CPU. |
3025 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); | 2992 ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size()); |
3026 webrtc::LoadObserver* overuse_callback = | 2993 webrtc::LoadObserver* overuse_callback = |
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3601 EXPECT_EQ(kVp8Codec.ToCodecParameters(), rtp_parameters.codecs[0]); | 3568 EXPECT_EQ(kVp8Codec.ToCodecParameters(), rtp_parameters.codecs[0]); |
3602 EXPECT_EQ(kVp9Codec.ToCodecParameters(), rtp_parameters.codecs[1]); | 3569 EXPECT_EQ(kVp9Codec.ToCodecParameters(), rtp_parameters.codecs[1]); |
3603 } | 3570 } |
3604 | 3571 |
3605 #if defined(WEBRTC_USE_H264) | 3572 #if defined(WEBRTC_USE_H264) |
3606 TEST_F(WebRtcVideoChannel2Test, GetRtpReceiveFmtpSprop) { | 3573 TEST_F(WebRtcVideoChannel2Test, GetRtpReceiveFmtpSprop) { |
3607 #else | 3574 #else |
3608 TEST_F(WebRtcVideoChannel2Test, DISABLED_GetRtpReceiveFmtpSprop) { | 3575 TEST_F(WebRtcVideoChannel2Test, DISABLED_GetRtpReceiveFmtpSprop) { |
3609 #endif | 3576 #endif |
3610 cricket::VideoRecvParameters parameters; | 3577 cricket::VideoRecvParameters parameters; |
3611 cricket::VideoCodec kH264sprop1(101, "H264", 640, 400, 15); | 3578 cricket::VideoCodec kH264sprop1(101, "H264"); |
3612 kH264sprop1.SetParam("sprop-parameter-sets", "uvw"); | 3579 kH264sprop1.SetParam("sprop-parameter-sets", "uvw"); |
3613 parameters.codecs.push_back(kH264sprop1); | 3580 parameters.codecs.push_back(kH264sprop1); |
3614 cricket::VideoCodec kH264sprop2(102, "H264", 640, 400, 15); | 3581 cricket::VideoCodec kH264sprop2(102, "H264"); |
3615 kH264sprop2.SetParam("sprop-parameter-sets", "xyz"); | 3582 kH264sprop2.SetParam("sprop-parameter-sets", "xyz"); |
3616 parameters.codecs.push_back(kH264sprop2); | 3583 parameters.codecs.push_back(kH264sprop2); |
3617 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); | 3584 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); |
3618 | 3585 |
3619 FakeVideoReceiveStream* recv_stream = AddRecvStream(); | 3586 FakeVideoReceiveStream* recv_stream = AddRecvStream(); |
3620 const webrtc::VideoReceiveStream::Config& cfg = recv_stream->GetConfig(); | 3587 const webrtc::VideoReceiveStream::Config& cfg = recv_stream->GetConfig(); |
3621 webrtc::RtpParameters rtp_parameters = | 3588 webrtc::RtpParameters rtp_parameters = |
3622 channel_->GetRtpReceiveParameters(last_ssrc_); | 3589 channel_->GetRtpReceiveParameters(last_ssrc_); |
3623 ASSERT_EQ(2u, rtp_parameters.codecs.size()); | 3590 ASSERT_EQ(2u, rtp_parameters.codecs.size()); |
3624 EXPECT_EQ(kH264sprop1.ToCodecParameters(), rtp_parameters.codecs[0]); | 3591 EXPECT_EQ(kH264sprop1.ToCodecParameters(), rtp_parameters.codecs[0]); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3730 | 3697 |
3731 void SetUp() override { | 3698 void SetUp() override { |
3732 engine_.Init(); | 3699 engine_.Init(); |
3733 channel_.reset( | 3700 channel_.reset( |
3734 engine_.CreateChannel(&fake_call_, MediaConfig(), VideoOptions())); | 3701 engine_.CreateChannel(&fake_call_, MediaConfig(), VideoOptions())); |
3735 last_ssrc_ = 123; | 3702 last_ssrc_ = 123; |
3736 } | 3703 } |
3737 | 3704 |
3738 protected: | 3705 protected: |
3739 void VerifySimulcastSettings(const VideoCodec& codec, | 3706 void VerifySimulcastSettings(const VideoCodec& codec, |
| 3707 int capture_width, |
| 3708 int capture_height, |
3740 size_t num_configured_streams, | 3709 size_t num_configured_streams, |
3741 size_t expected_num_streams) { | 3710 size_t expected_num_streams) { |
3742 cricket::VideoSendParameters parameters; | 3711 cricket::VideoSendParameters parameters; |
3743 parameters.codecs.push_back(codec); | 3712 parameters.codecs.push_back(codec); |
3744 ASSERT_TRUE(channel_->SetSendParameters(parameters)); | 3713 ASSERT_TRUE(channel_->SetSendParameters(parameters)); |
3745 | 3714 |
3746 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); | 3715 std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3); |
3747 RTC_DCHECK(num_configured_streams <= ssrcs.size()); | 3716 RTC_DCHECK(num_configured_streams <= ssrcs.size()); |
3748 ssrcs.resize(num_configured_streams); | 3717 ssrcs.resize(num_configured_streams); |
3749 | 3718 |
3750 FakeVideoSendStream* stream = | 3719 FakeVideoSendStream* stream = |
3751 AddSendStream(CreateSimStreamParams("cname", ssrcs)); | 3720 AddSendStream(CreateSimStreamParams("cname", ssrcs)); |
3752 // Send a full-size frame to trigger a stream reconfiguration to use all | 3721 // Send a full-size frame to trigger a stream reconfiguration to use all |
3753 // expected simulcast layers. | 3722 // expected simulcast layers. |
3754 cricket::FakeVideoCapturer capturer; | 3723 cricket::FakeVideoCapturer capturer; |
3755 EXPECT_TRUE( | 3724 EXPECT_TRUE( |
3756 channel_->SetVideoSend(ssrcs.front(), true, nullptr, &capturer)); | 3725 channel_->SetVideoSend(ssrcs.front(), true, nullptr, &capturer)); |
3757 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat( | 3726 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat( |
3758 codec.width, codec.height, | 3727 capture_width, capture_height, |
3759 cricket::VideoFormat::FpsToInterval(30), | 3728 cricket::VideoFormat::FpsToInterval(30), |
3760 cricket::FOURCC_I420))); | 3729 cricket::FOURCC_I420))); |
3761 channel_->SetSend(true); | 3730 channel_->SetSend(true); |
3762 EXPECT_TRUE(capturer.CaptureFrame()); | 3731 EXPECT_TRUE(capturer.CaptureFrame()); |
3763 | 3732 |
3764 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams(); | 3733 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams(); |
3765 ASSERT_EQ(expected_num_streams, video_streams.size()); | 3734 ASSERT_EQ(expected_num_streams, video_streams.size()); |
3766 | 3735 |
3767 std::vector<webrtc::VideoStream> expected_streams = GetSimulcastConfig( | 3736 std::vector<webrtc::VideoStream> expected_streams = GetSimulcastConfig( |
3768 num_configured_streams, codec.width, codec.height, 0, kDefaultQpMax, | 3737 num_configured_streams, capture_width, capture_height, 0, kDefaultQpMax, |
3769 codec.framerate != 0 ? codec.framerate : kDefaultFramerate); | 3738 kDefaultVideoMaxFramerate); |
3770 | 3739 |
3771 ASSERT_EQ(expected_streams.size(), video_streams.size()); | 3740 ASSERT_EQ(expected_streams.size(), video_streams.size()); |
3772 | 3741 |
3773 size_t num_streams = video_streams.size(); | 3742 size_t num_streams = video_streams.size(); |
3774 int total_max_bitrate_bps = 0; | 3743 int total_max_bitrate_bps = 0; |
3775 for (size_t i = 0; i < num_streams; ++i) { | 3744 for (size_t i = 0; i < num_streams; ++i) { |
3776 EXPECT_EQ(expected_streams[i].width, video_streams[i].width); | 3745 EXPECT_EQ(expected_streams[i].width, video_streams[i].width); |
3777 EXPECT_EQ(expected_streams[i].height, video_streams[i].height); | 3746 EXPECT_EQ(expected_streams[i].height, video_streams[i].height); |
3778 | 3747 |
3779 EXPECT_GT(video_streams[i].max_framerate, 0); | 3748 EXPECT_GT(video_streams[i].max_framerate, 0); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3842 } | 3811 } |
3843 | 3812 |
3844 webrtc::RtcEventLogNullImpl event_log_; | 3813 webrtc::RtcEventLogNullImpl event_log_; |
3845 FakeCall fake_call_; | 3814 FakeCall fake_call_; |
3846 WebRtcVideoEngine2 engine_; | 3815 WebRtcVideoEngine2 engine_; |
3847 std::unique_ptr<VideoMediaChannel> channel_; | 3816 std::unique_ptr<VideoMediaChannel> channel_; |
3848 uint32_t last_ssrc_; | 3817 uint32_t last_ssrc_; |
3849 }; | 3818 }; |
3850 | 3819 |
3851 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith2SimulcastStreams) { | 3820 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith2SimulcastStreams) { |
3852 VerifySimulcastSettings(kVp8Codec, 2, 2); | 3821 VerifySimulcastSettings(kVp8Codec, 640, 360, 2, 2); |
3853 } | 3822 } |
3854 | 3823 |
3855 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith3SimulcastStreams) { | 3824 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith3SimulcastStreams) { |
3856 VerifySimulcastSettings(kVp8Codec720p, 3, 3); | 3825 VerifySimulcastSettings(kVp8Codec, 1280, 720, 3, 3); |
3857 } | 3826 } |
3858 | 3827 |
3859 // Test that we normalize send codec format size in simulcast. | 3828 // Test that we normalize send codec format size in simulcast. |
3860 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { | 3829 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { |
3861 cricket::VideoCodec codec(kVp8Codec270p); | 3830 cricket::VideoCodec codec(kVp8Codec); |
3862 codec.width += 1; | 3831 VerifySimulcastSettings(codec, 541, 271, 2, 2); |
3863 codec.height += 1; | |
3864 VerifySimulcastSettings(codec, 2, 2); | |
3865 } | 3832 } |
3866 } // namespace cricket | 3833 } // namespace cricket |
OLD | NEW |