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 <ilnik@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27690}
This commit is contained in:
Danil Chapovalov 2019-04-18 14:34:16 +02:00 committed by Commit Bot
parent d50947ab51
commit 908e22e553
2 changed files with 63 additions and 55 deletions

View File

@ -15,6 +15,7 @@
#include <vector>
#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<Call> sender_call;
std::unique_ptr<Call> 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();
}
});

View File

@ -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<int>(thumbnail.width), static_cast<int>(thumbnail.height),
absl::nullopt, absl::nullopt, thumbnail.max_framerate, clock_));
RTC_DCHECK(thumbnail_capturers_.back());
auto frame_generator_capturer =
absl::make_unique<test::FrameGeneratorCapturer>(
clock_,
test::FrameGenerator::CreateSquareGenerator(
static_cast<int>(thumbnail.width),
static_cast<int>(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<test::FrameGenerator> frame_generator;
if (params_.screenshare[video_idx].enabled) {
std::unique_ptr<test::FrameGenerator> 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<int>(params_.video[video_idx].width),
static_cast<int>(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<int>(params_.video[video_idx].width),
static_cast<int>(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<int>(params_.video[video_idx].width),
static_cast<int>(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<int>(params_.video[video_idx].width),
static_cast<int>(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<int>(params_.video[video_idx].width),
static_cast<int>(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<int>(params_.video[video_idx].width),
static_cast<int>(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<int>(params_.video[video_idx].width),
static_cast<int>(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<test::FrameGeneratorCapturer>(
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);
}
}