From fb2dbf2c77d38c624791a50e9bf3c8698e238da3 Mon Sep 17 00:00:00 2001 From: tonihei Date: Tue, 18 Jul 2017 07:43:21 -0700 Subject: [PATCH] Use Clock in DefaultBandwidthMeter instead of SystemClock. The default behaviour stays the same as Clock.DEFAULT == SystemClock. And it enables bandwidth measurements in tests with simulated clocks. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=162350852 --- .../exoplayer2/upstream/DefaultBandwidthMeter.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultBandwidthMeter.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultBandwidthMeter.java index 20f28e7a7d..db04b2580e 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultBandwidthMeter.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultBandwidthMeter.java @@ -16,8 +16,8 @@ package com.google.android.exoplayer2.upstream; import android.os.Handler; -import android.os.SystemClock; import com.google.android.exoplayer2.util.Assertions; +import com.google.android.exoplayer2.util.Clock; import com.google.android.exoplayer2.util.SlidingPercentile; /** @@ -37,6 +37,7 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList private final Handler eventHandler; private final EventListener eventListener; private final SlidingPercentile slidingPercentile; + private final Clock clock; private int streamCount; private long sampleStartTimeMs; @@ -55,9 +56,15 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList } public DefaultBandwidthMeter(Handler eventHandler, EventListener eventListener, int maxWeight) { + this(eventHandler, eventListener, maxWeight, Clock.DEFAULT); + } + + public DefaultBandwidthMeter(Handler eventHandler, EventListener eventListener, int maxWeight, + Clock clock) { this.eventHandler = eventHandler; this.eventListener = eventListener; this.slidingPercentile = new SlidingPercentile(maxWeight); + this.clock = clock; bitrateEstimate = NO_ESTIMATE; } @@ -69,7 +76,7 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList @Override public synchronized void onTransferStart(Object source, DataSpec dataSpec) { if (streamCount == 0) { - sampleStartTimeMs = SystemClock.elapsedRealtime(); + sampleStartTimeMs = clock.elapsedRealtime(); } streamCount++; } @@ -82,7 +89,7 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList @Override public synchronized void onTransferEnd(Object source) { Assertions.checkState(streamCount > 0); - long nowMs = SystemClock.elapsedRealtime(); + long nowMs = clock.elapsedRealtime(); int sampleElapsedTimeMs = (int) (nowMs - sampleStartTimeMs); totalElapsedTimeMs += sampleElapsedTimeMs; totalBytesTransferred += sampleBytesTransferred;