Package com.castlabs.android.player
Class BandwidthMeterWrapper
java.lang.Object
com.castlabs.android.player.BandwidthMeterWrapper
- All Implemented Interfaces:
com.google.android.exoplayer2.upstream.BandwidthMeter,com.google.android.exoplayer2.upstream.TransferListener
public class BandwidthMeterWrapper
extends Object
implements com.google.android.exoplayer2.upstream.BandwidthMeter, com.google.android.exoplayer2.upstream.TransferListener
Wrapper implementation around the bandwidth meter. We need to allow algorithms and also some
plugins to bring their own bandwidth meter. This class is exposed to the track selector as well
as to plugin so they can either set a bandwidth meter delegate and/or disable tracking of
transfers entirely. In the latter case, the implementations are expected to call
the
onTrasferXXX methods explicitly.- Since:
- 4.2.6
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.google.android.exoplayer2.upstream.BandwidthMeter
com.google.android.exoplayer2.upstream.BandwidthMeter.EventListener -
Method Summary
Modifier and TypeMethodDescriptionvoidaddEventListener(Handler eventHandler, com.google.android.exoplayer2.upstream.BandwidthMeter.EventListener eventListener) longcom.google.android.exoplayer2.upstream.BandwidthMeterReturns the delegate or null if no delegate is set.com.google.android.exoplayer2.upstream.TransferListenerReturn the transfer listener that will delegate to a sub meter if the transfer listener support is enabled.voidlogTransferInfo(boolean logTransferInfo) Set whether to log transfer info or not.voidonBytesTransferred(com.google.android.exoplayer2.upstream.DataSource source, com.google.android.exoplayer2.upstream.DataSpec dataSpec, boolean isNetwork, int bytesTransferred) voidonTransferEnd(com.google.android.exoplayer2.upstream.DataSource source, com.google.android.exoplayer2.upstream.DataSpec dataSpec, boolean isNetwork) voidonTransferInitializing(com.google.android.exoplayer2.upstream.DataSource source, com.google.android.exoplayer2.upstream.DataSpec dataSpec, boolean isNetwork) voidonTransferStart(com.google.android.exoplayer2.upstream.DataSource source, com.google.android.exoplayer2.upstream.DataSpec dataSpec, boolean isNetwork) voidremoveEventListener(com.google.android.exoplayer2.upstream.BandwidthMeter.EventListener eventListener) voidsetDelegate(com.google.android.exoplayer2.upstream.BandwidthMeter delegate) Set the delegate or null
-
Method Details
-
getBitrateEstimate
public long getBitrateEstimate()- Specified by:
getBitrateEstimatein interfacecom.google.android.exoplayer2.upstream.BandwidthMeter
-
getTransferListener
@Nullable public com.google.android.exoplayer2.upstream.TransferListener getTransferListener()Return the transfer listener that will delegate to a sub meter if the transfer listener support is enabled.- Specified by:
getTransferListenerin interfacecom.google.android.exoplayer2.upstream.BandwidthMeter- Returns:
- The transfer listener or null
-
setDelegate
public void setDelegate(@Nullable com.google.android.exoplayer2.upstream.BandwidthMeter delegate) Set the delegate or null Note that setting external delegate is valid only forAbrConfiguration.METHOD_EXO- Parameters:
delegate- The delegate
-
getDelegate
@Nullable public com.google.android.exoplayer2.upstream.BandwidthMeter getDelegate()Returns the delegate or null if no delegate is set.- Returns:
- The delegate or null
-
addEventListener
public void addEventListener(Handler eventHandler, com.google.android.exoplayer2.upstream.BandwidthMeter.EventListener eventListener) - Specified by:
addEventListenerin interfacecom.google.android.exoplayer2.upstream.BandwidthMeter
-
removeEventListener
public void removeEventListener(com.google.android.exoplayer2.upstream.BandwidthMeter.EventListener eventListener) - Specified by:
removeEventListenerin interfacecom.google.android.exoplayer2.upstream.BandwidthMeter
-
onTransferInitializing
public void onTransferInitializing(com.google.android.exoplayer2.upstream.DataSource source, com.google.android.exoplayer2.upstream.DataSpec dataSpec, boolean isNetwork) - Specified by:
onTransferInitializingin interfacecom.google.android.exoplayer2.upstream.TransferListener
-
onTransferStart
public void onTransferStart(com.google.android.exoplayer2.upstream.DataSource source, com.google.android.exoplayer2.upstream.DataSpec dataSpec, boolean isNetwork) - Specified by:
onTransferStartin interfacecom.google.android.exoplayer2.upstream.TransferListener
-
onBytesTransferred
public void onBytesTransferred(com.google.android.exoplayer2.upstream.DataSource source, com.google.android.exoplayer2.upstream.DataSpec dataSpec, boolean isNetwork, int bytesTransferred) - Specified by:
onBytesTransferredin interfacecom.google.android.exoplayer2.upstream.TransferListener
-
onTransferEnd
public void onTransferEnd(com.google.android.exoplayer2.upstream.DataSource source, com.google.android.exoplayer2.upstream.DataSpec dataSpec, boolean isNetwork) - Specified by:
onTransferEndin interfacecom.google.android.exoplayer2.upstream.TransferListener
-
logTransferInfo
public void logTransferInfo(boolean logTransferInfo) Set whether to log transfer info or not.This is useful for debugging purposes, but should be disabled in production builds.
- Parameters:
logTransferInfo- Whether to log transfer info
-