Home | History | Annotate | Download | only in qtkit
      1 /*
      2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #ifndef WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_INFO_H_
     12 #define WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_INFO_H_
     13 
     14 #include "webrtc/modules/video_capture/device_info_impl.h"
     15 #include "webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_utility.h"
     16 #include "webrtc/modules/video_capture/video_capture_impl.h"
     17 
     18 
     19 @class VideoCaptureMacQTKitInfoObjC;
     20 
     21 namespace webrtc
     22 {
     23 namespace videocapturemodule
     24 {
     25 
     26 class VideoCaptureMacQTKitInfo: public DeviceInfoImpl
     27 {
     28 public:
     29 
     30    VideoCaptureMacQTKitInfo(const int32_t id);
     31     virtual ~VideoCaptureMacQTKitInfo();
     32 
     33     int32_t Init();
     34 
     35     virtual uint32_t NumberOfDevices();
     36 
     37     /*
     38      * Returns the available capture devices.
     39      * deviceNumber   -[in] index of capture device
     40      * deviceNameUTF8 - friendly name of the capture device
     41      * deviceUniqueIdUTF8 - unique name of the capture device if it exist.
     42      *      Otherwise same as deviceNameUTF8
     43      * productUniqueIdUTF8 - unique product id if it exist. Null terminated
     44      *      otherwise.
     45      */
     46     virtual int32_t GetDeviceName(
     47         uint32_t deviceNumber, char* deviceNameUTF8,
     48         uint32_t deviceNameLength, char* deviceUniqueIdUTF8,
     49         uint32_t deviceUniqueIdUTF8Length,
     50         char* productUniqueIdUTF8 = 0,
     51         uint32_t productUniqueIdUTF8Length = 0);
     52 
     53     /*
     54      *   Returns the number of capabilities for this device
     55      */
     56     virtual int32_t NumberOfCapabilities(
     57         const char* deviceUniqueIdUTF8);
     58 
     59     /*
     60      *   Gets the capabilities of the named device
     61      */
     62     virtual int32_t GetCapability(
     63         const char* deviceUniqueIdUTF8,
     64         const uint32_t deviceCapabilityNumber,
     65         VideoCaptureCapability& capability);
     66 
     67     /*
     68      *  Gets the capability that best matches the requested width, height and frame rate.
     69      *  Returns the deviceCapabilityNumber on success.
     70      */
     71     virtual int32_t GetBestMatchedCapability(
     72         const char* deviceUniqueIdUTF8,
     73         const VideoCaptureCapability& requested,
     74         VideoCaptureCapability& resulting);
     75 
     76     /*
     77      * Display OS /capture device specific settings dialog
     78      */
     79     virtual int32_t DisplayCaptureSettingsDialogBox(
     80         const char* deviceUniqueIdUTF8,
     81         const char* dialogTitleUTF8, void* parentWindow,
     82         uint32_t positionX, uint32_t positionY);
     83 
     84 protected:
     85     virtual int32_t CreateCapabilityMap(
     86         const char* deviceUniqueIdUTF8);
     87 
     88     VideoCaptureMacQTKitInfoObjC*    _captureInfo;
     89 };
     90 }  // namespace videocapturemodule
     91 }  // namespace webrtc
     92 
     93 #endif  // WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_INFO_H_
     94