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
21namespace webrtc
22{
23namespace videocapturemodule
24{
25
26class VideoCaptureMacQTKitInfo: public DeviceInfoImpl
27{
28public:
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
84protected:
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