Fixing camera capture for video_loopback
In the middle of refactoring, I replaced the VideoCapturer with
FrameGeneratorCapturer, to reuse the code, and with that disabled the camera.
Now adding capturer_ element to VideoQualityTest and ignoring
frame_generator_capturer_ from the parent class test::CallTest.
Review URL: https://codereview.webrtc.org/1356933005
Cr-Commit-Position: refs/heads/master@{#10023}
diff --git a/webrtc/video/video_quality_test.cc b/webrtc/video/video_quality_test.cc
index 5837660..110cb06 100644
--- a/webrtc/video/video_quality_test.cc
+++ b/webrtc/video/video_quality_test.cc
@@ -694,22 +694,22 @@
void VideoQualityTest::CreateCapturer(const Params& params,
VideoCaptureInput* input) {
if (params.screenshare.enabled) {
- frame_generator_capturer_.reset(new test::FrameGeneratorCapturer(
- clock_, input, frame_generator_.release(), params.common.fps));
- EXPECT_TRUE(frame_generator_capturer_->Init());
+ test::FrameGeneratorCapturer *frame_generator_capturer =
+ new test::FrameGeneratorCapturer(
+ clock_, input, frame_generator_.release(), params.common.fps);
+ EXPECT_TRUE(frame_generator_capturer->Init());
+ capturer_.reset(frame_generator_capturer);
} else {
if (params.video.clip_name.empty()) {
- frame_generator_capturer_.reset(test::FrameGeneratorCapturer::Create(
+ capturer_.reset(test::VideoCapturer::Create(
input, params.common.width, params.common.height, params.common.fps,
clock_));
- EXPECT_TRUE(frame_generator_capturer_->Init());
} else {
- frame_generator_capturer_.reset(
- test::FrameGeneratorCapturer::CreateFromYuvFile(
- input, test::ResourcePath(params.video.clip_name, "yuv"),
- params.common.width, params.common.height, params.common.fps,
- clock_));
- ASSERT_TRUE(frame_generator_capturer_.get() != nullptr)
+ capturer_.reset(test::FrameGeneratorCapturer::CreateFromYuvFile(
+ input, test::ResourcePath(params.video.clip_name, "yuv"),
+ params.common.width, params.common.height, params.common.fps,
+ clock_));
+ ASSERT_TRUE(capturer_.get() != nullptr)
<< "Could not create capturer for " << params.video.clip_name
<< ".yuv. Is this resource file present?";
}
@@ -762,14 +762,20 @@
analyzer.input_ = send_stream_->Input();
analyzer.send_stream_ = send_stream_;
- Start();
+ send_stream_->Start();
+ for (size_t i = 0; i < receive_streams_.size(); ++i)
+ receive_streams_[i]->Start();
+ capturer_->Start();
analyzer.Wait();
send_transport.StopSending();
recv_transport.StopSending();
- Stop();
+ capturer_->Stop();
+ for (size_t i = 0; i < receive_streams_.size(); ++i)
+ receive_streams_[i]->Stop();
+ send_stream_->Stop();
DestroyStreams();
@@ -816,11 +822,11 @@
receive_stream->Start();
send_stream_->Start();
- frame_generator_capturer_->Start();
+ capturer_->Start();
test::PressEnterToContinue();
- frame_generator_capturer_->Stop();
+ capturer_->Stop();
send_stream_->Stop();
receive_stream->Stop();
diff --git a/webrtc/video/video_quality_test.h b/webrtc/video/video_quality_test.h
index d403d65..52ac9e4 100644
--- a/webrtc/video/video_quality_test.h
+++ b/webrtc/video/video_quality_test.h
@@ -75,6 +75,8 @@
newapi::Transport* recv_transport);
void SetupScreenshare(const Params& params);
+ // We need a more general capturer than the FrameGeneratorCapturer.
+ rtc::scoped_ptr<test::VideoCapturer> capturer_;
rtc::scoped_ptr<test::TraceToStderr> trace_to_stderr_;
rtc::scoped_ptr<test::FrameGenerator> frame_generator_;
rtc::scoped_ptr<VideoEncoder> encoder_;