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.
5 // VideoCaptureDeviceQTKit implements all QTKit related code for
6 // communicating with a QTKit capture device.
8 #ifndef MEDIA_VIDEO_CAPTURE_MAC_VIDEO_CAPTURE_DEVICE_QTKIT_MAC_H_
9 #define MEDIA_VIDEO_CAPTURE_MAC_VIDEO_CAPTURE_DEVICE_QTKIT_MAC_H_
11 #import <Foundation/Foundation.h>
15 #import "media/video/capture/mac/platform_video_capturing_mac.h"
18 class VideoCaptureDeviceMac
;
21 @
class QTCaptureDeviceInput
;
22 @
class QTCaptureSession
;
24 @interface VideoCaptureDeviceQTKit
: NSObject
<PlatformVideoCapturingMac
> {
30 media::VideoCaptureDeviceMac
*frameReceiver_
;
33 QTCaptureSession
*captureSession_
;
34 QTCaptureDeviceInput
*captureDeviceInput_
;
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_
;
42 // Returns a dictionary of capture devices with friendly name and unique id.
43 + (NSDictionary
*)deviceNames
;
45 // Initializes the instance and registers the frame receiver.
46 - (id
)initWithFrameReceiver
:(media::VideoCaptureDeviceMac
*)frameReceiver
;
48 // Set the frame receiver.
49 - (void)setFrameReceiver
:(media::VideoCaptureDeviceMac
*)frameReceiver
;
51 // Sets which capture device to use. Returns YES on sucess, NO otherwise.
52 - (BOOL
)setCaptureDevice
:(NSString
*)deviceId
;
54 // Configures the capture properties.
55 - (BOOL
)setCaptureHeight
:(int)height width
:(int)width frameRate
:(int)frameRate
;
57 // Start video capturing. Returns YES on sucess, NO otherwise.
60 // Stops video capturing.
63 // Handle any QTCaptureSessionRuntimeErrorNotifications.
64 - (void)handleNotification
:(NSNotification
*)errorNotification
;
68 #endif // MEDIA_VIDEO_CAPTURE_MAC_VIDEO_CAPTURE_DEVICE_QTKIT_MAC_H_