From 2d4e6c5d9d7b48aec62d1cda9f75fe0b695167aa Mon Sep 17 00:00:00 2001 From: ivica Date: Wed, 23 Sep 2015 01:57:06 -0700 Subject: [PATCH] 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} --- webrtc/video/video_quality_test.cc | 36 +++++++++++++++++------------- webrtc/video/video_quality_test.h | 2 ++ 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/webrtc/video/video_quality_test.cc b/webrtc/video/video_quality_test.cc index 58376605dd..110cb063b5 100644 --- a/webrtc/video/video_quality_test.cc +++ b/webrtc/video/video_quality_test.cc @@ -694,22 +694,22 @@ void VideoQualityTest::SetupScreenshare(const Params& params) { 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 @@ void VideoQualityTest::RunWithAnalyzer(const Params& params) { 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 @@ void VideoQualityTest::RunWithVideoRenderer(const Params& params) { 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 d403d655e9..52ac9e40d9 100644 --- a/webrtc/video/video_quality_test.h +++ b/webrtc/video/video_quality_test.h @@ -75,6 +75,8 @@ class VideoQualityTest : public test::CallTest { newapi::Transport* recv_transport); void SetupScreenshare(const Params& params); + // We need a more general capturer than the FrameGeneratorCapturer. + rtc::scoped_ptr capturer_; rtc::scoped_ptr trace_to_stderr_; rtc::scoped_ptr frame_generator_; rtc::scoped_ptr encoder_;