Class 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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addEventListener​(Handler eventHandler, com.google.android.exoplayer2.upstream.BandwidthMeter.EventListener eventListener)  
      long getBitrateEstimate()  
      com.google.android.exoplayer2.upstream.BandwidthMeter getDelegate()  
      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.
      void logTransferInfo​(boolean logTransferInfo)  
      void onBytesTransferred​(com.google.android.exoplayer2.upstream.DataSource source, com.google.android.exoplayer2.upstream.DataSpec dataSpec, boolean isNetwork, int bytesTransferred)  
      void onTransferEnd​(com.google.android.exoplayer2.upstream.DataSource source, com.google.android.exoplayer2.upstream.DataSpec dataSpec, boolean isNetwork)  
      void onTransferInitializing​(com.google.android.exoplayer2.upstream.DataSource source, com.google.android.exoplayer2.upstream.DataSpec dataSpec, boolean isNetwork)  
      void onTransferStart​(com.google.android.exoplayer2.upstream.DataSource source, com.google.android.exoplayer2.upstream.DataSpec dataSpec, boolean isNetwork)  
      void removeEventListener​(com.google.android.exoplayer2.upstream.BandwidthMeter.EventListener eventListener)  
      void setDelegate​(com.google.android.exoplayer2.upstream.BandwidthMeter delegate)
      Set the delegate or null
    • Method Detail

      • getBitrateEstimate

        public long getBitrateEstimate()
        Specified by:
        getBitrateEstimate in interface com.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:
        getTransferListener in interface com.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 for AbrConfiguration.METHOD_EXO

        Parameters:
        delegate - The delegate
      • getDelegate

        @Nullable
        public com.google.android.exoplayer2.upstream.BandwidthMeter getDelegate()
        Returns:
        The delegate or null
      • addEventListener

        public void addEventListener​(Handler eventHandler,
                                     com.google.android.exoplayer2.upstream.BandwidthMeter.EventListener eventListener)
        Specified by:
        addEventListener in interface com.google.android.exoplayer2.upstream.BandwidthMeter
      • removeEventListener

        public void removeEventListener​(com.google.android.exoplayer2.upstream.BandwidthMeter.EventListener eventListener)
        Specified by:
        removeEventListener in interface com.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:
        onTransferInitializing in interface com.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:
        onTransferStart in interface com.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:
        onBytesTransferred in interface com.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:
        onTransferEnd in interface com.google.android.exoplayer2.upstream.TransferListener
      • logTransferInfo

        public void logTransferInfo​(boolean logTransferInfo)