From c064467b3254f74115a61228f656d171e1ba7937 Mon Sep 17 00:00:00 2001 From: Andrey Logvin Date: Tue, 5 May 2020 10:33:01 +0000 Subject: [PATCH] Pass frame generator to the AddVideoConfig method in the pc framework tests. Bug: webrtc:11534 Change-Id: Id68feca50611f412897ddef3d43b811a224b200f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174023 Commit-Queue: Andrey Logvin Reviewed-by: Artem Titov Reviewed-by: Karl Wiberg Cr-Commit-Position: refs/heads/master@{#31167} --- .../peerconnection_quality_test_fixture.h | 13 +- test/pc/e2e/BUILD.gn | 1 + test/pc/e2e/media/media_helper.cc | 10 +- test/pc/e2e/peer_configurer.cc | 14 +- test/pc/e2e/peer_connection_e2e_smoke_test.cc | 32 ++- video/BUILD.gn | 2 + video/pc_full_stack_tests.cc | 208 +++++++++++------- 7 files changed, 170 insertions(+), 110 deletions(-) diff --git a/api/test/peerconnection_quality_test_fixture.h b/api/test/peerconnection_quality_test_fixture.h index 74f820241a..a5ccc4c0a3 100644 --- a/api/test/peerconnection_quality_test_fixture.h +++ b/api/test/peerconnection_quality_test_fixture.h @@ -172,11 +172,14 @@ class PeerConnectionE2EQualityTestFixture { absl::optional stream_label; // You can specify one of |generator|, |input_file_name|, // |screen_share_config| and |capturing_device_index|. - // If none of them are specified: - // * If config is added to the PeerConfigurer without specifying any video - // source, then |generator| will be set to VideoGeneratorType::kDefault. - // * If config is added with own video source implementation, then that - // video source will be used. + // If none of them are specified and config is added to the PeerConfigurer + // without specifying any video source, then |generator| will be set to + // VideoGeneratorType::kDefault. + // If video source implementation is specified, + // then it will be used as video source regardless of other + // options. Please consider this way unless you are using + // |capturing_device_index| option, since the possibility of using other + // three is about to be removed. // If specified generator of this type will be used to produce input video. absl::optional generator; diff --git a/test/pc/e2e/BUILD.gn b/test/pc/e2e/BUILD.gn index 2bc8cd2fb5..ac4fe32ed1 100644 --- a/test/pc/e2e/BUILD.gn +++ b/test/pc/e2e/BUILD.gn @@ -426,6 +426,7 @@ if (rtc_include_tests) { ":network_quality_metrics_reporter", "../../../api:callfactory_api", "../../../api:create_network_emulation_manager", + "../../../api:create_peer_connection_quality_test_frame_generator", "../../../api:create_peerconnection_quality_test_fixture", "../../../api:libjingle_peerconnection_api", "../../../api:network_emulation_manager_api", diff --git a/test/pc/e2e/media/media_helper.cc b/test/pc/e2e/media/media_helper.cc index ada38341fa..3848c15b70 100644 --- a/test/pc/e2e/media/media_helper.cc +++ b/test/pc/e2e/media/media_helper.cc @@ -112,9 +112,7 @@ std::unique_ptr MediaHelper::CreateVideoCapturer( std::unique_ptr frame_generator = nullptr; if (generator) { frame_generator = std::move(generator); - } - - if (video_config.generator) { + } else if (video_config.generator) { absl::optional frame_generator_type = absl::nullopt; if (video_config.generator == VideoGeneratorType::kDefault) { @@ -128,14 +126,12 @@ std::unique_ptr MediaHelper::CreateVideoCapturer( test::CreateSquareFrameGenerator(static_cast(video_config.width), static_cast(video_config.height), frame_generator_type, absl::nullopt); - } - if (video_config.input_file_name) { + } else if (video_config.input_file_name) { frame_generator = test::CreateFromYuvFileFrameGenerator( std::vector(/*count=*/1, video_config.input_file_name.value()), video_config.width, video_config.height, /*frame_repeat_count=*/1); - } - if (video_config.screen_share_config) { + } else if (video_config.screen_share_config) { frame_generator = CreateScreenShareFrameGenerator( video_config, *video_config.screen_share_config); } diff --git a/test/pc/e2e/peer_configurer.cc b/test/pc/e2e/peer_configurer.cc index 26f5617627..b9c04e3c7d 100644 --- a/test/pc/e2e/peer_configurer.cc +++ b/test/pc/e2e/peer_configurer.cc @@ -118,7 +118,12 @@ void ValidateParams( video_labels.insert(video_config.stream_label.value()).second; RTC_CHECK(inserted) << "Duplicate video_config.stream_label=" << video_config.stream_label.value(); + bool user_provided_generator = false; int input_sources_count = 0; + if ((*peers[i]->video_generators())[j]) { + user_provided_generator = true; + ++input_sources_count; + } if (video_config.generator) ++input_sources_count; if (video_config.input_file_name) @@ -127,12 +132,11 @@ void ValidateParams( ++input_sources_count; if (video_config.capturing_device_index) ++input_sources_count; - if ((*peers[i]->video_generators())[j]) - ++input_sources_count; - // TODO(titovartem) handle video_generators case properly - RTC_CHECK_EQ(input_sources_count, 1) << VideoConfigSourcePresenceToString( - video_config, (*peers[i]->video_generators())[j] != nullptr); + RTC_CHECK(input_sources_count == 1 || + (input_sources_count == 2 && user_provided_generator)) + << VideoConfigSourcePresenceToString(video_config, + user_provided_generator); if (video_config.screen_share_config) { ValidateScreenShareConfig(video_config, diff --git a/test/pc/e2e/peer_connection_e2e_smoke_test.cc b/test/pc/e2e/peer_connection_e2e_smoke_test.cc index 5d43716e8d..7e88b2bcfd 100644 --- a/test/pc/e2e/peer_connection_e2e_smoke_test.cc +++ b/test/pc/e2e/peer_connection_e2e_smoke_test.cc @@ -12,6 +12,7 @@ #include #include "api/test/create_network_emulation_manager.h" +#include "api/test/create_peer_connection_quality_test_frame_generator.h" #include "api/test/create_peerconnection_quality_test_fixture.h" #include "api/test/network_emulation_manager.h" #include "api/test/peerconnection_quality_test_fixture.h" @@ -149,7 +150,8 @@ TEST_F(PeerConnectionE2EQualityTestSmokeTest, MAYBE_Smoke) { VideoConfig video(640, 360, 30); video.stream_label = "alice-video"; video.sync_group = "alice-media"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateSquareFrameGenerator(video, absl::nullopt); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); AudioConfig audio; audio.stream_label = "alice-audio"; @@ -164,7 +166,8 @@ TEST_F(PeerConnectionE2EQualityTestSmokeTest, MAYBE_Smoke) { VideoConfig video(640, 360, 30); video.stream_label = "bob-video"; video.temporal_layers_count = 2; - bob->AddVideoConfig(std::move(video)); + auto frame_generator = CreateSquareFrameGenerator(video, absl::nullopt); + bob->AddVideoConfig(std::move(video), std::move(frame_generator)); VideoConfig screenshare(640, 360, 30); screenshare.stream_label = "bob-screenshare"; @@ -172,7 +175,10 @@ TEST_F(PeerConnectionE2EQualityTestSmokeTest, MAYBE_Smoke) { ScreenShareConfig(TimeDelta::Seconds(2)); screenshare.screen_share_config->scrolling_params = ScrollingParams( TimeDelta::Millis(1800), kDefaultSlidesWidth, kDefaultSlidesHeight); - bob->AddVideoConfig(screenshare); + auto screen_share_frame_generator = CreateScreenShareFrameGenerator( + screenshare, *screenshare.screen_share_config); + bob->AddVideoConfig(std::move(screenshare), + std::move(screen_share_frame_generator)); AudioConfig audio; audio.stream_label = "bob-audio"; @@ -228,7 +234,9 @@ TEST_F(PeerConnectionE2EQualityTestSmokeTest, MAYBE_Simulcast) { VideoConfig simulcast(1280, 720, 30); simulcast.stream_label = "alice-simulcast"; simulcast.simulcast_config = VideoSimulcastConfig(3, 0); - alice->AddVideoConfig(std::move(simulcast)); + auto frame_generator = + CreateSquareFrameGenerator(simulcast, absl::nullopt); + alice->AddVideoConfig(std::move(simulcast), std::move(frame_generator)); AudioConfig audio; audio.stream_label = "alice-audio"; @@ -240,7 +248,8 @@ TEST_F(PeerConnectionE2EQualityTestSmokeTest, MAYBE_Simulcast) { [](PeerConfigurer* bob) { VideoConfig video(640, 360, 30); video.stream_label = "bob-video"; - bob->AddVideoConfig(std::move(video)); + auto frame_generator = CreateSquareFrameGenerator(video, absl::nullopt); + bob->AddVideoConfig(std::move(video), std::move(frame_generator)); AudioConfig audio; audio.stream_label = "bob-audio"; @@ -268,7 +277,9 @@ TEST_F(PeerConnectionE2EQualityTestSmokeTest, MAYBE_Svc) { // Because we have network with packets loss we can analyze only the // highest spatial layer in SVC mode. simulcast.simulcast_config = VideoSimulcastConfig(3, 2); - alice->AddVideoConfig(std::move(simulcast)); + auto frame_generator = + CreateSquareFrameGenerator(simulcast, absl::nullopt); + alice->AddVideoConfig(std::move(simulcast), std::move(frame_generator)); AudioConfig audio; audio.stream_label = "alice-audio"; @@ -280,7 +291,8 @@ TEST_F(PeerConnectionE2EQualityTestSmokeTest, MAYBE_Svc) { [](PeerConfigurer* bob) { VideoConfig video(640, 360, 30); video.stream_label = "bob-video"; - bob->AddVideoConfig(std::move(video)); + auto frame_generator = CreateSquareFrameGenerator(video, absl::nullopt); + bob->AddVideoConfig(std::move(video), std::move(frame_generator)); AudioConfig audio; audio.stream_label = "bob-audio"; @@ -313,7 +325,8 @@ TEST_F(PeerConnectionE2EQualityTestSmokeTest, MAYBE_HighBitrate) { video.stream_label = "alice-video"; video.min_encode_bitrate_bps = 500'000; video.max_encode_bitrate_bps = 3'000'000; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateSquareFrameGenerator(video, absl::nullopt); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); AudioConfig audio; audio.stream_label = "alice-audio"; @@ -332,7 +345,8 @@ TEST_F(PeerConnectionE2EQualityTestSmokeTest, MAYBE_HighBitrate) { video.stream_label = "bob-video"; video.min_encode_bitrate_bps = 500'000; video.max_encode_bitrate_bps = 3'000'000; - bob->AddVideoConfig(std::move(video)); + auto frame_generator = CreateSquareFrameGenerator(video, absl::nullopt); + bob->AddVideoConfig(std::move(video), std::move(frame_generator)); AudioConfig audio; audio.stream_label = "bob-audio"; diff --git a/video/BUILD.gn b/video/BUILD.gn index db041ce3e5..551696afa7 100644 --- a/video/BUILD.gn +++ b/video/BUILD.gn @@ -368,7 +368,9 @@ if (rtc_include_tests) { sources = [ "pc_full_stack_tests.cc" ] deps = [ "../api:create_network_emulation_manager", + "../api:create_peer_connection_quality_test_frame_generator", "../api:create_peerconnection_quality_test_fixture", + "../api:frame_generator_api", "../api:network_emulation_manager_api", "../api:peer_connection_quality_test_fixture_api", "../api:simulated_network_api", diff --git a/video/pc_full_stack_tests.cc b/video/pc_full_stack_tests.cc index a955071d8a..d034b4effd 100644 --- a/video/pc_full_stack_tests.cc +++ b/video/pc_full_stack_tests.cc @@ -13,7 +13,9 @@ #include #include "api/test/create_network_emulation_manager.h" +#include "api/test/create_peer_connection_quality_test_frame_generator.h" #include "api/test/create_peerconnection_quality_test_fixture.h" +#include "api/test/frame_generator_interface.h" #include "api/test/network_emulation_manager.h" #include "api/test/peerconnection_quality_test_fixture.h" #include "api/test/simulated_network.h" @@ -133,9 +135,10 @@ TEST(PCFullStackTest, ForemanCifWithoutPacketLossVp9) { BuiltInNetworkBehaviorConfig()), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -158,9 +161,10 @@ TEST_P(PCGenericDescriptorTest, ForemanCifPlr5Vp9) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -191,9 +195,10 @@ TEST(PCFullStackTest, MAYBE_GeneratorWithoutPacketLossVp9Profile2) { BuiltInNetworkBehaviorConfig()), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.generator = VideoGeneratorType::kI010; video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateSquareFrameGenerator( + video, test::FrameGeneratorInterface::OutputType::kI010); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -246,9 +251,10 @@ TEST(PCFullStackTest, ParisQcifWithoutPacketLoss) { BuiltInNetworkBehaviorConfig()), [](PeerConfigurer* alice) { VideoConfig video(176, 144, 30); - video.input_file_name = ClipNameToClipPath("paris_qcif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("paris_qcif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -267,9 +273,10 @@ TEST_P(PCGenericDescriptorTest, ForemanCifWithoutPacketLoss) { BuiltInNetworkBehaviorConfig()), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -288,9 +295,10 @@ TEST_P(PCGenericDescriptorTest, ForemanCif30kbpsWithoutPacketLoss) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 10); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); PeerConnectionInterface::BitrateParameters bitrate_params; bitrate_params.min_bitrate_bps = 30000; @@ -320,9 +328,10 @@ TEST_P(PCGenericDescriptorTest, CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 10); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); PeerConnectionInterface::BitrateParameters bitrate_params; bitrate_params.min_bitrate_bps = 30000; @@ -349,9 +358,10 @@ TEST(PCFullStackTest, ForemanCifLink150kbpsWithoutPacketLoss) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -373,9 +383,10 @@ TEST(PCFullStackTest, ForemanCifLink130kbps100msDelay1PercentPacketLossUlpfec) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -397,9 +408,10 @@ TEST(PCFullStackTest, ForemanCifLink50kbps100msDelay1PercentPacketLossUlpfec) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -422,9 +434,10 @@ TEST(PCFullStackTest, ForemanCifLink150kbpsBadRateController) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -452,9 +465,10 @@ TEST(PCFullStackTest, ForemanCifMediaCapacitySmallLossAndQueue) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -476,9 +490,10 @@ TEST_P(PCGenericDescriptorTest, ForemanCifPlr5) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -499,9 +514,10 @@ TEST_P(PCGenericDescriptorTest, ForemanCifPlr5Ulpfec) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -522,9 +538,10 @@ TEST(PCFullStackTest, ForemanCifPlr5Flexfec) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -546,9 +563,10 @@ TEST(PCFullStackTest, ForemanCif500kbpsPlr3Flexfec) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -570,9 +588,10 @@ TEST(PCFullStackTest, ForemanCif500kbpsPlr3Ulpfec) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -592,9 +611,10 @@ TEST(PCFullStackTest, ForemanCifWithoutPacketlossH264) { BuiltInNetworkBehaviorConfig()), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -613,9 +633,10 @@ TEST(PCFullStackTest, ForemanCif30kbpsWithoutPacketlossH264) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 10); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); PeerConnectionInterface::BitrateParameters bitrate_params; bitrate_params.min_bitrate_bps = 30000; @@ -642,9 +663,10 @@ TEST_P(PCGenericDescriptorTest, ForemanCifPlr5H264) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -668,9 +690,10 @@ TEST(PCFullStackTest, ForemanCifPlr5H264SpsPpsIdrIsKeyframe) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -691,9 +714,10 @@ TEST(PCFullStackTest, ForemanCifPlr5H264Flexfec) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -716,9 +740,10 @@ TEST(PCFullStackTest, DISABLED_ForemanCifPlr5H264Ulpfec) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -741,9 +766,10 @@ TEST(PCFullStackTest, ForemanCif500kbps) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -765,9 +791,10 @@ TEST(PCFullStackTest, ForemanCif500kbpsLimitedQueue) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -789,9 +816,10 @@ TEST(PCFullStackTest, ForemanCif500kbps100ms) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -813,9 +841,10 @@ TEST_P(PCGenericDescriptorTest, ForemanCif500kbps100msLimitedQueue) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -858,9 +887,10 @@ TEST(PCFullStackTest, ForemanCif1000kbps100msLimitedQueue) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(352, 288, 30); - video.input_file_name = ClipNameToClipPath("foreman_cif"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("foreman_cif")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -883,10 +913,10 @@ TEST(PCFullStackTest, ConferenceMotionHd2000kbps100msLimitedQueue) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(1280, 720, 50); - video.input_file_name = - ClipNameToClipPath("ConferenceMotion_1280_720_50"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("ConferenceMotion_1280_720_50")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -912,10 +942,10 @@ TEST(PCFullStackTest, ConferenceMotionHd1TLModerateLimitsWhitelistVp8) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(1280, 720, 50); - video.input_file_name = - ClipNameToClipPath("ConferenceMotion_1280_720_50"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("ConferenceMotion_1280_720_50")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -1064,10 +1094,10 @@ TEST(PCFullStackTest, ConferenceMotionHd2000kbps100msLimitedQueueVP9) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(1280, 720, 50); - video.input_file_name = - ClipNameToClipPath("ConferenceMotion_1280_720_50"); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("ConferenceMotion_1280_720_50")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -1091,7 +1121,9 @@ TEST(PCFullStackTest, ScreenshareSlidesVP8_2TL_NoConferenceMode) { VideoConfig video(1850, 1110, 5); video.screen_share_config = ScreenShareConfig(TimeDelta::Seconds(10)); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = + CreateScreenShareFrameGenerator(video, *video.screen_share_config); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -1112,7 +1144,9 @@ TEST(PCFullStackTest, ScreenshareSlidesVP8_2TL) { VideoConfig video(1850, 1110, 5); video.screen_share_config = ScreenShareConfig(TimeDelta::Seconds(10)); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = + CreateScreenShareFrameGenerator(video, *video.screen_share_config); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -1138,7 +1172,9 @@ TEST(PCFullStackTest, ScreenshareSlidesVP8_2TL_Simulcast_NoConferenceMode) { video.simulcast_config = VideoSimulcastConfig(2, 1); video.temporal_layers_count = 2; video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = + CreateScreenShareFrameGenerator(video, *video.screen_share_config); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -1161,7 +1197,9 @@ TEST(PCFullStackTest, ScreenshareSlidesVP8_2TL_Simulcast) { video.simulcast_config = VideoSimulcastConfig(2, 1); video.temporal_layers_count = 2; video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = + CreateScreenShareFrameGenerator(video, *video.screen_share_config); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -1399,7 +1437,9 @@ TEST(PCFullStackTest, ScreenshareSlidesVP9_3SL_High_Fps) { video.stream_label = "alice-video"; video.screen_share_config = ScreenShareConfig(TimeDelta::Seconds(10)); video.simulcast_config = VideoSimulcastConfig(3, 2); - alice->AddVideoConfig(std::move(video)); + auto frame_generator = + CreateScreenShareFrameGenerator(video, *video.screen_share_config); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -1424,11 +1464,11 @@ TEST(PCFullStackTest, VP9SVC_3SL_High) { [](PeerConfigurer* alice) { VideoConfig video(1280, 720, 30); video.stream_label = "alice-video"; - video.input_file_name = - ClipNameToClipPath("ConferenceMotion_1280_720_50"); video.simulcast_config = VideoSimulcastConfig(3, 2); video.temporal_layers_count = 3; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("ConferenceMotion_1280_720_50")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -1453,11 +1493,11 @@ TEST(PCFullStackTest, VP9SVC_3SL_Low) { [](PeerConfigurer* alice) { VideoConfig video(1280, 720, 30); video.stream_label = "alice-video"; - video.input_file_name = - ClipNameToClipPath("ConferenceMotion_1280_720_50"); video.simulcast_config = VideoSimulcastConfig(3, 0); video.temporal_layers_count = 3; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("ConferenceMotion_1280_720_50")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -1582,11 +1622,11 @@ TEST(PCFullStackTest, MAYBE_SimulcastFullHdOveruse) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(1920, 1080, 30); - video.generator = VideoGeneratorType::kDefault; video.simulcast_config = VideoSimulcastConfig(3, 2); video.temporal_layers_count = 3; video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateSquareFrameGenerator(video, absl::nullopt); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -1607,11 +1647,11 @@ TEST(PCFullStackTest, SimulcastVP8_3SL_High) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(1280, 720, 30); - video.input_file_name = - ClipNameToClipPath("ConferenceMotion_1280_720_50"); video.simulcast_config = VideoSimulcastConfig(3, 2); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("ConferenceMotion_1280_720_50")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec)); @@ -1632,11 +1672,11 @@ TEST(PCFullStackTest, SimulcastVP8_3SL_Low) { CreateTwoNetworkLinks(network_emulation_manager.get(), config), [](PeerConfigurer* alice) { VideoConfig video(1280, 720, 30); - video.input_file_name = - ClipNameToClipPath("ConferenceMotion_1280_720_50"); video.simulcast_config = VideoSimulcastConfig(3, 0); video.stream_label = "alice-video"; - alice->AddVideoConfig(std::move(video)); + auto frame_generator = CreateFromYuvFileFrameGenerator( + video, ClipNameToClipPath("ConferenceMotion_1280_720_50")); + alice->AddVideoConfig(std::move(video), std::move(frame_generator)); }, [](PeerConfigurer* bob) {}); RunParams run_params(TimeDelta::Seconds(kTestDurationSec));