Index: webrtc/video/overuse_frame_detector.h |
diff --git a/webrtc/video/overuse_frame_detector.h b/webrtc/video/overuse_frame_detector.h |
index d2606c19e6950003e366a87856d308d9f20c6d4e..7440030b60bc2a0a3dbc73bd5f97596bced1d629 100644 |
--- a/webrtc/video/overuse_frame_detector.h |
+++ b/webrtc/video/overuse_frame_detector.h |
@@ -11,6 +11,8 @@ |
#ifndef WEBRTC_VIDEO_OVERUSE_FRAME_DETECTOR_H_ |
#define WEBRTC_VIDEO_OVERUSE_FRAME_DETECTOR_H_ |
+#include <list> |
+ |
#include "webrtc/base/constructormagic.h" |
#include "webrtc/base/criticalsection.h" |
#include "webrtc/base/scoped_ptr.h" |
@@ -22,6 +24,8 @@ |
namespace webrtc { |
class Clock; |
+class EncodedImage; |
+class VideoFrame; |
// CpuOveruseObserver is called when a system overuse is detected and |
// VideoEngine cannot keep up the encoding frequency. |
@@ -68,7 +72,8 @@ struct CpuOveruseMetrics { |
class CpuOveruseMetricsObserver { |
public: |
virtual ~CpuOveruseMetricsObserver() {} |
- virtual void CpuOveruseMetricsUpdated(const CpuOveruseMetrics& metrics) = 0; |
+ virtual void OnEncodedFrameTimeMeasured(int encode_time_ms, |
+ const CpuOveruseMetrics& metrics) = 0; |
}; |
@@ -83,14 +88,10 @@ class OveruseFrameDetector : public Module { |
~OveruseFrameDetector(); |
// Called for each captured frame. |
- void FrameCaptured(int width, int height, int64_t capture_time_ms); |
+ void FrameCaptured(const VideoFrame& frame); |
// Called for each sent frame. |
- void FrameSent(int64_t capture_time_ms); |
- |
- // Only public for testing. |
- int LastProcessingTimeMs() const; |
- int FramesInQueue() const; |
+ void FrameSent(const EncodedImage& encoded_image); |
mflodman
2016/01/21 08:00:05
I'd prefer to only have the timing value as an arg
pbos-webrtc
2016/01/21 14:18:33
Done.
|
// Implements Module. |
int64_t TimeUntilNextProcess() override; |
@@ -98,9 +99,16 @@ class OveruseFrameDetector : public Module { |
private: |
class SendProcessingUsage; |
- class FrameQueue; |
+ struct FrameTiming { |
+ FrameTiming(uint32_t timestamp, int64_t now) |
+ : timestamp(timestamp), capture_ms(now), last_send_ms(-1) {} |
+ uint32_t timestamp; |
+ int64_t capture_ms; |
+ int64_t last_send_ms; |
+ }; |
- void UpdateCpuOveruseMetrics() EXCLUSIVE_LOCKS_REQUIRED(crit_); |
+ void EncodedFrameTimeMeasured(int encode_time_ms) |
+ EXCLUSIVE_LOCKS_REQUIRED(crit_); |
// TODO(asapersson): This method is only used on one thread, so it shouldn't |
// need a guard. |
@@ -128,6 +136,7 @@ class OveruseFrameDetector : public Module { |
// Stats metrics. |
CpuOveruseMetricsObserver* const metrics_observer_; |
+ int last_encode_time_ms_ GUARDED_BY(crit_); |
mflodman
2016/01/21 08:00:05
I prefer int64_t, following the rest of this class
pbos-webrtc
2016/01/21 14:18:33
Removed per other feedback.
|
CpuOveruseMetrics metrics_ GUARDED_BY(crit_); |
Clock* const clock_; |
@@ -152,7 +161,7 @@ class OveruseFrameDetector : public Module { |
// TODO(asapersson): Can these be regular members (avoid separate heap |
// allocs)? |
const rtc::scoped_ptr<SendProcessingUsage> usage_ GUARDED_BY(crit_); |
- const rtc::scoped_ptr<FrameQueue> frame_queue_ GUARDED_BY(crit_); |
+ std::list<FrameTiming> frame_timing_ GUARDED_BY(crit_); |
rtc::ThreadChecker processing_thread_; |