diff --git a/RELEASENOTES.md b/RELEASENOTES.md index fed3a0b7fe..46ba143a5a 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -17,6 +17,8 @@ ([#3972](https://github.com/google/ExoPlayer/issues/3972)). * HLS: * Allow injection of custom playlist trackers. +* Add method to `BandwidthMeter` to return the `TransferListener` used to gather + bandwidth information. ### 2.8.1 ### diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/BandwidthMeter.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/BandwidthMeter.java index 0a3fb967a8..31e034d9d1 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/BandwidthMeter.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/BandwidthMeter.java @@ -15,6 +15,8 @@ */ package com.google.android.exoplayer2.upstream; +import android.support.annotation.Nullable; + /** * Provides estimates of the currently available bandwidth. */ @@ -40,4 +42,10 @@ public interface BandwidthMeter { /** Returns the estimated bandwidth in bits/sec. */ long getBitrateEstimate(); + + /** + * Returns the {@link TransferListener} that this instance uses to gather bandwidth information + * from data transfers. May be null, if no transfer listener is used. + */ + @Nullable TransferListener getTransferListener(); } 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 f32965619a..fb084ad3a4 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 @@ -171,6 +171,11 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList return bitrateEstimate; } + @Override + public @Nullable TransferListener getTransferListener() { + return this; + } + @Override public synchronized void onTransferStart(Object source, DataSpec dataSpec) { if (streamCount == 0) { @@ -206,14 +211,10 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList sampleBytesTransferred = 0; } - private void notifyBandwidthSample(final int elapsedMs, final long bytes, final long bitrate) { + private void notifyBandwidthSample(int elapsedMs, long bytes, long bitrate) { if (eventHandler != null && eventListener != null) { - eventHandler.post(new Runnable() { - @Override - public void run() { - eventListener.onBandwidthSample(elapsedMs, bytes, bitrate); - } - }); + EventListener eventListener = this.eventListener; + eventHandler.post(() -> eventListener.onBandwidthSample(elapsedMs, bytes, bitrate)); } } }