| OLD | NEW |
| 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 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 int height = params.requested_format.frame_size.height(); | 371 int height = params.requested_format.frame_size.height(); |
| 372 int frame_rate = params.requested_format.frame_rate; | 372 int frame_rate = params.requested_format.frame_rate; |
| 373 | 373 |
| 374 // QTKit API can scale captured frame to any size requested, which would lead | 374 // QTKit API can scale captured frame to any size requested, which would lead |
| 375 // to undesired aspect ratio changes. Try to open the camera with a known | 375 // to undesired aspect ratio changes. Try to open the camera with a known |
| 376 // supported format and let the client crop/pad the captured frames. | 376 // supported format and let the client crop/pad the captured frames. |
| 377 if (!AVFoundationGlue::IsAVFoundationSupported()) | 377 if (!AVFoundationGlue::IsAVFoundationSupported()) |
| 378 GetBestMatchSupportedResolution(&width, &height); | 378 GetBestMatchSupportedResolution(&width, &height); |
| 379 | 379 |
| 380 client_ = client.Pass(); | 380 client_ = client.Pass(); |
| 381 if (device_name_.capture_api_type() == Name::AVFOUNDATION) |
| 382 LogMessage("Using AVFoundation for device: " + device_name_.name()); |
| 383 else |
| 384 LogMessage("Using QTKit for device: " + device_name_.name()); |
| 381 NSString* deviceId = | 385 NSString* deviceId = |
| 382 [NSString stringWithUTF8String:device_name_.id().c_str()]; | 386 [NSString stringWithUTF8String:device_name_.id().c_str()]; |
| 383 | 387 |
| 384 [capture_device_ setFrameReceiver:this]; | 388 [capture_device_ setFrameReceiver:this]; |
| 385 | 389 |
| 386 if (![capture_device_ setCaptureDevice:deviceId]) { | 390 if (![capture_device_ setCaptureDevice:deviceId]) { |
| 387 SetErrorState("Could not open capture device."); | 391 SetErrorState("Could not open capture device."); |
| 388 return; | 392 return; |
| 389 } | 393 } |
| 390 if (frame_rate < kMinFrameRate) | 394 if (frame_rate < kMinFrameRate) |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 553 reason)); | 557 reason)); |
| 554 } | 558 } |
| 555 | 559 |
| 556 void VideoCaptureDeviceMac::SetErrorState(const std::string& reason) { | 560 void VideoCaptureDeviceMac::SetErrorState(const std::string& reason) { |
| 557 DCHECK(task_runner_->BelongsToCurrentThread()); | 561 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 558 DLOG(ERROR) << reason; | 562 DLOG(ERROR) << reason; |
| 559 state_ = kError; | 563 state_ = kError; |
| 560 client_->OnError(reason); | 564 client_->OnError(reason); |
| 561 } | 565 } |
| 562 | 566 |
| 567 void VideoCaptureDeviceMac::LogMessage(const std::string& message) { |
| 568 DCHECK(task_runner_->BelongsToCurrentThread()); |
| 569 if (client_) |
| 570 client_->OnLog(message); |
| 571 } |
| 572 |
| 563 bool VideoCaptureDeviceMac::UpdateCaptureResolution() { | 573 bool VideoCaptureDeviceMac::UpdateCaptureResolution() { |
| 564 if (![capture_device_ setCaptureHeight:capture_format_.frame_size.height() | 574 if (![capture_device_ setCaptureHeight:capture_format_.frame_size.height() |
| 565 width:capture_format_.frame_size.width() | 575 width:capture_format_.frame_size.width() |
| 566 frameRate:capture_format_.frame_rate]) { | 576 frameRate:capture_format_.frame_rate]) { |
| 567 ReceiveError("Could not configure capture device."); | 577 ReceiveError("Could not configure capture device."); |
| 568 return false; | 578 return false; |
| 569 } | 579 } |
| 570 return true; | 580 return true; |
| 571 } | 581 } |
| 572 | 582 |
| 573 } // namespace media | 583 } // namespace media |
| OLD | NEW |