Home | History | Annotate | Download | only in include
      1 /*
      2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 #ifndef SRC_VIDEO_ENGINE_MAIN_TEST_AUTOTEST_HELPERS_VIE_FAKE_CAMERA_H_
     11 #define SRC_VIDEO_ENGINE_MAIN_TEST_AUTOTEST_HELPERS_VIE_FAKE_CAMERA_H_
     12 
     13 #include <string>
     14 
     15 namespace webrtc {
     16 class ViECapture;
     17 class ThreadWrapper;
     18 }
     19 
     20 class ViEFileCaptureDevice;
     21 
     22 // Registers an external capture device with the provided capture interface
     23 // and starts running a fake camera by reading frames from a file. The frame-
     24 // reading code runs in a separate thread which makes it possible to run tests
     25 // while the fake camera feeds data into the system. This class is not thread-
     26 // safe in itself (but handles its own thread in a safe manner).
     27 class ViEFakeCamera {
     28  public:
     29   // The argument is the capture interface to register with.
     30   explicit ViEFakeCamera(webrtc::ViECapture* capture_interface);
     31   virtual ~ViEFakeCamera();
     32 
     33   // Runs the scenario in the class comments.
     34   bool StartCameraInNewThread(const std::string& i420_test_video_path,
     35                               int width,
     36                               int height);
     37   // Stops the camera and cleans up everything allocated by the start method.
     38   bool StopCamera();
     39 
     40   int capture_id() const { return capture_id_; }
     41 
     42  private:
     43   webrtc::ViECapture* capture_interface_;
     44 
     45   int capture_id_;
     46   webrtc::ThreadWrapper* camera_thread_;
     47   ViEFileCaptureDevice* file_capture_device_;
     48 };
     49 
     50 #endif  // SRC_VIDEO_ENGINE_MAIN_TEST_AUTOTEST_HELPERS_VIE_FAKE_CAMERA_H_
     51