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

Side by Side Diff: media/video/capture/mac/video_capture_device_mac.mm

Issue 468833002: Mac QTKit Video Capture: Force BlackMagic cameras to be opened in HD (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: tommi@s comments Created 6 years, 4 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 | Annotate | Revision Log
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/mac/video_capture_device_mac.h" 5 #include "media/video/capture/mac/video_capture_device_mac.h"
6 6
7 #include <IOKit/IOCFPlugIn.h> 7 #include <IOKit/IOCFPlugIn.h>
8 #include <IOKit/usb/IOUSBLib.h> 8 #include <IOKit/usb/IOUSBLib.h>
9 #include <IOKit/usb/USBSpec.h> 9 #include <IOKit/usb/USBSpec.h>
10 10
(...skipping 25 matching lines...) Expand all
36 } 36 }
37 37
38 - (int32_t)transportType { 38 - (int32_t)transportType {
39 return transportType_; 39 return transportType_;
40 } 40 }
41 41
42 @end // @implementation DeviceNameAndTransportType 42 @end // @implementation DeviceNameAndTransportType
43 43
44 namespace media { 44 namespace media {
45 45
46 const int kMinFrameRate = 1; 46 // Mac specific limits for minimum and maximum frame rate.
47 const int kMaxFrameRate = 30; 47 const float kMinFrameRate = 1.0f;
48 const float kMaxFrameRate = 30.0f;
48 49
49 // In device identifiers, the USB VID and PID are stored in 4 bytes each. 50 // In device identifiers, the USB VID and PID are stored in 4 bytes each.
50 const size_t kVidPidSize = 4; 51 const size_t kVidPidSize = 4;
51 52
52 const struct Resolution { 53 const struct Resolution {
53 const int width; 54 const int width;
54 const int height; 55 const int height;
55 } kQVGA = { 320, 240 }, 56 } kQVGA = { 320, 240 },
56 kVGA = { 640, 480 }, 57 kVGA = { 640, 480 },
57 kHD = { 1280, 720 }; 58 kHD = { 1280, 720 };
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 return id_vendor + ":" + id_product; 344 return id_vendor + ":" + id_product;
344 } 345 }
345 346
346 VideoCaptureDeviceMac::VideoCaptureDeviceMac(const Name& device_name) 347 VideoCaptureDeviceMac::VideoCaptureDeviceMac(const Name& device_name)
347 : device_name_(device_name), 348 : device_name_(device_name),
348 tried_to_square_pixels_(false), 349 tried_to_square_pixels_(false),
349 task_runner_(base::MessageLoopProxy::current()), 350 task_runner_(base::MessageLoopProxy::current()),
350 state_(kNotInitialized), 351 state_(kNotInitialized),
351 capture_device_(nil), 352 capture_device_(nil),
352 weak_factory_(this) { 353 weak_factory_(this) {
353 final_resolution_selected_ = AVFoundationGlue::IsAVFoundationSupported(); 354 // Avoid reconfiguring AVFoundation or blacklisted devices.
355 final_resolution_selected_ = AVFoundationGlue::IsAVFoundationSupported() ||
356 device_name.is_blacklisted();
354 } 357 }
355 358
356 VideoCaptureDeviceMac::~VideoCaptureDeviceMac() { 359 VideoCaptureDeviceMac::~VideoCaptureDeviceMac() {
357 DCHECK(task_runner_->BelongsToCurrentThread()); 360 DCHECK(task_runner_->BelongsToCurrentThread());
358 [capture_device_ release]; 361 [capture_device_ release];
359 } 362 }
360 363
361 void VideoCaptureDeviceMac::AllocateAndStart( 364 void VideoCaptureDeviceMac::AllocateAndStart(
362 const VideoCaptureParams& params, 365 const VideoCaptureParams& params,
363 scoped_ptr<VideoCaptureDevice::Client> client) { 366 scoped_ptr<VideoCaptureDevice::Client> client) {
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 client_->OnError(reason); 565 client_->OnError(reason);
563 } 566 }
564 567
565 void VideoCaptureDeviceMac::LogMessage(const std::string& message) { 568 void VideoCaptureDeviceMac::LogMessage(const std::string& message) {
566 DCHECK(task_runner_->BelongsToCurrentThread()); 569 DCHECK(task_runner_->BelongsToCurrentThread());
567 if (client_) 570 if (client_)
568 client_->OnLog(message); 571 client_->OnLog(message);
569 } 572 }
570 573
571 bool VideoCaptureDeviceMac::UpdateCaptureResolution() { 574 bool VideoCaptureDeviceMac::UpdateCaptureResolution() {
572 if (![capture_device_ setCaptureHeight:capture_format_.frame_size.height() 575 if (![capture_device_ setCaptureHeight:capture_format_.frame_size.height()
573 width:capture_format_.frame_size.width() 576 width:capture_format_.frame_size.width()
574 frameRate:capture_format_.frame_rate]) { 577 frameRate:capture_format_.frame_rate]) {
575 ReceiveError("Could not configure capture device."); 578 ReceiveError("Could not configure capture device.");
576 return false; 579 return false;
577 } 580 }
578 return true; 581 return true;
579 } 582 }
580 583
581 } // namespace media 584 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698