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 #import "media/video/capture/mac/video_capture_device_qtkit_mac.h" | 5 #import "media/video/capture/mac/video_capture_device_qtkit_mac.h" |
6 | 6 |
7 #import <QTKit/QTKit.h> | 7 #import <QTKit/QTKit.h> |
8 | 8 |
9 #include "base/debug/crash_logging.h" | 9 #include "base/debug/crash_logging.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 waitUntilDone:YES]; | 167 waitUntilDone:YES]; |
168 } | 168 } |
169 [captureSession_ release]; | 169 [captureSession_ release]; |
170 captureSession_ = nil; | 170 captureSession_ = nil; |
171 [captureDeviceInput_ release]; | 171 [captureDeviceInput_ release]; |
172 captureDeviceInput_ = nil; | 172 captureDeviceInput_ = nil; |
173 return YES; | 173 return YES; |
174 } | 174 } |
175 } | 175 } |
176 | 176 |
177 - (BOOL)setCaptureHeight:(int)height width:(int)width frameRate:(int)frameRate { | 177 - (BOOL)setCaptureHeight:(int)height |
| 178 width:(int)width |
| 179 frameRate:(float)frameRate { |
178 if (!captureDeviceInput_) { | 180 if (!captureDeviceInput_) { |
179 [self sendErrorString:[NSString | 181 [self sendErrorString:[NSString |
180 stringWithUTF8String:"No video capture device set."]]; | 182 stringWithUTF8String:"No video capture device set."]]; |
181 return NO; | 183 return NO; |
182 } | 184 } |
183 if ([[captureSession_ outputs] count] != 1) { | 185 if ([[captureSession_ outputs] count] != 1) { |
184 [self sendErrorString:[NSString | 186 [self sendErrorString:[NSString |
185 stringWithUTF8String:"Video capture capabilities already set."]]; | 187 stringWithUTF8String:"Video capture capabilities already set."]]; |
186 return NO; | 188 return NO; |
187 } | 189 } |
188 if (frameRate <= 0) { | 190 if (frameRate <= 0.0f) { |
189 [self sendErrorString:[NSString stringWithUTF8String: "Wrong frame rate."]]; | 191 [self sendErrorString:[NSString stringWithUTF8String: "Wrong frame rate."]]; |
190 return NO; | 192 return NO; |
191 } | 193 } |
192 | 194 |
193 frameRate_ = frameRate; | 195 frameRate_ = frameRate; |
194 | 196 |
195 QTCaptureDecompressedVideoOutput *output = | 197 QTCaptureDecompressedVideoOutput *output = |
196 [[captureSession_ outputs] objectAtIndex:0]; | 198 [[captureSession_ outputs] objectAtIndex:0]; |
197 | 199 |
198 // Set up desired output properties. The old capture dictionary is used to | 200 // Set up desired output properties. The old capture dictionary is used to |
199 // retrieve the initial pixel format, which must be maintained. | 201 // retrieve the initial pixel format, which must be maintained. |
200 NSDictionary* videoSettingsDictionary = @{ | 202 NSDictionary* videoSettingsDictionary = @{ |
201 (id)kCVPixelBufferWidthKey : @(width), | 203 (id)kCVPixelBufferWidthKey : @(width), |
202 (id)kCVPixelBufferHeightKey : @(height), | 204 (id)kCVPixelBufferHeightKey : @(height), |
203 (id)kCVPixelBufferPixelFormatTypeKey : [[output pixelBufferAttributes] | 205 (id)kCVPixelBufferPixelFormatTypeKey : [[output pixelBufferAttributes] |
204 valueForKey:(id)kCVPixelBufferPixelFormatTypeKey] | 206 valueForKey:(id)kCVPixelBufferPixelFormatTypeKey] |
205 }; | 207 }; |
206 [output setPixelBufferAttributes:videoSettingsDictionary]; | 208 [output setPixelBufferAttributes:videoSettingsDictionary]; |
207 | 209 |
208 [output setMinimumVideoFrameInterval:(NSTimeInterval)1/(float)frameRate]; | 210 [output setMinimumVideoFrameInterval:(NSTimeInterval)1/frameRate]; |
209 return YES; | 211 return YES; |
210 } | 212 } |
211 | 213 |
212 - (BOOL)startCapture { | 214 - (BOOL)startCapture { |
213 if ([[captureSession_ outputs] count] == 0) { | 215 if ([[captureSession_ outputs] count] == 0) { |
214 // Capture properties not set. | 216 // Capture properties not set. |
215 [self sendErrorString:[NSString | 217 [self sendErrorString:[NSString |
216 stringWithUTF8String:"Video capture device not initialized."]]; | 218 stringWithUTF8String:"Video capture device not initialized."]]; |
217 return NO; | 219 return NO; |
218 } | 220 } |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
337 | 339 |
338 - (void)sendErrorString:(NSString*)error { | 340 - (void)sendErrorString:(NSString*)error { |
339 DLOG(ERROR) << [error UTF8String]; | 341 DLOG(ERROR) << [error UTF8String]; |
340 [lock_ lock]; | 342 [lock_ lock]; |
341 if (frameReceiver_) | 343 if (frameReceiver_) |
342 frameReceiver_->ReceiveError([error UTF8String]); | 344 frameReceiver_->ReceiveError([error UTF8String]); |
343 [lock_ unlock]; | 345 [lock_ unlock]; |
344 } | 346 } |
345 | 347 |
346 @end | 348 @end |
OLD | NEW |