/* * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #ifndef WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_DEVICE_INFO_IMPL_H_ #define WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_DEVICE_INFO_IMPL_H_ #include "video_capture.h" #include "map_wrapper.h" #include "rw_lock_wrapper.h" #include "video_capture_delay.h" namespace webrtc { namespace videocapturemodule { class DeviceInfoImpl: public VideoCaptureModule::DeviceInfo { public: DeviceInfoImpl(const WebRtc_Word32 id); virtual ~DeviceInfoImpl(void); virtual WebRtc_Word32 NumberOfCapabilities(const WebRtc_UWord8* deviceUniqueIdUTF8); virtual WebRtc_Word32 GetCapability(const WebRtc_UWord8* deviceUniqueIdUTF8, const WebRtc_UWord32 deviceCapabilityNumber, VideoCaptureCapability& capability); virtual WebRtc_Word32 GetBestMatchedCapability(const WebRtc_UWord8*deviceUniqueIdUTF8, const VideoCaptureCapability requested, VideoCaptureCapability& resulting); virtual WebRtc_Word32 GetOrientation(const WebRtc_UWord8* deviceUniqueIdUTF8, VideoCaptureRotation& orientation); protected: /* Initialize this object*/ virtual WebRtc_Word32 Init()=0; /* * Fills the member variable _captureCapabilities with capabilities for the given device name. */ virtual WebRtc_Word32 CreateCapabilityMap(const WebRtc_UWord8* deviceUniqueIdUTF8)=0; /* Returns the expected Capture delay*/ WebRtc_Word32 GetExpectedCaptureDelay(const DelayValues delayValues[], const WebRtc_UWord32 sizeOfDelayValues, const WebRtc_UWord8* productId, const WebRtc_UWord32 width, const WebRtc_UWord32 height); protected: // Data members WebRtc_Word32 _id; MapWrapper _captureCapabilities; RWLockWrapper& _apiLock; WebRtc_UWord8* _lastUsedDeviceName; WebRtc_UWord32 _lastUsedDeviceNameLength; }; } //namespace videocapturemodule } // namespace webrtc #endif // WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_DEVICE_INFO_IMPL_H_