From 0f1931cbcf9d1adaec90b041fecbf679430a2d71 Mon Sep 17 00:00:00 2001 From: tonihei Date: Mon, 4 Jun 2018 06:36:33 -0700 Subject: [PATCH] Add getTransferListener to BandwidthMeter. This will allow the player to obtain the transfer listener used by the bandwidth meter in order to pass it automatically to the relevant data sources. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=199124880 --- RELEASENOTES.md | 2 ++ .../exoplayer2/upstream/BandwidthMeter.java | 8 ++++++++ .../upstream/DefaultBandwidthMeter.java | 15 ++++++++------- 3 files changed, 18 insertions(+), 7 deletions(-) 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)); } } }