skewed_tick_clock.cc 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Copyright 2014 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "media/cast/test/skewed_tick_clock.h"
  5. #include "base/time/time.h"
  6. namespace media {
  7. namespace cast {
  8. namespace test {
  9. SkewedTickClock::SkewedTickClock(const base::TickClock* clock)
  10. : clock_(clock),
  11. skew_(1.0),
  12. last_skew_set_time_(clock_->NowTicks()),
  13. skew_clock_at_last_set_(last_skew_set_time_) {}
  14. base::TimeTicks SkewedTickClock::SkewTicks(base::TimeTicks now) const {
  15. return base::Microseconds((now - last_skew_set_time_).InMicroseconds() *
  16. skew_) +
  17. skew_clock_at_last_set_;
  18. }
  19. void SkewedTickClock::SetSkew(double skew, base::TimeDelta offset) {
  20. base::TimeTicks now = clock_->NowTicks();
  21. skew_clock_at_last_set_ = SkewTicks(now) + offset;
  22. skew_ = skew;
  23. last_skew_set_time_ = now;
  24. }
  25. base::TimeTicks SkewedTickClock::NowTicks() const {
  26. return SkewTicks(clock_->NowTicks());
  27. }
  28. } // namespace test
  29. } // namespace cast
  30. } // namespace media