summaryrefslogtreecommitdiff
path: root/video_engine/overuse_frame_detector.h
diff options
context:
space:
mode:
authormflodman@webrtc.org <mflodman@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2013-06-26 11:23:01 +0000
committermflodman@webrtc.org <mflodman@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2013-06-26 11:23:01 +0000
commitf8f91d6b9b69eaf2c73a63419a502034cdf371c1 (patch)
treeda54894c87b7bb22b6450361835b667856ec927e /video_engine/overuse_frame_detector.h
parent0291c803da147cf113e829562f281479be8f2c11 (diff)
downloadwebrtc-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.h73
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_