1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // VideoCaptureDeviceQTKit implements all QTKit related code for 6 // communicating with a QTKit capture device. 7 8 #ifndef MEDIA_VIDEO_CAPTURE_MAC_VIDEO_CAPTURE_DEVICE_QTKIT_MAC_H_ 9 #define MEDIA_VIDEO_CAPTURE_MAC_VIDEO_CAPTURE_DEVICE_QTKIT_MAC_H_ 10 11 #import <Foundation/Foundation.h> 12 13 #include <vector> 14 15 #import "media/video/capture/mac/platform_video_capturing_mac.h" 16 17 namespace media { 18 class VideoCaptureDeviceMac; 19 } 20 21 @class QTCaptureDeviceInput; 22 @class QTCaptureSession; 23 24 @interface VideoCaptureDeviceQTKit : NSObject<PlatformVideoCapturingMac> { 25 @private 26 // Settings. 27 float frameRate_; 28 29 NSLock *lock_; 30 media::VideoCaptureDeviceMac *frameReceiver_; 31 32 // QTKit variables. 33 QTCaptureSession *captureSession_; 34 QTCaptureDeviceInput *captureDeviceInput_; 35 36 // Buffer for adjusting frames which do not fit receiver 37 // assumptions. scoped_array<> might make more sense, if the size 38 // can be proven invariant. 39 std::vector<UInt8> adjustedFrame_; 40 } 41 42 // Fills up the |deviceNames| dictionary of capture devices with friendly name 43 // and unique id. No thread assumptions, but this method should run in UI 44 // thread, see http://crbug.com/139164 45 + (void)getDeviceNames:(NSMutableDictionary*)deviceNames; 46 47 // Returns a dictionary of capture devices with friendly name and unique id, via 48 // runing +getDeviceNames: on Main Thread. 49 + (NSDictionary*)deviceNames; 50 51 // Initializes the instance and registers the frame receiver. 52 - (id)initWithFrameReceiver:(media::VideoCaptureDeviceMac*)frameReceiver; 53 54 // Set the frame receiver. 55 - (void)setFrameReceiver:(media::VideoCaptureDeviceMac*)frameReceiver; 56 57 // Sets which capture device to use. Returns YES on sucess, NO otherwise. 58 - (BOOL)setCaptureDevice:(NSString*)deviceId; 59 60 // Configures the capture properties. 61 - (BOOL)setCaptureHeight:(int)height 62 width:(int)width 63 frameRate:(float)frameRate; 64 65 // Start video capturing. Returns YES on sucess, NO otherwise. 66 - (BOOL)startCapture; 67 68 // Stops video capturing. 69 - (void)stopCapture; 70 71 // Handle any QTCaptureSessionRuntimeErrorNotifications. 72 - (void)handleNotification:(NSNotification*)errorNotification; 73 74 @end 75 76 #endif // MEDIA_VIDEO_CAPTURE_MAC_VIDEO_CAPTURE_DEVICE_QTKIT_MAC_H_ 77