Commit fb2dbf2c by tonihei Committed by Oliver Woodman

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
parent 3ff9695a
...@@ -16,8 +16,8 @@ ...@@ -16,8 +16,8 @@
package com.google.android.exoplayer2.upstream; package com.google.android.exoplayer2.upstream;
import android.os.Handler; import android.os.Handler;
import android.os.SystemClock;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Clock;
import com.google.android.exoplayer2.util.SlidingPercentile; import com.google.android.exoplayer2.util.SlidingPercentile;
/** /**
...@@ -37,6 +37,7 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList ...@@ -37,6 +37,7 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList
private final Handler eventHandler; private final Handler eventHandler;
private final EventListener eventListener; private final EventListener eventListener;
private final SlidingPercentile slidingPercentile; private final SlidingPercentile slidingPercentile;
private final Clock clock;
private int streamCount; private int streamCount;
private long sampleStartTimeMs; private long sampleStartTimeMs;
...@@ -55,9 +56,15 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList ...@@ -55,9 +56,15 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList
} }
public DefaultBandwidthMeter(Handler eventHandler, EventListener eventListener, int maxWeight) { 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.eventHandler = eventHandler;
this.eventListener = eventListener; this.eventListener = eventListener;
this.slidingPercentile = new SlidingPercentile(maxWeight); this.slidingPercentile = new SlidingPercentile(maxWeight);
this.clock = clock;
bitrateEstimate = NO_ESTIMATE; bitrateEstimate = NO_ESTIMATE;
} }
...@@ -69,7 +76,7 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList ...@@ -69,7 +76,7 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList
@Override @Override
public synchronized void onTransferStart(Object source, DataSpec dataSpec) { public synchronized void onTransferStart(Object source, DataSpec dataSpec) {
if (streamCount == 0) { if (streamCount == 0) {
sampleStartTimeMs = SystemClock.elapsedRealtime(); sampleStartTimeMs = clock.elapsedRealtime();
} }
streamCount++; streamCount++;
} }
...@@ -82,7 +89,7 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList ...@@ -82,7 +89,7 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList
@Override @Override
public synchronized void onTransferEnd(Object source) { public synchronized void onTransferEnd(Object source) {
Assertions.checkState(streamCount > 0); Assertions.checkState(streamCount > 0);
long nowMs = SystemClock.elapsedRealtime(); long nowMs = clock.elapsedRealtime();
int sampleElapsedTimeMs = (int) (nowMs - sampleStartTimeMs); int sampleElapsedTimeMs = (int) (nowMs - sampleStartTimeMs);
totalElapsedTimeMs += sampleElapsedTimeMs; totalElapsedTimeMs += sampleElapsedTimeMs;
totalBytesTransferred += sampleBytesTransferred; totalBytesTransferred += sampleBytesTransferred;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment