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

Unified Diff: media/video/capture/mac/video_capture_device_mac.mm

Issue 83633008: Reland: Reorganize media::VideoCapture* types (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 side-by-side diff with in-line comments
Download patch
Index: media/video/capture/mac/video_capture_device_mac.mm
diff --git a/media/video/capture/mac/video_capture_device_mac.mm b/media/video/capture/mac/video_capture_device_mac.mm
index b353b1257728d663f0272538ffd4b6e68a112e7c..9ef29d231b8d8d0581383c1de2c48ce359e49770 100644
--- a/media/video/capture/mac/video_capture_device_mac.mm
+++ b/media/video/capture/mac/video_capture_device_mac.mm
@@ -134,15 +134,15 @@ VideoCaptureDeviceMac::~VideoCaptureDeviceMac() {
}
void VideoCaptureDeviceMac::AllocateAndStart(
- const VideoCaptureCapability& capture_format,
+ const VideoCaptureParams& params,
scoped_ptr<VideoCaptureDevice::Client> client) {
DCHECK_EQ(loop_proxy_, base::MessageLoopProxy::current());
if (state_ != kIdle) {
return;
}
- int width = capture_format.width;
- int height = capture_format.height;
- int frame_rate = capture_format.frame_rate;
+ int width = params.requested_format.frame_size.width();
+ int height = params.requested_format.frame_size.height();
+ int frame_rate = params.requested_format.frame_rate;
// The OS API can scale captured frame to any size requested, which would lead
// to undesired aspect ratio change. Try to open the camera with a natively
@@ -164,10 +164,9 @@ void VideoCaptureDeviceMac::AllocateAndStart(
else if (frame_rate > kMaxFrameRate)
frame_rate = kMaxFrameRate;
- current_settings_.color = PIXEL_FORMAT_UYVY;
- current_settings_.width = width;
- current_settings_.height = height;
- current_settings_.frame_rate = frame_rate;
+ capture_format_.frame_size.SetSize(width, height);
+ capture_format_.frame_rate = frame_rate;
+ capture_format_.pixel_format = PIXEL_FORMAT_UYVY;
if (width <= kVGA.width || height <= kVGA.height) {
// If the resolution is VGA or QVGA, set the capture resolution to the
@@ -226,7 +225,7 @@ bool VideoCaptureDeviceMac::Init() {
void VideoCaptureDeviceMac::ReceiveFrame(
const uint8* video_frame,
int video_frame_length,
- const VideoCaptureCapability& frame_info,
+ const VideoCaptureFormat& frame_format,
int aspect_numerator,
int aspect_denominator) {
// This method is safe to call from a device capture thread,
@@ -234,23 +233,24 @@ void VideoCaptureDeviceMac::ReceiveFrame(
if (!sent_frame_info_) {
// Final resolution has not yet been selected.
- if (current_settings_.width > kVGA.width ||
- current_settings_.height > kVGA.height) {
+ if (capture_format_.frame_size.width() > kVGA.width ||
+ capture_format_.frame_size.height() > kVGA.height) {
// We are requesting HD. Make sure that the picture is good, otherwise
// drop down to VGA.
bool change_to_vga = false;
- if (frame_info.width < current_settings_.width ||
- frame_info.height < current_settings_.height) {
+ if (frame_format.frame_size.width() <
+ capture_format_.frame_size.width() ||
+ frame_format.frame_size.height() <
+ capture_format_.frame_size.height()) {
// These are the default capture settings, not yet configured to match
- // |current_settings_|.
- DCHECK(frame_info.frame_rate == 0);
+ // |capture_format_|.
+ DCHECK(frame_format.frame_rate == 0);
DVLOG(1) << "Switching to VGA because the default resolution is " <<
- frame_info.width << "x" << frame_info.height;
+ frame_format.frame_size.ToString();
change_to_vga = true;
}
- if (frame_info.width == current_settings_.width &&
- frame_info.height == current_settings_.height &&
+ if (capture_format_.frame_size == frame_format.frame_size &&
aspect_numerator != aspect_denominator) {
DVLOG(1) << "Switching to VGA because HD has nonsquare pixel " <<
"aspect ratio " << aspect_numerator << ":" << aspect_denominator;
@@ -258,33 +258,29 @@ void VideoCaptureDeviceMac::ReceiveFrame(
}
if (change_to_vga) {
- current_settings_.width = kVGA.width;
- current_settings_.height = kVGA.height;
+ capture_format_.frame_size.SetSize(kVGA.width, kVGA.height);
}
}
- if (current_settings_.width == frame_info.width &&
- current_settings_.height == frame_info.height &&
+ if (capture_format_.frame_size == frame_format.frame_size &&
!tried_to_square_pixels_ &&
(aspect_numerator > kMaxPixelAspectRatio * aspect_denominator ||
aspect_denominator > kMaxPixelAspectRatio * aspect_numerator)) {
// The requested size results in non-square PAR.
// Shrink the frame to 1:1 PAR (assuming QTKit selects the same input
// mode, which is not guaranteed).
- int new_width = current_settings_.width;
- int new_height = current_settings_.height;
+ int new_width = capture_format_.frame_size.width();
+ int new_height = capture_format_.frame_size.height();
if (aspect_numerator < aspect_denominator) {
new_width = (new_width * aspect_numerator) / aspect_denominator;
} else {
new_height = (new_height * aspect_denominator) / aspect_numerator;
}
- current_settings_.width = new_width;
- current_settings_.height = new_height;
+ capture_format_.frame_size.SetSize(new_width, new_height);
tried_to_square_pixels_ = true;
}
- if (current_settings_.width == frame_info.width &&
- current_settings_.height == frame_info.height) {
+ if (capture_format_.frame_size == frame_format.frame_size) {
sent_frame_info_ = true;
} else {
UpdateCaptureResolution();
@@ -294,8 +290,10 @@ void VideoCaptureDeviceMac::ReceiveFrame(
}
}
- DCHECK(current_settings_.width == frame_info.width &&
- current_settings_.height == frame_info.height);
+ DCHECK_EQ(capture_format_.frame_size.width(),
+ frame_format.frame_size.width());
+ DCHECK_EQ(capture_format_.frame_size.height(),
+ frame_format.frame_size.height());
client_->OnIncomingCapturedFrame(video_frame,
video_frame_length,
@@ -303,7 +301,7 @@ void VideoCaptureDeviceMac::ReceiveFrame(
0,
false,
false,
- current_settings_);
+ capture_format_);
}
void VideoCaptureDeviceMac::ReceiveError(const std::string& reason) {
@@ -320,9 +318,9 @@ void VideoCaptureDeviceMac::SetErrorState(const std::string& reason) {
}
bool VideoCaptureDeviceMac::UpdateCaptureResolution() {
- if (![capture_device_ setCaptureHeight:current_settings_.height
- width:current_settings_.width
- frameRate:current_settings_.frame_rate]) {
+ if (![capture_device_ setCaptureHeight:capture_format_.frame_size.height()
+ width:capture_format_.frame_size.width()
+ frameRate:capture_format_.frame_rate]) {
ReceiveError("Could not configure capture device.");
return false;
}
« no previous file with comments | « media/video/capture/mac/video_capture_device_mac.h ('k') | media/video/capture/mac/video_capture_device_qtkit_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698