Index: webrtc/modules/video_coding/codec_timer.h |
diff --git a/webrtc/modules/video_coding/codec_timer.h b/webrtc/modules/video_coding/codec_timer.h |
index 90ef6bb5e54b254d62f524a5809ddae581f2c5f7..8ebd82ab9c240f38070f6ef23ec5fa0ae81ccec4 100644 |
--- a/webrtc/modules/video_coding/codec_timer.h |
+++ b/webrtc/modules/video_coding/codec_timer.h |
@@ -11,39 +11,45 @@ |
#ifndef WEBRTC_MODULES_VIDEO_CODING_CODEC_TIMER_H_ |
#define WEBRTC_MODULES_VIDEO_CODING_CODEC_TIMER_H_ |
-#include <queue> |
- |
#include "webrtc/modules/include/module_common_types.h" |
-#include "webrtc/modules/video_coding/percentile_filter.h" |
#include "webrtc/typedefs.h" |
namespace webrtc { |
+ |
+// MAX_HISTORY_SIZE * SHORT_FILTER_MS defines the window size in milliseconds |
+#define MAX_HISTORY_SIZE 10 |
+#define SHORT_FILTER_MS 1000 |
+ |
+class VCMShortMaxSample { |
+ public: |
+ VCMShortMaxSample() : shortMax(0), timeMs(-1) {} |
+ |
+ int32_t shortMax; |
+ int64_t timeMs; |
+}; |
class VCMCodecTimer { |
public: |
VCMCodecTimer(); |
- // Add a new decode time to the filter. |
- void AddTiming(int64_t new_decode_time_ms, int64_t now_ms); |
+ // Updates the max filtered decode time. |
+ void MaxFilter(int32_t newDecodeTimeMs, int64_t nowMs); |
- // Get the required decode time in ms. It is the 95th percentile observed |
- // decode time within a time window. |
- int64_t RequiredDecodeTimeMs() const; |
+ // Empty the list of timers. |
+ void Reset(); |
+ |
+ // Get the required decode time in ms. |
+ int32_t RequiredDecodeTimeMs(FrameType frameType) const; |
private: |
- struct Sample { |
- Sample(int64_t decode_time_ms, int64_t sample_time_ms); |
- int64_t decode_time_ms; |
- int64_t sample_time_ms; |
- }; |
+ void UpdateMaxHistory(int32_t decodeTime, int64_t now); |
+ void ProcessHistory(int64_t nowMs); |
+ int32_t _filteredMax; |
// The number of samples ignored so far. |
- int ignored_sample_count_; |
- // Queue with history of latest decode time values. |
- std::queue<Sample> history_; |
- // |filter_| contains the same values as |history_|, but in a data structure |
- // that allows efficient retrieval of the percentile value. |
- PercentileFilter filter_; |
+ int32_t _ignoredSampleCount; |
+ int32_t _shortMax; |
+ VCMShortMaxSample _history[MAX_HISTORY_SIZE]; |
}; |
} // namespace webrtc |