1 /*
2  *  Copyright 2016 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 
11 #ifndef WEBRTC_API_TEST_FAKEVIDEOTRACKSOURCE_H_
12 #define WEBRTC_API_TEST_FAKEVIDEOTRACKSOURCE_H_
13 
14 #include "webrtc/api/mediastreaminterface.h"
15 #include "webrtc/api/videotracksource.h"
16 #include "webrtc/media/base/fakevideocapturer.h"
17 
18 namespace webrtc {
19 
20 class FakeVideoTrackSource : public VideoTrackSource {
21  public:
Create(bool is_screencast)22   static rtc::scoped_refptr<FakeVideoTrackSource> Create(bool is_screencast) {
23     return new rtc::RefCountedObject<FakeVideoTrackSource>(is_screencast);
24   }
25 
Create()26   static rtc::scoped_refptr<FakeVideoTrackSource> Create() {
27     return Create(false);
28   }
29 
fake_video_capturer()30   cricket::FakeVideoCapturer* fake_video_capturer() {
31     return &fake_video_capturer_;
32   }
33 
is_screencast()34   bool is_screencast() const override { return is_screencast_; }
35 
36  protected:
FakeVideoTrackSource(bool is_screencast)37   explicit FakeVideoTrackSource(bool is_screencast)
38       : VideoTrackSource(&fake_video_capturer_, false /* remote */),
39         is_screencast_(is_screencast) {}
~FakeVideoTrackSource()40   virtual ~FakeVideoTrackSource() {}
41 
42  private:
43   cricket::FakeVideoCapturer fake_video_capturer_;
44   const bool is_screencast_;
45 };
46 
47 }  // namespace webrtc
48 
49 #endif  // WEBRTC_API_TEST_FAKEVIDEOTRACKSOURCE_H_
50