1 /* 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #ifndef WEBRTC_MODULES_VIDEO_CODING_CODEC_TIMER_H_ 12 #define WEBRTC_MODULES_VIDEO_CODING_CODEC_TIMER_H_ 13 14 #include "webrtc/modules/include/module_common_types.h" 15 #include "webrtc/typedefs.h" 16 17 namespace webrtc { 18 19 // MAX_HISTORY_SIZE * SHORT_FILTER_MS defines the window size in milliseconds 20 #define MAX_HISTORY_SIZE 10 21 #define SHORT_FILTER_MS 1000 22 23 class VCMShortMaxSample { 24 public: VCMShortMaxSample()25 VCMShortMaxSample() : shortMax(0), timeMs(-1) {} 26 27 int32_t shortMax; 28 int64_t timeMs; 29 }; 30 31 class VCMCodecTimer { 32 public: 33 VCMCodecTimer(); 34 35 // Updates the max filtered decode time. 36 void MaxFilter(int32_t newDecodeTimeMs, int64_t nowMs); 37 38 // Empty the list of timers. 39 void Reset(); 40 41 // Get the required decode time in ms. 42 int32_t RequiredDecodeTimeMs(FrameType frameType) const; 43 44 private: 45 void UpdateMaxHistory(int32_t decodeTime, int64_t now); 46 void ProcessHistory(int64_t nowMs); 47 48 int32_t _filteredMax; 49 // The number of samples ignored so far. 50 int32_t _ignoredSampleCount; 51 int32_t _shortMax; 52 VCMShortMaxSample _history[MAX_HISTORY_SIZE]; 53 }; 54 55 } // namespace webrtc 56 57 #endif // WEBRTC_MODULES_VIDEO_CODING_CODEC_TIMER_H_ 58