Class AbrConfiguration

java.lang.Object
com.castlabs.android.player.AbrConfiguration
All Implemented Interfaces:
Parcelable

public class AbrConfiguration extends Object implements Parcelable
The ABR configuration. Use the AbrConfiguration.Builder to create new instances of this class.
Since:
4.1.0
  • Field Details

    • ENABLED

      public static boolean ENABLED
      The common algorithms may be disabled. This is useful for unit tests where the native libraries can not be loaded. The METHOD_EXO is used then.
    • METHOD_EXO

      public static final int METHOD_EXO
      Exo implementation of network based adaptation
      See Also:
    • METHOD_ITERATE

      public static final int METHOD_ITERATE
      Iterate through renditions (FOR DEBUGGING)
      See Also:
    • METHOD_FLIP

      public static final int METHOD_FLIP
      Flip between lowest and highest quality (FOR DEBUGGING)
      See Also:
    • METHOD_COMMON_NBA

      public static final int METHOD_COMMON_NBA
      Common across platforms implementation of network based adaptation
      See Also:
    • CREATOR

      public static final Parcelable.Creator<AbrConfiguration> CREATOR
    • DEFAULT_MANUAL_SELECTION

      public static final com.google.android.exoplayer2.Format DEFAULT_MANUAL_SELECTION
    • DEFAULT_MAX_INITIAL_BITRATE

      public static final long DEFAULT_MAX_INITIAL_BITRATE
      See Also:
    • DEFAULT_MIN_DURATION_FOR_QUALITY_INCREASE_US

      public static final long DEFAULT_MIN_DURATION_FOR_QUALITY_INCREASE_US
      See Also:
    • DEFAULT_MAX_DURATION_FOR_QUALITY_DECREASE_US

      public static final long DEFAULT_MAX_DURATION_FOR_QUALITY_DECREASE_US
      See Also:
    • DEFAULT_MIN_DURATION_TO_RETAIN_AFTER_DISCARD_US

      public static final long DEFAULT_MIN_DURATION_TO_RETAIN_AFTER_DISCARD_US
      See Also:
    • DEFAULT_SAFE_BUFFER_SIZE_US

      public static final long DEFAULT_SAFE_BUFFER_SIZE_US
      See Also:
    • DEFAULT_DOWNLOAD_TIME_FACTOR

      public static final float DEFAULT_DOWNLOAD_TIME_FACTOR
      See Also:
    • DEFAULT_BANDWIDTH_FRACTION

      public static final float DEFAULT_BANDWIDTH_FRACTION
      See Also:
    • DEFAULT_METHOD

      public static final int DEFAULT_METHOD
      See Also:
    • DEFAULT_PERCENTILE_WEIGHT

      public static final int DEFAULT_PERCENTILE_WEIGHT
      See Also:
    • DEFAULT_PERCENTILE

      public static final float DEFAULT_PERCENTILE
      See Also:
    • DEFAULT_THRESHOLD_BYTES

      public static final int DEFAULT_THRESHOLD_BYTES
      See Also:
    • DEFAULT_THRESHOLD_TIME_MS

      public static final int DEFAULT_THRESHOLD_TIME_MS
      See Also:
    • DEFAULT_MIN_SAMPLED_BYTES

      public static final long DEFAULT_MIN_SAMPLED_BYTES
      See Also:
    • DEFAULT_DEGRADATION_PENALTY

      public static final float DEFAULT_DEGRADATION_PENALTY
      See Also:
    • DEFAULT_DEGRADATION_RECOVERY

      public static final float DEFAULT_DEGRADATION_RECOVERY
      See Also:
    • DEFAULT_DEGRADATION_SAMPLES

      public static final int DEFAULT_DEGRADATION_SAMPLES
      See Also:
    • DEFAULT_USE_CMSD

      public static final boolean DEFAULT_USE_CMSD
      See Also:
    • DEFAULT_INITIAL_TRACK_SELECTION

      public static final int DEFAULT_INITIAL_TRACK_SELECTION
      See Also:
    • DEFAULT_KEEP_INITIAL_TRACK_SELECTION

      public static final boolean DEFAULT_KEEP_INITIAL_TRACK_SELECTION
      See Also:
    • maxInitialBitrate

      public final long maxInitialBitrate
      The bandwidth estimation in bits per second that is used when the bandwidth estimator reports that it can not estimate due to lack of information. This is usually used for the initial quality selection when no network estimation was collected yet.
    • minDurationForQualityIncreaseUs

      public final long minDurationForQualityIncreaseUs
      The minimum amount of that data is expected to be buffered before a quality increase is permitted.

      By default, we we expect to have at least 10 seconds of buffered data before we can switch up the quality. That gives some safe guards around building up a stable buffer when the bandwidth estimation is not very accurate.

    • maxDurationForQualityDecreaseUs

      public final long maxDurationForQualityDecreaseUs
      The maximum amount of data that is expected to be buffered before a quality decrease is permitted.

      Similar to the min duration for quality increase. By default we will not switch down the quality if we have more than 25 seconds of buffer. That avoids that the player will react to short fluctuations in the network capacity. Decreasing this value will prevent down switches longer, but increase the chance for a buffer under run.

    • bandwidthFraction

      public final float bandwidthFraction
      The fraction of the bandwidth estimation that we consider to calculate the effective bandwidth. Defaults to 0.75.
    • initialTrackSelection

      public final int initialTrackSelection
      The initial track selection can be used to manually select a track by index initially, in combination with keepInitialSelection. You can also use SdkConsts.VIDEO_QUALITY_HIGHEST or SdkConsts.VIDEO_QUALITY_LOWEST. The default value is SdkConsts.VIDEO_QUALITY_ADAPTIVE.

      Please note that maxInitialBitrate is a better option if you want to influence the initial track selection because you will no need to know the actual indices.

    • keepInitialSelection

      public final boolean keepInitialSelection
      True if the first selection should be kept. This will effectively switch the ABR into manual mode after the initial selection.
    • method

      public final int method
      The ABR method
    • minDurationToRetainAfterDiscardUs

      public final long minDurationToRetainAfterDiscardUs
      Duration of the buffer to retain after discarding chunks e.g. discarding SD chunks to replace with better HD quality
    • safeBufferSizeUs

      public final long safeBufferSizeUs
      Minimum target buffer considered safe. Buffer below or equals this threshold results in emergency handling.
    • downloadTimeFactor

      public final float downloadTimeFactor
      Safety factor that is applied to download time calculations
    • percentileWeight

      public final int percentileWeight
      The weight used for the sliding percentile bandwidth estimator
    • percentile

      public final float percentile
      The percentile, applicable to METHOD_COMMON_NBA
    • bytesThreshold

      public final int bytesThreshold
      The min number of bytes before transferred bytes and times are used for ABR calculations, applicable to METHOD_COMMON_NBA
    • timeThresholdMs

      public final int timeThresholdMs
      The min time in milliseconds before transferred bytes and times are used for ABR calculations, applicable to METHOD_COMMON_NBA
    • minSampledBytes

      public final long minSampledBytes
      The min number of totally transferred bytes before the ABR calculations are considered reliable, applicable to METHOD_COMMON_NBA
    • degradationPenalty

      public final float degradationPenalty
      A value between 0 and 1 that is used as a penalty when a buffer degradation or a download time issue us detected. In that case the assumption is that the current bandwidth estimate is not enough, since the buffer is getting smaller or became already too small to provide enough time to download the next segment of a selected rendition. In that case the penalty is used to artificially reduce the bandwidth estimation and hence permit the player to re-build some of its buffer.
    • degradationRecovery

      public final float degradationRecovery
      The recovery that is applied on each selection after a degradationPenalty was applied. This removes the penalty over time.
    • minDegradationSamples

      public final int minDegradationSamples
      The minium number of segments observed before buffer degradation detection is permitted.
    • useCMSD

      public final boolean useCMSD
      When enabled, the Player will try to parse the CMSD-Dynamic header to extract the backend-informed estimated bandwidth (the etp field) and use it as the estimation for quality selection.

      In case the header is not found or cannot be properly parsed, the Player will fall back to using whatever method has been selected.

  • Method Details