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_H_
12#define WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_H_
13
14#import <QTKit/QTKit.h>
15#include <stdio.h>
16
17#include "webrtc/modules/video_capture/device_info_impl.h"
18#include "webrtc/modules/video_capture/mac/qtkit/video_capture_qtkit_utility.h"
19#include "webrtc/modules/video_capture/video_capture_impl.h"
20
21@class VideoCaptureMacQTKitObjC;
22@class VideoCaptureMacQTKitInfoObjC;
23
24namespace webrtc
25{
26namespace videocapturemodule
27{
28
29class VideoCaptureMacQTKit : public VideoCaptureImpl
30{
31public:
32    VideoCaptureMacQTKit(const int32_t id);
33    virtual ~VideoCaptureMacQTKit();
34
35    /*
36    *   Create a video capture module object
37    *
38    *   id - unique identifier of this video capture module object
39    *   deviceUniqueIdUTF8 -  name of the device. Available names can be found
40    *       by using GetDeviceName
41    *   deviceUniqueIdUTF8Length - length of deviceUniqueIdUTF8
42    */
43    static void Destroy(VideoCaptureModule* module);
44
45    int32_t Init(const int32_t id, const char* deviceUniqueIdUTF8);
46
47
48    // Start/Stop
49    virtual int32_t StartCapture(
50        const VideoCaptureCapability& capability);
51    virtual int32_t StopCapture();
52
53    // Properties of the set device
54
55    virtual bool CaptureStarted();
56
57    int32_t CaptureSettings(VideoCaptureCapability& settings);
58
59protected:
60    // Help functions
61    int32_t SetCameraOutput();
62
63private:
64    VideoCaptureMacQTKitObjC*        _captureDevice;
65    VideoCaptureMacQTKitInfoObjC*    _captureInfo;
66    bool                    _isCapturing;
67    int32_t            _id;
68    int32_t            _captureWidth;
69    int32_t            _captureHeight;
70    int32_t            _captureFrameRate;
71    char                     _currentDeviceNameUTF8[MAX_NAME_LENGTH];
72    char                     _currentDeviceUniqueIdUTF8[MAX_NAME_LENGTH];
73    char                     _currentDeviceProductUniqueIDUTF8[MAX_NAME_LENGTH];
74    int32_t            _frameCount;
75};
76}  // namespace videocapturemodule
77}  // namespace webrtc
78
79#endif  // WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QTKIT_VIDEO_CAPTURE_QTKIT_H_
80