| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 { | 32 { |
| 33 public: | 33 public: |
| 34 | 34 |
| 35 /* | 35 /* |
| 36 * Create a video capture module object | 36 * Create a video capture module object |
| 37 * | 37 * |
| 38 * id - unique identifier of this video capture module object | 38 * id - unique identifier of this video capture module object |
| 39 * deviceUniqueIdUTF8 - name of the device. Available names can be found
by using GetDeviceName | 39 * deviceUniqueIdUTF8 - name of the device. Available names can be found
by using GetDeviceName |
| 40 */ | 40 */ |
| 41 static rtc::scoped_refptr<VideoCaptureModule> Create( | 41 static rtc::scoped_refptr<VideoCaptureModule> Create( |
| 42 const int32_t id, | |
| 43 const char* deviceUniqueIdUTF8); | 42 const char* deviceUniqueIdUTF8); |
| 44 | 43 |
| 45 /* | 44 /* |
| 46 * Create a video capture module object used for external capture. | 45 * Create a video capture module object used for external capture. |
| 47 * | 46 * |
| 48 * id - unique identifier of this video capture module object | 47 * id - unique identifier of this video capture module object |
| 49 * externalCapture - [out] interface to call when a new frame is captured. | 48 * externalCapture - [out] interface to call when a new frame is captured. |
| 50 */ | 49 */ |
| 51 static rtc::scoped_refptr<VideoCaptureModule> Create( | 50 static rtc::scoped_refptr<VideoCaptureModule> Create( |
| 52 const int32_t id, | |
| 53 VideoCaptureExternal*& externalCapture); | 51 VideoCaptureExternal*& externalCapture); |
| 54 | 52 |
| 55 static DeviceInfo* CreateDeviceInfo(const int32_t id); | 53 static DeviceInfo* CreateDeviceInfo(); |
| 56 | 54 |
| 57 // Helpers for converting between (integral) degrees and | 55 // Helpers for converting between (integral) degrees and |
| 58 // VideoRotation values. Return 0 on success. | 56 // VideoRotation values. Return 0 on success. |
| 59 static int32_t RotationFromDegrees(int degrees, VideoRotation* rotation); | 57 static int32_t RotationFromDegrees(int degrees, VideoRotation* rotation); |
| 60 static int32_t RotationInDegrees(VideoRotation rotation, int* degrees); | 58 static int32_t RotationInDegrees(VideoRotation rotation, int* degrees); |
| 61 | 59 |
| 62 //Call backs | 60 //Call backs |
| 63 virtual void RegisterCaptureDataCallback( | 61 void RegisterCaptureDataCallback( |
| 64 VideoCaptureDataCallback& dataCallback); | 62 rtc::VideoSinkInterface<VideoFrame>* dataCallback) override; |
| 65 virtual void DeRegisterCaptureDataCallback(); | 63 void DeRegisterCaptureDataCallback() override; |
| 66 virtual void RegisterCaptureCallback(VideoCaptureFeedBack& callBack); | |
| 67 virtual void DeRegisterCaptureCallback(); | |
| 68 | 64 |
| 69 virtual void SetCaptureDelay(int32_t delayMS); | 65 int32_t SetCaptureRotation(VideoRotation rotation) override; |
| 70 virtual int32_t CaptureDelay(); | 66 bool SetApplyRotation(bool enable) override; |
| 71 virtual int32_t SetCaptureRotation(VideoRotation rotation); | 67 bool GetApplyRotation() override { |
| 72 virtual bool SetApplyRotation(bool enable); | |
| 73 virtual bool GetApplyRotation() { | |
| 74 return apply_rotation_; | 68 return apply_rotation_; |
| 75 } | 69 } |
| 76 | 70 |
| 77 virtual void EnableFrameRateCallback(const bool enable); | 71 const char* CurrentDeviceName() const override; |
| 78 virtual void EnableNoPictureAlarm(const bool enable); | |
| 79 | |
| 80 virtual const char* CurrentDeviceName() const; | |
| 81 | |
| 82 // Module handling | |
| 83 virtual int64_t TimeUntilNextProcess(); | |
| 84 virtual void Process(); | |
| 85 | 72 |
| 86 // Implement VideoCaptureExternal | 73 // Implement VideoCaptureExternal |
| 87 // |capture_time| must be specified in NTP time format in milliseconds. | 74 // |capture_time| must be specified in NTP time format in milliseconds. |
| 88 virtual int32_t IncomingFrame(uint8_t* videoFrame, | 75 int32_t IncomingFrame(uint8_t* videoFrame, |
| 89 size_t videoFrameLength, | 76 size_t videoFrameLength, |
| 90 const VideoCaptureCapability& frameInfo, | 77 const VideoCaptureCapability& frameInfo, |
| 91 int64_t captureTime = 0); | 78 int64_t captureTime = 0) override; |
| 92 | 79 |
| 93 // Platform dependent | 80 // Platform dependent |
| 94 virtual int32_t StartCapture(const VideoCaptureCapability& capability) | 81 int32_t StartCapture(const VideoCaptureCapability& capability) override |
| 95 { | 82 { |
| 96 _requestedCapability = capability; | 83 _requestedCapability = capability; |
| 97 return -1; | 84 return -1; |
| 98 } | 85 } |
| 99 virtual int32_t StopCapture() { return -1; } | 86 int32_t StopCapture() override { return -1; } |
| 100 virtual bool CaptureStarted() {return false; } | 87 bool CaptureStarted() override {return false; } |
| 101 virtual int32_t CaptureSettings(VideoCaptureCapability& /*settings*/) | 88 int32_t CaptureSettings(VideoCaptureCapability& /*settings*/) override |
| 102 { return -1; } | 89 { return -1; } |
| 103 VideoCaptureEncodeInterface* GetEncodeInterface(const VideoCodec& /*codec*/) | |
| 104 { return NULL; } | |
| 105 | 90 |
| 106 protected: | 91 protected: |
| 107 VideoCaptureImpl(const int32_t id); | 92 VideoCaptureImpl(); |
| 108 virtual ~VideoCaptureImpl(); | 93 virtual ~VideoCaptureImpl(); |
| 109 int32_t DeliverCapturedFrame(VideoFrame& captureFrame); | 94 int32_t DeliverCapturedFrame(VideoFrame& captureFrame); |
| 110 | 95 |
| 111 int32_t _id; // Module ID | |
| 112 char* _deviceUniqueId; // current Device unique name; | 96 char* _deviceUniqueId; // current Device unique name; |
| 113 CriticalSectionWrapper& _apiCs; | 97 CriticalSectionWrapper& _apiCs; |
| 114 int32_t _captureDelay; // Current capture delay. May be changed of platform
dependent parts. | 98 int32_t _captureDelay; // Current capture delay. May be changed of platform
dependent parts. |
| 115 VideoCaptureCapability _requestedCapability; // Should be set by platform de
pendent code in StartCapture. | 99 VideoCaptureCapability _requestedCapability; // Should be set by platform de
pendent code in StartCapture. |
| 116 private: | 100 private: |
| 117 void UpdateFrameCount(); | 101 void UpdateFrameCount(); |
| 118 uint32_t CalculateFrameRate(int64_t now_ns); | 102 uint32_t CalculateFrameRate(int64_t now_ns); |
| 119 | 103 |
| 120 CriticalSectionWrapper& _callBackCs; | |
| 121 | |
| 122 // last time the module process function was called. | 104 // last time the module process function was called. |
| 123 int64_t _lastProcessTimeNanos; | 105 int64_t _lastProcessTimeNanos; |
| 124 // last time the frame rate callback function was called. | 106 // last time the frame rate callback function was called. |
| 125 int64_t _lastFrameRateCallbackTimeNanos; | 107 int64_t _lastFrameRateCallbackTimeNanos; |
| 126 bool _frameRateCallBack; // true if EnableFrameRateCallback | |
| 127 bool _noPictureAlarmCallBack; //true if EnableNoPictureAlarm | |
| 128 VideoCaptureAlarm _captureAlarm; // current value of the noPictureAlarm | |
| 129 | 108 |
| 130 int32_t _setCaptureDelay; // The currently used capture delay | 109 rtc::VideoSinkInterface<VideoFrame>* _dataCallBack; |
| 131 VideoCaptureDataCallback* _dataCallBack; | |
| 132 VideoCaptureFeedBack* _captureCallBack; | |
| 133 | 110 |
| 134 int64_t _lastProcessFrameTimeNanos; | 111 int64_t _lastProcessFrameTimeNanos; |
| 135 // timestamp for local captured frames | 112 // timestamp for local captured frames |
| 136 int64_t _incomingFrameTimesNanos[kFrameRateCountHistorySize]; | 113 int64_t _incomingFrameTimesNanos[kFrameRateCountHistorySize]; |
| 137 VideoRotation _rotateFrame; // Set if the frame should be rotated by the | 114 VideoRotation _rotateFrame; // Set if the frame should be rotated by the |
| 138 // capture module. | 115 // capture module. |
| 139 | 116 |
| 140 // Indicate whether rotation should be applied before delivered externally. | 117 // Indicate whether rotation should be applied before delivered externally. |
| 141 bool apply_rotation_; | 118 bool apply_rotation_; |
| 142 }; | 119 }; |
| 143 } // namespace videocapturemodule | 120 } // namespace videocapturemodule |
| 144 } // namespace webrtc | 121 } // namespace webrtc |
| 145 #endif // WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_VIDEO_CAPTURE_IMPL_H_ | 122 #endif // WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_VIDEO_CAPTURE_IMPL_H_ |
| OLD | NEW |