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_;