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

Side by Side Diff: media/video/capture/linux/video_capture_device_linux.cc

Issue 10035054: Merge VideoCaptureDevice::Capability with media::VideoCaptureCapability (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: fix a namespace issue Created 8 years, 7 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 #include "media/video/capture/linux/video_capture_device_linux.h" 5 #include "media/video/capture/linux/video_capture_device_linux.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <fcntl.h> 8 #include <fcntl.h>
9 #if defined(OS_OPENBSD) 9 #if defined(OS_OPENBSD)
10 #include <sys/videoio.h> 10 #include <sys/videoio.h>
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 // Time to wait in milliseconds before v4l2_thread_ reschedules OnCaptureTask 43 // Time to wait in milliseconds before v4l2_thread_ reschedules OnCaptureTask
44 // if an event is triggered (select) but no video frame is read. 44 // if an event is triggered (select) but no video frame is read.
45 enum { kCaptureSelectWaitMs = 10 }; 45 enum { kCaptureSelectWaitMs = 10 };
46 46
47 // V4L2 color formats VideoCaptureDeviceLinux support. 47 // V4L2 color formats VideoCaptureDeviceLinux support.
48 static const int32 kV4l2Fmts[] = { 48 static const int32 kV4l2Fmts[] = {
49 V4L2_PIX_FMT_YUV420, 49 V4L2_PIX_FMT_YUV420,
50 V4L2_PIX_FMT_YUYV 50 V4L2_PIX_FMT_YUYV
51 }; 51 };
52 52
53 static VideoCaptureDevice::Format V4l2ColorToVideoCaptureColorFormat( 53 static VideoCaptureCapability::Format V4l2ColorToVideoCaptureColorFormat(
54 int32 v4l2_fourcc) { 54 int32 v4l2_fourcc) {
55 VideoCaptureDevice::Format result = VideoCaptureDevice::kColorUnknown; 55 VideoCaptureCapability::Format result = VideoCaptureCapability::kColorUnknown;
56 switch (v4l2_fourcc) { 56 switch (v4l2_fourcc) {
57 case V4L2_PIX_FMT_YUV420: 57 case V4L2_PIX_FMT_YUV420:
58 result = VideoCaptureDevice::kI420; 58 result = VideoCaptureCapability::kI420;
59 break; 59 break;
60 case V4L2_PIX_FMT_YUYV: 60 case V4L2_PIX_FMT_YUYV:
61 result = VideoCaptureDevice::kYUY2; 61 result = VideoCaptureCapability::kYUY2;
62 break; 62 break;
63 } 63 }
64 DCHECK_NE(result, VideoCaptureDevice::kColorUnknown); 64 DCHECK_NE(result, VideoCaptureCapability::kColorUnknown);
65 return result; 65 return result;
66 } 66 }
67 67
68 void VideoCaptureDevice::GetDeviceNames(Names* device_names) { 68 void VideoCaptureDevice::GetDeviceNames(Names* device_names) {
69 int fd = -1; 69 int fd = -1;
70 70
71 // Empty the name list. 71 // Empty the name list.
72 device_names->clear(); 72 device_names->clear();
73 73
74 FilePath path("/dev/"); 74 FilePath path("/dev/");
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 SetErrorState("Failed to find supported camera format."); 241 SetErrorState("Failed to find supported camera format.");
242 return; 242 return;
243 } 243 }
244 // Set format and frame size now. 244 // Set format and frame size now.
245 if (ioctl(device_fd_, VIDIOC_S_FMT, &video_fmt) < 0) { 245 if (ioctl(device_fd_, VIDIOC_S_FMT, &video_fmt) < 0) {
246 SetErrorState("Failed to set camera format"); 246 SetErrorState("Failed to set camera format");
247 return; 247 return;
248 } 248 }
249 249
250 // Store our current width and height. 250 // Store our current width and height.
251 Capability current_settings; 251 VideoCaptureCapability current_settings;
252 current_settings.color = V4l2ColorToVideoCaptureColorFormat( 252 current_settings.color = V4l2ColorToVideoCaptureColorFormat(
253 video_fmt.fmt.pix.pixelformat); 253 video_fmt.fmt.pix.pixelformat);
254 current_settings.width = video_fmt.fmt.pix.width; 254 current_settings.width = video_fmt.fmt.pix.width;
255 current_settings.height = video_fmt.fmt.pix.height; 255 current_settings.height = video_fmt.fmt.pix.height;
256 current_settings.frame_rate = frame_rate; 256 current_settings.frame_rate = frame_rate;
257 current_settings.expected_capture_delay = 0;
258 current_settings.interlaced = false;
257 259
258 state_ = kAllocated; 260 state_ = kAllocated;
259 // Report the resulting frame size to the observer. 261 // Report the resulting frame size to the observer.
260 observer_->OnFrameInfo(current_settings); 262 observer_->OnFrameInfo(current_settings);
261 } 263 }
262 264
263 void VideoCaptureDeviceLinux::OnDeAllocate() { 265 void VideoCaptureDeviceLinux::OnDeAllocate() {
264 DCHECK_EQ(v4l2_thread_.message_loop(), MessageLoop::current()); 266 DCHECK_EQ(v4l2_thread_.message_loop(), MessageLoop::current());
265 267
266 // If we are in error state or capturing 268 // If we are in error state or capturing
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 buffer_pool_size_ = 0; 450 buffer_pool_size_ = 0;
449 } 451 }
450 452
451 void VideoCaptureDeviceLinux::SetErrorState(const std::string& reason) { 453 void VideoCaptureDeviceLinux::SetErrorState(const std::string& reason) {
452 DLOG(ERROR) << reason; 454 DLOG(ERROR) << reason;
453 state_ = kError; 455 state_ = kError;
454 observer_->OnError(); 456 observer_->OnError();
455 } 457 }
456 458
457 } // namespace media 459 } // namespace media
OLDNEW
« no previous file with comments | « media/video/capture/linux/video_capture_device_linux.h ('k') | media/video/capture/mac/video_capture_device_mac.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698