blob: ee3f0e0128bfdeab50e8daa3f5a6d6c8b9601d08 [file] [log] [blame]
pbos@webrtc.orgc1506a22013-05-29 13:41:03 +00001/*
2 * Copyright (c) 2013 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 WEBRTC_VIDEO_ENGINE_TEST_COMMON_FRAME_GENERATOR_CAPTURER_H_
11#define WEBRTC_VIDEO_ENGINE_TEST_COMMON_FRAME_GENERATOR_CAPTURER_H_
12
pbos@webrtc.org2f02da82013-07-09 08:02:33 +000013#include "webrtc/system_wrappers/interface/scoped_ptr.h"
pbos@webrtc.org24e20892013-10-28 16:32:01 +000014#include "webrtc/test/video_capturer.h"
pbos@webrtc.orgc1506a22013-05-29 13:41:03 +000015#include "webrtc/typedefs.h"
16
17namespace webrtc {
18
pbos@webrtc.orgc1506a22013-05-29 13:41:03 +000019class CriticalSectionWrapper;
pbos@webrtc.org2f02da82013-07-09 08:02:33 +000020class EventWrapper;
pbos@webrtc.orgc1506a22013-05-29 13:41:03 +000021class ThreadWrapper;
22
23namespace test {
24
25class FrameGenerator;
26
27class FrameGeneratorCapturer : public VideoCapturer {
28 public:
pbos@webrtc.orgc1797062013-08-23 09:19:30 +000029 static FrameGeneratorCapturer* Create(VideoSendStreamInput* input,
andresp@webrtc.org28631e72013-09-19 12:14:03 +000030 size_t width,
31 size_t height,
32 int target_fps,
33 Clock* clock);
34
35 static FrameGeneratorCapturer* CreateFromYuvFile(VideoSendStreamInput* input,
36 const char* file_name,
37 size_t width,
38 size_t height,
39 int target_fps,
40 Clock* clock);
pbos@webrtc.orgc1506a22013-05-29 13:41:03 +000041 virtual ~FrameGeneratorCapturer();
42
43 virtual void Start() OVERRIDE;
44 virtual void Stop() OVERRIDE;
45
wu@webrtc.org093fc0b2014-04-24 22:10:24 +000046 int64_t first_frame_capture_time() const { return first_frame_capture_time_; }
47
pbos@webrtc.orgc1506a22013-05-29 13:41:03 +000048 private:
andresp@webrtc.org28631e72013-09-19 12:14:03 +000049 FrameGeneratorCapturer(Clock* clock,
50 VideoSendStreamInput* input,
pbos@webrtc.orgc1506a22013-05-29 13:41:03 +000051 FrameGenerator* frame_generator,
pbos@webrtc.org2f02da82013-07-09 08:02:33 +000052 int target_fps);
pbos@webrtc.orgc1506a22013-05-29 13:41:03 +000053 bool Init();
54 void InsertFrame();
55 static bool Run(void* obj);
56
pbos@webrtc.orgc476e642014-04-28 13:00:21 +000057 Clock* const clock_;
pbos@webrtc.orgc1506a22013-05-29 13:41:03 +000058 bool sending_;
59
pbos@webrtc.org2f02da82013-07-09 08:02:33 +000060 scoped_ptr<EventWrapper> tick_;
61 scoped_ptr<CriticalSectionWrapper> lock_;
62 scoped_ptr<ThreadWrapper> thread_;
pbos@webrtc.org7deb3352013-08-21 12:07:37 +000063 scoped_ptr<FrameGenerator> frame_generator_;
pbos@webrtc.orgc1506a22013-05-29 13:41:03 +000064
65 int target_fps_;
wu@webrtc.org093fc0b2014-04-24 22:10:24 +000066
67 int64_t first_frame_capture_time_;
pbos@webrtc.orgc1506a22013-05-29 13:41:03 +000068};
69} // test
70} // webrtc
71
72#endif // WEBRTC_VIDEO_ENGINE_TEST_COMMON_FRAME_GENERATOR_CAPTURER_H_