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

Side by Side Diff: media/capture/video/linux/v4l2_capture_delegate.h

Issue 1418263006: Extend VideoCaptureDevice::Client::OnError() to have a tracked_objects::Location param. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MEDIA_VIDEO_CAPTURE_LINUX_V4L2_VIDEO_CAPTURE_DELEGATE_H_ 5 #ifndef MEDIA_VIDEO_CAPTURE_LINUX_V4L2_VIDEO_CAPTURE_DELEGATE_H_
6 #define MEDIA_VIDEO_CAPTURE_LINUX_V4L2_VIDEO_CAPTURE_DELEGATE_H_ 6 #define MEDIA_VIDEO_CAPTURE_LINUX_V4L2_VIDEO_CAPTURE_DELEGATE_H_
7 7
8 #if defined(OS_OPENBSD) 8 #if defined(OS_OPENBSD)
9 #include <sys/videoio.h> 9 #include <sys/videoio.h>
10 #else 10 #else
11 #include <linux/videodev2.h> 11 #include <linux/videodev2.h>
12 #endif 12 #endif
13 13
14 #include "base/files/scoped_file.h" 14 #include "base/files/scoped_file.h"
15 #include "base/memory/ref_counted.h" 15 #include "base/memory/ref_counted.h"
16 #include "media/capture/video/video_capture_device.h" 16 #include "media/capture/video/video_capture_device.h"
17 17
18 namespace tracked_objects {
19 class Location;
20 } // namespace tracked_objects
21
18 namespace media { 22 namespace media {
19 23
20 // Class doing the actual Linux capture using V4L2 API. V4L2 SPLANE/MPLANE 24 // Class doing the actual Linux capture using V4L2 API. V4L2 SPLANE/MPLANE
21 // capture specifics are implemented in derived classes. Created and destroyed 25 // capture specifics are implemented in derived classes. Created and destroyed
22 // on the owner's thread, otherwise living and operating on |v4l2_task_runner_|. 26 // on the owner's thread, otherwise living and operating on |v4l2_task_runner_|.
23 class V4L2CaptureDelegate 27 class V4L2CaptureDelegate
24 : public base::RefCountedThreadSafe<V4L2CaptureDelegate> { 28 : public base::RefCountedThreadSafe<V4L2CaptureDelegate> {
25 public: 29 public:
26 // Creates the appropiate VideoCaptureDelegate according to parameters. 30 // Creates the appropiate VideoCaptureDelegate according to parameters.
27 static scoped_refptr<V4L2CaptureDelegate> CreateV4L2CaptureDelegate( 31 static scoped_refptr<V4L2CaptureDelegate> CreateV4L2CaptureDelegate(
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 134
131 // Returns the input |fourcc| as a std::string four char representation. 135 // Returns the input |fourcc| as a std::string four char representation.
132 static std::string FourccToString(uint32_t fourcc); 136 static std::string FourccToString(uint32_t fourcc);
133 // VIDIOC_QUERYBUFs a buffer from V4L2, creates a BufferTracker for it and 137 // VIDIOC_QUERYBUFs a buffer from V4L2, creates a BufferTracker for it and
134 // enqueues it (VIDIOC_QBUF) back into V4L2. 138 // enqueues it (VIDIOC_QBUF) back into V4L2.
135 bool MapAndQueueBuffer(int index); 139 bool MapAndQueueBuffer(int index);
136 // Fills all common parts of |buffer|. Delegates to FinishFillingV4L2Buffer() 140 // Fills all common parts of |buffer|. Delegates to FinishFillingV4L2Buffer()
137 // for filling in the planar-dependent parts. 141 // for filling in the planar-dependent parts.
138 void FillV4L2Buffer(v4l2_buffer* buffer, int i) const; 142 void FillV4L2Buffer(v4l2_buffer* buffer, int i) const;
139 void DoCapture(); 143 void DoCapture();
140 void SetErrorState(const std::string& reason); 144 void SetErrorState(const tracked_objects::Location& from_here,
145 const std::string& reason);
141 146
142 const v4l2_buf_type capture_type_; 147 const v4l2_buf_type capture_type_;
143 const scoped_refptr<base::SingleThreadTaskRunner> v4l2_task_runner_; 148 const scoped_refptr<base::SingleThreadTaskRunner> v4l2_task_runner_;
144 const VideoCaptureDevice::Name device_name_; 149 const VideoCaptureDevice::Name device_name_;
145 const int power_line_frequency_; 150 const int power_line_frequency_;
146 151
147 // The following members are only known on AllocateAndStart(). 152 // The following members are only known on AllocateAndStart().
148 VideoCaptureFormat capture_format_; 153 VideoCaptureFormat capture_format_;
149 v4l2_format video_fmt_; 154 v4l2_format video_fmt_;
150 scoped_ptr<VideoCaptureDevice::Client> client_; 155 scoped_ptr<VideoCaptureDevice::Client> client_;
151 base::ScopedFD device_fd_; 156 base::ScopedFD device_fd_;
152 157
153 // Vector of BufferTracker to keep track of mmap()ed pointers and their use. 158 // Vector of BufferTracker to keep track of mmap()ed pointers and their use.
154 std::vector<scoped_refptr<BufferTracker>> buffer_tracker_pool_; 159 std::vector<scoped_refptr<BufferTracker>> buffer_tracker_pool_;
155 160
156 bool is_capturing_; 161 bool is_capturing_;
157 int timeout_count_; 162 int timeout_count_;
158 163
159 // Clockwise rotation in degrees. This value should be 0, 90, 180, or 270. 164 // Clockwise rotation in degrees. This value should be 0, 90, 180, or 270.
160 int rotation_; 165 int rotation_;
161 166
162 DISALLOW_COPY_AND_ASSIGN(V4L2CaptureDelegate); 167 DISALLOW_COPY_AND_ASSIGN(V4L2CaptureDelegate);
163 }; 168 };
164 169
165 } // namespace media 170 } // namespace media
166 171
167 #endif // MEDIA_VIDEO_CAPTURE_LINUX_V4L2_VIDEO_CAPTURE_DELEGATE_H_ 172 #endif // MEDIA_VIDEO_CAPTURE_LINUX_V4L2_VIDEO_CAPTURE_DELEGATE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698