• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_DEVICE_INFO_IMPL_H_
12 #define WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_DEVICE_INFO_IMPL_H_
13 
14 #include <vector>
15 
16 #include "webrtc/modules/video_capture/video_capture.h"
17 #include "webrtc/modules/video_capture/video_capture_delay.h"
18 #include "webrtc/system_wrappers/include/rw_lock_wrapper.h"
19 
20 namespace webrtc
21 {
22 namespace videocapturemodule
23 {
24 class DeviceInfoImpl: public VideoCaptureModule::DeviceInfo
25 {
26 public:
27     DeviceInfoImpl(const int32_t id);
28     virtual ~DeviceInfoImpl(void);
29     virtual int32_t NumberOfCapabilities(const char* deviceUniqueIdUTF8);
30     virtual int32_t GetCapability(
31         const char* deviceUniqueIdUTF8,
32         const uint32_t deviceCapabilityNumber,
33         VideoCaptureCapability& capability);
34 
35     virtual int32_t GetBestMatchedCapability(
36         const char* deviceUniqueIdUTF8,
37         const VideoCaptureCapability& requested,
38         VideoCaptureCapability& resulting);
39     virtual int32_t GetOrientation(const char* deviceUniqueIdUTF8,
40                                    VideoRotation& orientation);
41 
42 protected:
43     /* Initialize this object*/
44 
45     virtual int32_t Init()=0;
46     /*
47      * Fills the member variable _captureCapabilities with capabilities for the given device name.
48      */
49     virtual int32_t CreateCapabilityMap(const char* deviceUniqueIdUTF8)=0;
50 
51     /* Returns the expected Capture delay*/
52     int32_t GetExpectedCaptureDelay(const DelayValues delayValues[],
53                                     const uint32_t sizeOfDelayValues,
54                                     const char* productId,
55                                     const uint32_t width,
56                                     const uint32_t height);
57 protected:
58     // Data members
59     int32_t _id;
60     typedef std::vector<VideoCaptureCapability> VideoCaptureCapabilities;
61     VideoCaptureCapabilities _captureCapabilities;
62     RWLockWrapper& _apiLock;
63     char* _lastUsedDeviceName;
64     uint32_t _lastUsedDeviceNameLength;
65 };
66 }  // namespace videocapturemodule
67 }  // namespace webrtc
68 #endif // WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_DEVICE_INFO_IMPL_H_
69