| Index: webrtc/media/engine/webrtcvideoengine2_unittest.cc
|
| diff --git a/webrtc/media/engine/webrtcvideoengine2_unittest.cc b/webrtc/media/engine/webrtcvideoengine2_unittest.cc
|
| index f72d7ae86c49403eb7f73cc6b23c43b5a44639a2..a93d2d98c29599df279446b1abb5d90b4fda8a17 100644
|
| --- a/webrtc/media/engine/webrtcvideoengine2_unittest.cc
|
| +++ b/webrtc/media/engine/webrtcvideoengine2_unittest.cc
|
| @@ -21,6 +21,7 @@
|
| #include "webrtc/media/base/mediaconstants.h"
|
| #include "webrtc/media/base/testutils.h"
|
| #include "webrtc/media/base/videoengine_unittest.h"
|
| +#include "webrtc/media/engine/constants.h"
|
| #include "webrtc/media/engine/fakewebrtccall.h"
|
| #include "webrtc/media/engine/fakewebrtcvideoengine.h"
|
| #include "webrtc/media/engine/simulcast.h"
|
| @@ -3960,7 +3961,7 @@ TEST_F(WebRtcVideoChannel2Test, ConfiguresLocalSsrcOnExistingReceivers) {
|
| class WebRtcVideoChannel2SimulcastTest : public testing::Test {
|
| public:
|
| WebRtcVideoChannel2SimulcastTest()
|
| - : fake_call_(webrtc::Call::Config(&event_log_)) {}
|
| + : fake_call_(webrtc::Call::Config(&event_log_)), last_ssrc_(0) {}
|
|
|
| void SetUp() override {
|
| engine_.Init();
|
| @@ -3975,9 +3976,16 @@ class WebRtcVideoChannel2SimulcastTest : public testing::Test {
|
| int capture_width,
|
| int capture_height,
|
| size_t num_configured_streams,
|
| - size_t expected_num_streams) {
|
| + size_t expected_num_streams,
|
| + bool screenshare,
|
| + bool conference_mode) {
|
| cricket::VideoSendParameters parameters;
|
| + VideoOptions options;
|
| parameters.codecs.push_back(codec);
|
| + parameters.conference_mode = conference_mode;
|
| + if (screenshare) {
|
| + options.is_screencast = rtc::Optional<bool>(screenshare);
|
| + }
|
| ASSERT_TRUE(channel_->SetSendParameters(parameters));
|
|
|
| std::vector<uint32_t> ssrcs = MAKE_VECTOR(kSsrcs3);
|
| @@ -3990,7 +3998,7 @@ class WebRtcVideoChannel2SimulcastTest : public testing::Test {
|
| // expected simulcast layers.
|
| cricket::FakeVideoCapturer capturer;
|
| EXPECT_TRUE(
|
| - channel_->SetVideoSend(ssrcs.front(), true, nullptr, &capturer));
|
| + channel_->SetVideoSend(ssrcs.front(), true, &options, &capturer));
|
| EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(cricket::VideoFormat(
|
| capture_width, capture_height,
|
| cricket::VideoFormat::FpsToInterval(30),
|
| @@ -4001,9 +4009,32 @@ class WebRtcVideoChannel2SimulcastTest : public testing::Test {
|
| std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams();
|
| ASSERT_EQ(expected_num_streams, video_streams.size());
|
|
|
| - std::vector<webrtc::VideoStream> expected_streams = GetSimulcastConfig(
|
| - num_configured_streams, capture_width, capture_height, 0, kDefaultQpMax,
|
| - kDefaultVideoMaxFramerate);
|
| + std::vector<webrtc::VideoStream> expected_streams;
|
| + if (conference_mode) {
|
| + expected_streams = GetSimulcastConfig(
|
| + num_configured_streams, capture_width, capture_height, 0,
|
| + kDefaultQpMax, kDefaultVideoMaxFramerate, screenshare);
|
| + } else {
|
| + webrtc::VideoStream stream;
|
| + stream.width = capture_width;
|
| + stream.height = capture_height;
|
| + stream.max_framerate = kDefaultVideoMaxFramerate;
|
| + stream.min_bitrate_bps = cricket::kMinVideoBitrateKbps * 1000;
|
| + int max_bitrate_kbps;
|
| + if (capture_width * capture_height <= 320 * 240) {
|
| + max_bitrate_kbps = 600;
|
| + } else if (capture_width * capture_height <= 640 * 480) {
|
| + max_bitrate_kbps = 1700;
|
| + } else if (capture_width * capture_height <= 960 * 540) {
|
| + max_bitrate_kbps = 2000;
|
| + } else {
|
| + max_bitrate_kbps = 2500;
|
| + }
|
| + stream.target_bitrate_bps = stream.max_bitrate_bps =
|
| + max_bitrate_kbps * 1000;
|
| + stream.max_qp = kDefaultQpMax;
|
| + expected_streams.push_back(stream);
|
| + }
|
|
|
| ASSERT_EQ(expected_streams.size(), video_streams.size());
|
|
|
| @@ -4032,7 +4063,8 @@ class WebRtcVideoChannel2SimulcastTest : public testing::Test {
|
| EXPECT_GT(video_streams[i].max_qp, 0);
|
| EXPECT_EQ(expected_streams[i].max_qp, video_streams[i].max_qp);
|
|
|
| - EXPECT_FALSE(expected_streams[i].temporal_layer_thresholds_bps.empty());
|
| + EXPECT_EQ(!conference_mode,
|
| + expected_streams[i].temporal_layer_thresholds_bps.empty());
|
| EXPECT_EQ(expected_streams[i].temporal_layer_thresholds_bps,
|
| video_streams[i].temporal_layer_thresholds_bps);
|
|
|
| @@ -4086,15 +4118,37 @@ class WebRtcVideoChannel2SimulcastTest : public testing::Test {
|
| };
|
|
|
| TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith2SimulcastStreams) {
|
| - VerifySimulcastSettings(cricket::VideoCodec("VP8"), 640, 360, 2, 2);
|
| + VerifySimulcastSettings(cricket::VideoCodec("VP8"), 640, 360, 2, 2, false,
|
| + true);
|
| }
|
|
|
| TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWith3SimulcastStreams) {
|
| - VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 3);
|
| + VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 3, false,
|
| + true);
|
| }
|
|
|
| // Test that we normalize send codec format size in simulcast.
|
| TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) {
|
| - VerifySimulcastSettings(cricket::VideoCodec("VP8"), 541, 271, 2, 2);
|
| + VerifySimulcastSettings(cricket::VideoCodec("VP8"), 541, 271, 2, 2, false,
|
| + true);
|
| +}
|
| +
|
| +TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsForScreenshare) {
|
| + VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 1, true,
|
| + false);
|
| }
|
| +
|
| +TEST_F(WebRtcVideoChannel2SimulcastTest,
|
| + SetSendCodecsForConferenceModeScreenshare) {
|
| + VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 1, true,
|
| + true);
|
| +}
|
| +
|
| +TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsForSimulcastScreenshare) {
|
| + webrtc::test::ScopedFieldTrials override_field_trials_(
|
| + "WebRTC-SimulcastScreenshare/Enabled/");
|
| + VerifySimulcastSettings(cricket::VideoCodec("VP8"), 1280, 720, 3, 2, true,
|
| + true);
|
| +}
|
| +
|
| } // namespace cricket
|
|
|