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