From 29d75b3f7d04669ad821ff17cfea1e064cb265e1 Mon Sep 17 00:00:00 2001 From: "mflodman@webrtc.org" Date: Tue, 1 Nov 2011 17:10:49 +0000 Subject: [PATCH] Only allow increasing capture time. Review URL: http://webrtc-codereview.appspot.com/259001 git-svn-id: http://webrtc.googlecode.com/svn/trunk@861 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../video_capture/main/source/video_capture_impl.cc | 9 ++++++++- .../video_capture/main/source/video_capture_impl.h | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/modules/video_capture/main/source/video_capture_impl.cc b/src/modules/video_capture/main/source/video_capture_impl.cc index 6530245cc0..d034fac363 100644 --- a/src/modules/video_capture/main/source/video_capture_impl.cc +++ b/src/modules/video_capture/main/source/video_capture_impl.cc @@ -168,7 +168,8 @@ VideoCaptureImpl::VideoCaptureImpl(const WebRtc_Word32 id) _lastFrameRateCallbackTime(TickTime::Now()), _frameRateCallBack(false), _noPictureAlarmCallBack(false), _captureAlarm(Cleared), _setCaptureDelay(0), _dataCallBack(NULL), _captureCallBack(NULL), _startImageFrameIntervall(0), - _lastProcessFrameCount(TickTime::Now()), _rotateFrame(kRotateNone) + _lastProcessFrameCount(TickTime::Now()), _rotateFrame(kRotateNone), + last_capture_time_(TickTime::MillisecondTimestamp()) { _requestedCapability.width = kDefaultWidth; @@ -266,6 +267,12 @@ WebRtc_Word32 VideoCaptureImpl::DeliverCapturedFrame(VideoFrame& captureFrame, captureFrame.SetRenderTime(TickTime::MillisecondTimestamp()); } + if (captureFrame.RenderTimeMs() == last_capture_time_) { + // We don't allow the same capture time for two frames, drop this one. + return -1; + } + last_capture_time_ = captureFrame.RenderTimeMs(); + captureFrame.SetHeight(height); captureFrame.SetWidth(width); diff --git a/src/modules/video_capture/main/source/video_capture_impl.h b/src/modules/video_capture/main/source/video_capture_impl.h index 7057f1d0d6..6bd7b2d74c 100644 --- a/src/modules/video_capture/main/source/video_capture_impl.h +++ b/src/modules/video_capture/main/source/video_capture_impl.h @@ -144,6 +144,9 @@ private: VideoRotationMode _rotateFrame; //Set if the frame should be rotated by the capture module. VideoFrame _captureFrame; + + // Used to make sure incoming timestamp is increasing for every frame. + WebRtc_Word64 last_capture_time_; }; } // namespace videocapturemodule } //namespace webrtc