mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
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
This commit is contained in:
parent
3ff9695a73
commit
fb2dbf2c77
1 changed files with 10 additions and 3 deletions
|
|
@ -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
|
||||||
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
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
@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
|
||||||
@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;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue