From 908e22e55374baebc2b5e2417a5721381a1a2cf5 Mon Sep 17 00:00:00 2001 From: Danil Chapovalov Date: Thu, 18 Apr 2019 14:34:16 +0200 Subject: [PATCH] Use explicit TaskQueueFactory for FrameGeneratorCapturer in video/ tests This replaces the implicit usage of GlobalTaskQueueFactory Bug: webrtc:10284 Change-Id: Ic53254ee6d9a421be18bf2df62f1742c46812701 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133576 Reviewed-by: Ilya Nikolaevskiy Commit-Queue: Danil Chapovalov Cr-Commit-Position: refs/heads/master@{#27690} --- video/end_to_end_tests/multi_stream_tester.cc | 16 ++- video/video_quality_test.cc | 102 +++++++++--------- 2 files changed, 63 insertions(+), 55 deletions(-) diff --git a/video/end_to_end_tests/multi_stream_tester.cc b/video/end_to_end_tests/multi_stream_tester.cc index e9d1d044e8..58d7bc9f4b 100644 --- a/video/end_to_end_tests/multi_stream_tester.cc +++ b/video/end_to_end_tests/multi_stream_tester.cc @@ -15,6 +15,7 @@ #include #include "absl/memory/memory.h" +#include "api/task_queue/default_task_queue_factory.h" #include "api/test/simulated_network.h" #include "api/test/video/function_video_encoder_factory.h" #include "api/video/builtin_video_bitrate_allocator_factory.h" @@ -45,6 +46,7 @@ MultiStreamTester::~MultiStreamTester() {} void MultiStreamTester::RunTest() { webrtc::RtcEventLogNullImpl event_log; + auto task_queue_factory = CreateDefaultTaskQueueFactory(); Call::Config config(&event_log); std::unique_ptr sender_call; std::unique_ptr receiver_call; @@ -107,12 +109,16 @@ void MultiStreamTester::RunTest() { receiver_call->CreateVideoReceiveStream(std::move(receive_config)); receive_streams[i]->Start(); - frame_generators[i] = test::FrameGeneratorCapturer::Create( - width, height, absl::nullopt, absl::nullopt, 30, - Clock::GetRealTimeClock()); - send_streams[i]->SetSource(frame_generators[i], + auto* frame_generator = new test::FrameGeneratorCapturer( + Clock::GetRealTimeClock(), + test::FrameGenerator::CreateSquareGenerator( + width, height, absl::nullopt, absl::nullopt), + 30, *task_queue_factory); + frame_generators[i] = frame_generator; + send_streams[i]->SetSource(frame_generator, DegradationPreference::MAINTAIN_FRAMERATE); - frame_generators[i]->Start(); + frame_generator->Init(); + frame_generator->Start(); } }); diff --git a/video/video_quality_test.cc b/video/video_quality_test.cc index 1b13980e18..b48f08eb6d 100644 --- a/video/video_quality_test.cc +++ b/video/video_quality_test.cc @@ -999,10 +999,16 @@ void VideoQualityTest::DestroyThumbnailStreams() { void VideoQualityTest::SetupThumbnailCapturers(size_t num_thumbnail_streams) { VideoStream thumbnail = DefaultThumbnailStream(); for (size_t i = 0; i < num_thumbnail_streams; ++i) { - thumbnail_capturers_.emplace_back(test::FrameGeneratorCapturer::Create( - static_cast(thumbnail.width), static_cast(thumbnail.height), - absl::nullopt, absl::nullopt, thumbnail.max_framerate, clock_)); - RTC_DCHECK(thumbnail_capturers_.back()); + auto frame_generator_capturer = + absl::make_unique( + clock_, + test::FrameGenerator::CreateSquareGenerator( + static_cast(thumbnail.width), + static_cast(thumbnail.height), absl::nullopt, + absl::nullopt), + thumbnail.max_framerate, *task_queue_factory_); + EXPECT_TRUE(frame_generator_capturer->Init()); + thumbnail_capturers_.push_back(std::move(frame_generator_capturer)); } } @@ -1056,57 +1062,53 @@ void VideoQualityTest::CreateCapturers() { RTC_DCHECK(video_sources_.empty()); video_sources_.resize(num_video_streams_); for (size_t video_idx = 0; video_idx < num_video_streams_; ++video_idx) { + std::unique_ptr frame_generator; if (params_.screenshare[video_idx].enabled) { - std::unique_ptr frame_generator = - CreateFrameGenerator(video_idx); - test::FrameGeneratorCapturer* frame_generator_capturer = - new test::FrameGeneratorCapturer(clock_, std::move(frame_generator), - params_.video[video_idx].fps); - EXPECT_TRUE(frame_generator_capturer->Init()); - video_sources_[video_idx].reset(frame_generator_capturer); - } else { - if (params_.video[video_idx].clip_path == "Generator") { - video_sources_[video_idx].reset(test::FrameGeneratorCapturer::Create( + frame_generator = CreateFrameGenerator(video_idx); + } else if (params_.video[video_idx].clip_path == "Generator") { + frame_generator = test::FrameGenerator::CreateSquareGenerator( + static_cast(params_.video[video_idx].width), + static_cast(params_.video[video_idx].height), absl::nullopt, + absl::nullopt); + } else if (params_.video[video_idx].clip_path == "GeneratorI420A") { + frame_generator = test::FrameGenerator::CreateSquareGenerator( + static_cast(params_.video[video_idx].width), + static_cast(params_.video[video_idx].height), + test::FrameGenerator::OutputType::I420A, absl::nullopt); + } else if (params_.video[video_idx].clip_path == "GeneratorI010") { + frame_generator = test::FrameGenerator::CreateSquareGenerator( + static_cast(params_.video[video_idx].width), + static_cast(params_.video[video_idx].height), + test::FrameGenerator::OutputType::I010, absl::nullopt); + } else if (params_.video[video_idx].clip_path.empty()) { + video_sources_[video_idx] = test::CreateVideoCapturer( + params_.video[video_idx].width, params_.video[video_idx].height, + params_.video[video_idx].fps, + params_.video[video_idx].capture_device_index); + if (video_sources_[video_idx]) { + continue; + } else { + // Failed to get actual camera, use chroma generator as backup. + frame_generator = test::FrameGenerator::CreateSquareGenerator( static_cast(params_.video[video_idx].width), static_cast(params_.video[video_idx].height), absl::nullopt, - absl::nullopt, params_.video[video_idx].fps, clock_)); - } else if (params_.video[video_idx].clip_path == "GeneratorI420A") { - video_sources_[video_idx].reset(test::FrameGeneratorCapturer::Create( - static_cast(params_.video[video_idx].width), - static_cast(params_.video[video_idx].height), - test::FrameGenerator::OutputType::I420A, absl::nullopt, - params_.video[video_idx].fps, clock_)); - } else if (params_.video[video_idx].clip_path == "GeneratorI010") { - video_sources_[video_idx].reset(test::FrameGeneratorCapturer::Create( - static_cast(params_.video[video_idx].width), - static_cast(params_.video[video_idx].height), - test::FrameGenerator::OutputType::I010, absl::nullopt, - params_.video[video_idx].fps, clock_)); - } else if (params_.video[video_idx].clip_path.empty()) { - video_sources_[video_idx] = test::CreateVideoCapturer( - params_.video[video_idx].width, params_.video[video_idx].height, - params_.video[video_idx].fps, - params_.video[video_idx].capture_device_index); - if (!video_sources_[video_idx]) { - // Failed to get actual camera, use chroma generator as backup. - video_sources_[video_idx].reset(test::FrameGeneratorCapturer::Create( - static_cast(params_.video[video_idx].width), - static_cast(params_.video[video_idx].height), absl::nullopt, - absl::nullopt, params_.video[video_idx].fps, clock_)); - } - } else { - video_sources_[video_idx].reset( - test::FrameGeneratorCapturer::CreateFromYuvFile( - params_.video[video_idx].clip_path, - params_.video[video_idx].width, params_.video[video_idx].height, - params_.video[video_idx].fps, clock_)); - ASSERT_TRUE(video_sources_[video_idx]) - << "Could not create capturer for " - << params_.video[video_idx].clip_path - << ".yuv. Is this file present?"; + absl::nullopt); } + } else { + frame_generator = test::FrameGenerator::CreateFromYuvFile( + {params_.video[video_idx].clip_path}, params_.video[video_idx].width, + params_.video[video_idx].height, 1); + ASSERT_TRUE(frame_generator) << "Could not create capturer for " + << params_.video[video_idx].clip_path + << ".yuv. Is this file present?"; } - RTC_DCHECK(video_sources_[video_idx]); + ASSERT_TRUE(frame_generator); + auto frame_generator_capturer = + absl::make_unique( + clock_, std::move(frame_generator), params_.video[video_idx].fps, + *task_queue_factory_); + EXPECT_TRUE(frame_generator_capturer->Init()); + video_sources_[video_idx] = std::move(frame_generator_capturer); } }