// Copyright 2015 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_BASE_FEEDBACK_SIGNAL_ACCUMULATOR_H_ #define MEDIA_BASE_FEEDBACK_SIGNAL_ACCUMULATOR_H_ #include <algorithm> #include <cmath> #include <ostream> #include "base/time/time.h" namespace media { // Utility class for maintaining an exponentially-decaying average of feedback // signal values whose updates occur at undetermined, possibly irregular time // intervals. // // Feedback signals can be made by multiple sources. Meaning, there can be // several values provided for the same timestamp. In this case, the greatest // value is retained and used to re-compute the average. Therefore, the values // provided to this class' methods should be appropriately translated with this // in mind. For example, an "fraction available" metric should be translated // into a "fraction utilized" one. // // Usage note: Reset() must be called at least once before the first call to // Update(). // // This template class supports data points that are timestamped using either // |base::TimeDelta| or |base::TimeTicks|. template <typename TimeType> class FeedbackSignalAccumulator { … }; } // namespace media #endif // MEDIA_BASE_FEEDBACK_SIGNAL_ACCUMULATOR_H_