diff options
author | mflodman@webrtc.org <mflodman@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2013-06-26 11:23:01 +0000 |
---|---|---|
committer | mflodman@webrtc.org <mflodman@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2013-06-26 11:23:01 +0000 |
commit | f8f91d6b9b69eaf2c73a63419a502034cdf371c1 (patch) | |
tree | da54894c87b7bb22b6450361835b667856ec927e /video_engine/overuse_frame_detector.h | |
parent | 0291c803da147cf113e829562f281479be8f2c11 (diff) | |
download | webrtc-f8f91d6b9b69eaf2c73a63419a502034cdf371c1.tar.gz |
Adding a first simple version of overuse detection, but not hooked up.
BUG=
R=asapersson@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/1717004
git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@4268 4adac7df-926f-26a2-2b94-8c16560cd09d
Diffstat (limited to 'video_engine/overuse_frame_detector.h')
-rw-r--r-- | video_engine/overuse_frame_detector.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/video_engine/overuse_frame_detector.h b/video_engine/overuse_frame_detector.h new file mode 100644 index 00000000..d631d34a --- /dev/null +++ b/video_engine/overuse_frame_detector.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2013 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_VIDEO_ENGINE_OVERUSE_FRAME_DETECTOR_H_ +#define WEBRTC_VIDEO_ENGINE_OVERUSE_FRAME_DETECTOR_H_ + +#include <list> + +#include "webrtc/modules/interface/module.h" +#include "webrtc/system_wrappers/interface/constructor_magic.h" +#include "webrtc/system_wrappers/interface/scoped_ptr.h" + +namespace webrtc { + +class Clock; +class CriticalSectionWrapper; + +class OveruseObserver { + public: + // Called when an overuse has been detected, based on the number of calls to + // 'CapturedFrame' and 'EncodedFrame'. + virtual void OveruseDetected() = 0; + virtual ~OveruseObserver() {} +}; + +// Use to detect system overuse based on the number of captured frames vs. the +// number of encoded frames. +class OveruseFrameDetector : public Module { + public: + OveruseFrameDetector(Clock* clock, OveruseObserver* observer); + ~OveruseFrameDetector(); + + // Called for each new captured frame. + void CapturedFrame(); + + // Called for every encoded frame. + void EncodedFrame(); + + // Implements Module. + virtual int32_t TimeUntilNextProcess(); + virtual int32_t Process(); + + private: + void CleanOldSamples(); + + // Protecting all members. + scoped_ptr<CriticalSectionWrapper> crit_; + + // Observer getting overuse reports. + OveruseObserver* observer_; + + Clock* clock_; + int64_t last_process_time_; + + // Capture time for frames. + std::list<int64_t> capture_times_; + + // Start encode time for a frame. + std::list<int64_t> encode_times_; + + DISALLOW_COPY_AND_ASSIGN(OveruseFrameDetector); +}; + +} // namespace webrtc + +#endif // WEBRTC_VIDEO_ENGINE_OVERUSE_FRAME_DETECTOR_H_ |