diff options
Diffstat (limited to 'webrtc/modules/video_coding/codec_timer.h')
-rw-r--r-- | webrtc/modules/video_coding/codec_timer.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/webrtc/modules/video_coding/codec_timer.h b/webrtc/modules/video_coding/codec_timer.h new file mode 100644 index 0000000000..8ebd82ab9c --- /dev/null +++ b/webrtc/modules/video_coding/codec_timer.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2011 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_MODULES_VIDEO_CODING_CODEC_TIMER_H_ +#define WEBRTC_MODULES_VIDEO_CODING_CODEC_TIMER_H_ + +#include "webrtc/modules/include/module_common_types.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(); + + // Updates the max filtered decode time. + void MaxFilter(int32_t newDecodeTimeMs, int64_t nowMs); + + // Empty the list of timers. + void Reset(); + + // Get the required decode time in ms. + int32_t RequiredDecodeTimeMs(FrameType frameType) const; + + private: + void UpdateMaxHistory(int32_t decodeTime, int64_t now); + void ProcessHistory(int64_t nowMs); + + int32_t _filteredMax; + // The number of samples ignored so far. + int32_t _ignoredSampleCount; + int32_t _shortMax; + VCMShortMaxSample _history[MAX_HISTORY_SIZE]; +}; + +} // namespace webrtc + +#endif // WEBRTC_MODULES_VIDEO_CODING_CODEC_TIMER_H_ |