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 theAbrConfiguration.Builderto create new instances of this class.- Since:
- 4.1.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceAbrConfiguration.AbrMethodstatic classAbrConfiguration.BuilderA builder for ABR configuration instances-
Nested classes/interfaces inherited from interface android.os.Parcelable
Parcelable.ClassLoaderCreator<T extends Object>, Parcelable.Creator<T extends Object>
-
-
Field Summary
Fields Modifier and Type Field Description floatbandwidthFractionThe fraction of the bandwidth estimation that we consider to calculate the effective bandwidth.intbytesThresholdThe min number of bytes before transferred bytes and times are used for ABR calculations, applicable toMETHOD_COMMON_NBAstatic Parcelable.Creator<AbrConfiguration>CREATORstatic floatDEFAULT_BANDWIDTH_FRACTIONstatic floatDEFAULT_DEGRADATION_PENALTYstatic floatDEFAULT_DEGRADATION_RECOVERYstatic intDEFAULT_DEGRADATION_SAMPLESstatic floatDEFAULT_DOWNLOAD_TIME_FACTORstatic intDEFAULT_INITIAL_TRACK_SELECTIONstatic booleanDEFAULT_KEEP_INITIAL_TRACK_SELECTIONstatic com.google.android.exoplayer2.FormatDEFAULT_MANUAL_SELECTIONstatic longDEFAULT_MAX_DURATION_FOR_QUALITY_DECREASE_USstatic longDEFAULT_MAX_INITIAL_BITRATEstatic intDEFAULT_METHODstatic longDEFAULT_MIN_DURATION_FOR_QUALITY_INCREASE_USstatic longDEFAULT_MIN_DURATION_TO_RETAIN_AFTER_DISCARD_USstatic longDEFAULT_MIN_SAMPLED_BYTESstatic floatDEFAULT_PERCENTILEstatic intDEFAULT_PERCENTILE_WEIGHTstatic longDEFAULT_SAFE_BUFFER_SIZE_USstatic intDEFAULT_THRESHOLD_BYTESstatic intDEFAULT_THRESHOLD_TIME_MSstatic booleanDEFAULT_USE_CMSDfloatdegradationPenaltyA value between 0 and 1 that is used as a penalty when a buffer degradation or a download time issue us detected.floatdegradationRecoveryThe recovery that is applied on each selection after adegradationPenaltywas applied.floatdownloadTimeFactorSafety factor that is applied to download time calculationsstatic booleanENABLEDThe common algorithms may be disabled.intinitialTrackSelectionThe initial track selection can be used to manually select a track by index initially, in combination withkeepInitialSelection.booleankeepInitialSelectionTrue if the first selection should be kept.longmaxDurationForQualityDecreaseUsThe maximum amount of data that is expected to be buffered before a quality decrease is permitted.longmaxInitialBitrateThe bandwidth estimation in bits per second that is used when the bandwidth estimator reports that it can not estimate due to lack of information.intmethodThe ABR methodstatic intMETHOD_COMMON_NBACommon across platforms implementation of network based adaptationstatic intMETHOD_EXOExo implementation of network based adaptationstatic intMETHOD_FLIPFlip between lowest and highest quality (FOR DEBUGGING)static intMETHOD_ITERATEIterate through renditions (FOR DEBUGGING)intminDegradationSamplesThe minium number of segments observed before buffer degradation detection is permitted.longminDurationForQualityIncreaseUsThe minimum amount of that data is expected to be buffered before a quality increase is permitted.longminDurationToRetainAfterDiscardUsDuration of the buffer to retain after discarding chunks e.g.longminSampledBytesThe min number of totally transferred bytes before the ABR calculations are considered reliable, applicable toMETHOD_COMMON_NBAfloatpercentileThe percentile, applicable toMETHOD_COMMON_NBAintpercentileWeightThe weight used for the sliding percentile bandwidth estimatorlongsafeBufferSizeUsMinimum target buffer considered safe.inttimeThresholdMsThe min time in milliseconds before transferred bytes and times are used for ABR calculations, applicable toMETHOD_COMMON_NBAbooleanuseCMSDWhen 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.-
Fields inherited from interface android.os.Parcelable
CONTENTS_FILE_DESCRIPTOR, PARCELABLE_WRITE_RETURN_VALUE
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intdescribeContents()booleanequals(Object obj)inthashCode()StringtoString()AbrConfiguration.Builderupdate()Returns a new builder instance that can be used to create a new configuration that is based on this instance.voidwriteToParcel(Parcel parcel, int i)
-
-
-
Field Detail
-
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. TheMETHOD_EXOis used then.
-
METHOD_EXO
public static final int METHOD_EXO
Exo implementation of network based adaptation- See Also:
- Constant Field Values
-
METHOD_ITERATE
public static final int METHOD_ITERATE
Iterate through renditions (FOR DEBUGGING)- See Also:
- Constant Field Values
-
METHOD_FLIP
public static final int METHOD_FLIP
Flip between lowest and highest quality (FOR DEBUGGING)- See Also:
- Constant Field Values
-
METHOD_COMMON_NBA
public static final int METHOD_COMMON_NBA
Common across platforms implementation of network based adaptation- See Also:
- Constant Field Values
-
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:
- Constant Field Values
-
DEFAULT_MIN_DURATION_FOR_QUALITY_INCREASE_US
public static final long DEFAULT_MIN_DURATION_FOR_QUALITY_INCREASE_US
- See Also:
- Constant Field Values
-
DEFAULT_MAX_DURATION_FOR_QUALITY_DECREASE_US
public static final long DEFAULT_MAX_DURATION_FOR_QUALITY_DECREASE_US
- See Also:
- Constant Field Values
-
DEFAULT_MIN_DURATION_TO_RETAIN_AFTER_DISCARD_US
public static final long DEFAULT_MIN_DURATION_TO_RETAIN_AFTER_DISCARD_US
- See Also:
- Constant Field Values
-
DEFAULT_SAFE_BUFFER_SIZE_US
public static final long DEFAULT_SAFE_BUFFER_SIZE_US
- See Also:
- Constant Field Values
-
DEFAULT_DOWNLOAD_TIME_FACTOR
public static final float DEFAULT_DOWNLOAD_TIME_FACTOR
- See Also:
- Constant Field Values
-
DEFAULT_BANDWIDTH_FRACTION
public static final float DEFAULT_BANDWIDTH_FRACTION
- See Also:
- Constant Field Values
-
DEFAULT_METHOD
public static final int DEFAULT_METHOD
- See Also:
- Constant Field Values
-
DEFAULT_PERCENTILE_WEIGHT
public static final int DEFAULT_PERCENTILE_WEIGHT
- See Also:
- Constant Field Values
-
DEFAULT_PERCENTILE
public static final float DEFAULT_PERCENTILE
- See Also:
- Constant Field Values
-
DEFAULT_THRESHOLD_BYTES
public static final int DEFAULT_THRESHOLD_BYTES
- See Also:
- Constant Field Values
-
DEFAULT_THRESHOLD_TIME_MS
public static final int DEFAULT_THRESHOLD_TIME_MS
- See Also:
- Constant Field Values
-
DEFAULT_MIN_SAMPLED_BYTES
public static final long DEFAULT_MIN_SAMPLED_BYTES
- See Also:
- Constant Field Values
-
DEFAULT_DEGRADATION_PENALTY
public static final float DEFAULT_DEGRADATION_PENALTY
- See Also:
- Constant Field Values
-
DEFAULT_DEGRADATION_RECOVERY
public static final float DEFAULT_DEGRADATION_RECOVERY
- See Also:
- Constant Field Values
-
DEFAULT_DEGRADATION_SAMPLES
public static final int DEFAULT_DEGRADATION_SAMPLES
- See Also:
- Constant Field Values
-
DEFAULT_USE_CMSD
public static final boolean DEFAULT_USE_CMSD
- See Also:
- Constant Field Values
-
DEFAULT_INITIAL_TRACK_SELECTION
public static final int DEFAULT_INITIAL_TRACK_SELECTION
- See Also:
- Constant Field Values
-
DEFAULT_KEEP_INITIAL_TRACK_SELECTION
public static final boolean DEFAULT_KEEP_INITIAL_TRACK_SELECTION
- See Also:
- Constant Field Values
-
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 withkeepInitialSelection. You can also useSdkConsts.VIDEO_QUALITY_HIGHESTorSdkConsts.VIDEO_QUALITY_LOWEST. The default value isSdkConsts.VIDEO_QUALITY_ADAPTIVE.Please note that
maxInitialBitrateis 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 toMETHOD_COMMON_NBA
-
bytesThreshold
public final int bytesThreshold
The min number of bytes before transferred bytes and times are used for ABR calculations, applicable toMETHOD_COMMON_NBA
-
timeThresholdMs
public final int timeThresholdMs
The min time in milliseconds before transferred bytes and times are used for ABR calculations, applicable toMETHOD_COMMON_NBA
-
minSampledBytes
public final long minSampledBytes
The min number of totally transferred bytes before the ABR calculations are considered reliable, applicable toMETHOD_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 adegradationPenaltywas 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
methodhas been selected.
-
-
Method Detail
-
update
public AbrConfiguration.Builder update()
Returns a new builder instance that can be used to create a new configuration that is based on this instance.- Returns:
- The builder
-
describeContents
public int describeContents()
- Specified by:
describeContentsin interfaceParcelable
-
writeToParcel
public void writeToParcel(Parcel parcel, int i)
- Specified by:
writeToParcelin interfaceParcelable
-
-