blob: fd8a75697373ab96679db701c3f0ffed7297e309 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "garnet/bin/mediaplayer/metrics/rate_tracker.h"
#include "garnet/bin/mediaplayer/graph/formatting.h"
#include "garnet/bin/mediaplayer/graph/packet.h"
namespace media_player {
RateTracker::RateTracker() { Reset(); }
RateTracker::~RateTracker() {}
void RateTracker::Reset() {
last_progressing_sample_time_ = Packet::kUnknownPts;
progress_intervals_.Reset();
}
void RateTracker::AddSample(int64_t now, bool progressing) {
if (!progressing) {
last_progressing_sample_time_ = Packet::kUnknownPts;
} else {
if (last_progressing_sample_time_ != Packet::kUnknownPts) {
progress_intervals_.AddSample(now - last_progressing_sample_time_);
}
last_progressing_sample_time_ = now;
}
}
std::ostream& operator<<(std::ostream& os, const RateTracker& value) {
os << fostr::NewLine << "rate per second "
<< value.progress_samples_per_second();
os << fostr::NewLine << "minimum interval "
<< AsNs(value.min_progress_interval());
os << fostr::NewLine << "average interval "
<< AsNs(value.average_progress_interval());
return os << fostr::NewLine << "maximum interval "
<< AsNs(value.max_progress_interval());
}
} // namespace media_player