Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(400)

Side by Side Diff: media/capture/video/fake_video_capture_device.h

Issue 2143903003: [WIP] Move media/capture to device/capture (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Implementation of a fake VideoCaptureDevice class. Used for testing other
6 // video capture classes when no real hardware is available.
7
8 #ifndef MEDIA_CAPTURE_VIDEO_FAKE_VIDEO_CAPTURE_DEVICE_H_
9 #define MEDIA_CAPTURE_VIDEO_FAKE_VIDEO_CAPTURE_DEVICE_H_
10
11 #include <stdint.h>
12
13 #include <memory>
14 #include <string>
15
16 #include "base/atomicops.h"
17 #include "base/macros.h"
18 #include "base/memory/weak_ptr.h"
19 #include "base/threading/thread_checker.h"
20 #include "base/time/time.h"
21 #include "media/capture/video/video_capture_device.h"
22
23 namespace media {
24
25 class CAPTURE_EXPORT FakeVideoCaptureDevice : public VideoCaptureDevice {
26 public:
27 enum class BufferOwnership {
28 OWN_BUFFERS,
29 CLIENT_BUFFERS,
30 };
31
32 FakeVideoCaptureDevice(BufferOwnership buffer_ownership,
33 float fake_capture_rate);
34 ~FakeVideoCaptureDevice() override;
35
36 // VideoCaptureDevice implementation.
37 void AllocateAndStart(const VideoCaptureParams& params,
38 std::unique_ptr<Client> client) override;
39 void StopAndDeAllocate() override;
40 void GetPhotoCapabilities(GetPhotoCapabilitiesCallback callback) override;
41 void SetPhotoOptions(mojom::PhotoSettingsPtr settings,
42 SetPhotoOptionsCallback callback) override;
43 void TakePhoto(TakePhotoCallback callback) override;
44
45 private:
46 void CaptureUsingOwnBuffers(base::TimeTicks expected_execution_time);
47 void CaptureUsingClientBuffers(base::TimeTicks expected_execution_time);
48 void BeepAndScheduleNextCapture(
49 base::TimeTicks expected_execution_time,
50 const base::Callback<void(base::TimeTicks)>& next_capture);
51
52 // |thread_checker_| is used to check that all methods are called in the
53 // correct thread that owns the object.
54 base::ThreadChecker thread_checker_;
55
56 const BufferOwnership buffer_ownership_;
57 // Frame rate of the fake video device.
58 const float fake_capture_rate_;
59
60 std::unique_ptr<VideoCaptureDevice::Client> client_;
61 // |fake_frame_| is used for capturing on Own Buffers.
62 std::unique_ptr<uint8_t[]> fake_frame_;
63 // Time when the next beep occurs.
64 base::TimeDelta beep_time_;
65 // Time since the fake video started rendering frames.
66 base::TimeDelta elapsed_time_;
67 VideoCaptureFormat capture_format_;
68
69 uint32_t current_zoom_;
70
71 // The system time when we receive the first frame.
72 base::TimeTicks first_ref_time_;
73 // FakeVideoCaptureDevice post tasks to itself for frame construction and
74 // needs to deal with asynchronous StopAndDeallocate().
75 base::WeakPtrFactory<FakeVideoCaptureDevice> weak_factory_;
76
77 DISALLOW_COPY_AND_ASSIGN(FakeVideoCaptureDevice);
78 };
79
80 } // namespace media
81
82 #endif // MEDIA_CAPTURE_VIDEO_FAKE_VIDEO_CAPTURE_DEVICE_H_
OLDNEW
« no previous file with comments | « media/capture/video/android/video_capture_device_factory_android.cc ('k') | media/capture/video/fake_video_capture_device.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698