// Copyright 2014 The Chromium 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 "media/cast/test/skewed_tick_clock.h" #include "base/time/time.h" namespace media { namespace cast { namespace test { SkewedTickClock::SkewedTickClock(base::TickClock* clock) : clock_(clock), skew_(1.0), last_skew_set_time_(clock_->NowTicks()), skew_clock_at_last_set_(last_skew_set_time_) { } base::TimeTicks SkewedTickClock::SkewTicks(base::TimeTicks now) { return base::TimeDelta::FromMicroseconds( (now - last_skew_set_time_).InMicroseconds() * skew_) + skew_clock_at_last_set_; } void SkewedTickClock::SetSkew(double skew, base::TimeDelta offset) { base::TimeTicks now = clock_->NowTicks(); skew_clock_at_last_set_ = SkewTicks(now) + offset; skew_ = skew; last_skew_set_time_ = now; } base::TimeTicks SkewedTickClock::NowTicks() { return SkewTicks(clock_->NowTicks()); } } // namespace test } // namespace cast } // namespace media