Home | History | Annotate | Download | only in mac
      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