Class AbrConfiguration
- All Implemented Interfaces:
Parcelable
AbrConfiguration.Builder to create new instances of this
class.- Since:
- 4.1.0
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic @interfaceThe method used for ABR.static classA builder for ABR configuration instancesNested classes/interfaces inherited from interface android.os.Parcelable
Parcelable.ClassLoaderCreator<T>, Parcelable.Creator<T> -
Field Summary
FieldsModifier and TypeFieldDescriptionfinal floatThe fraction of the bandwidth estimation that we consider to calculate the effective bandwidth.final intThe min number of bytes before transferred bytes and times are used for ABR calculations, applicable toMETHOD_COMMON_NBAstatic final Parcelable.Creator<AbrConfiguration> Parcelable.Creatorfor theAbrConfigurationclass.static final floatThe default bandwidth fractionstatic final floatThe default degradation penaltystatic final floatThe default degradation recoverystatic final intThe default min degradation samplesstatic final floatThe default download time factorstatic final intThe default initial track selection.static final booleanThe default value forkeepInitialSelection.static final com.google.android.exoplayer2.FormatThe default manual selectionstatic final longThe default max duration for quality decreasestatic final longThe default max initial bitratestatic final intThe default methodstatic final longThe default min duration for quality increasestatic final longThe default min duration to retain after discardstatic final longThe default min sampled bytesstatic final floatThe default percentilestatic final intThe default percentile weightstatic final longThe default safe buffer size in microsecondsstatic final intThe default bytes thresholdstatic final intThe default time threshold in millisecondsstatic final booleanThe default usage of CMSDfinal floatA value between 0 and 1 that is used as a penalty when a buffer degradation or a download time issue us detected.final floatThe recovery that is applied on each selection after adegradationPenaltywas applied.final floatSafety factor that is applied to download time calculationsstatic booleanThe common algorithms may be disabled.final intThe initial track selection can be used to manually select a track by index initially, in combination withkeepInitialSelection.final booleanTrue if the first selection should be kept.final longThe maximum amount of data that is expected to be buffered before a quality decrease is permitted.final longThe bandwidth estimation in bits per second that is used when the bandwidth estimator reports that it can not estimate due to lack of information.final intThe ABR methodstatic final intCommon across platforms implementation of network based adaptationstatic final intExo implementation of network based adaptationstatic final intFlip between lowest and highest quality (FOR DEBUGGING)static final intIterate through renditions (FOR DEBUGGING)final intThe minium number of segments observed before buffer degradation detection is permitted.final longThe minimum amount of that data is expected to be buffered before a quality increase is permitted.final longDuration of the buffer to retain after discarding chunks e.g.final longThe min number of totally transferred bytes before the ABR calculations are considered reliable, applicable toMETHOD_COMMON_NBAfinal floatThe percentile, applicable toMETHOD_COMMON_NBAfinal intThe weight used for the sliding percentile bandwidth estimatorfinal longMinimum target buffer considered safe.final intThe min time in milliseconds before transferred bytes and times are used for ABR calculations, applicable toMETHOD_COMMON_NBAfinal booleanWhen 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
Modifier and TypeMethodDescriptionintbooleaninthashCode()toString()update()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 Details
-
ENABLED
public static boolean ENABLEDThe 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_EXOExo implementation of network based adaptation- See Also:
-
METHOD_ITERATE
public static final int METHOD_ITERATEIterate through renditions (FOR DEBUGGING)- See Also:
-
METHOD_FLIP
public static final int METHOD_FLIPFlip between lowest and highest quality (FOR DEBUGGING)- See Also:
-
METHOD_COMMON_NBA
public static final int METHOD_COMMON_NBACommon across platforms implementation of network based adaptation- See Also:
-
CREATOR
Parcelable.Creatorfor theAbrConfigurationclass. -
DEFAULT_MANUAL_SELECTION
public static final com.google.android.exoplayer2.Format DEFAULT_MANUAL_SELECTIONThe default manual selection -
DEFAULT_MAX_INITIAL_BITRATE
public static final long DEFAULT_MAX_INITIAL_BITRATEThe default max initial bitrate- See Also:
-
DEFAULT_MIN_DURATION_FOR_QUALITY_INCREASE_US
public static final long DEFAULT_MIN_DURATION_FOR_QUALITY_INCREASE_USThe default min duration for quality increase- See Also:
-
DEFAULT_MAX_DURATION_FOR_QUALITY_DECREASE_US
public static final long DEFAULT_MAX_DURATION_FOR_QUALITY_DECREASE_USThe default max duration for quality decrease- See Also:
-
DEFAULT_MIN_DURATION_TO_RETAIN_AFTER_DISCARD_US
public static final long DEFAULT_MIN_DURATION_TO_RETAIN_AFTER_DISCARD_USThe default min duration to retain after discard- See Also:
-
DEFAULT_SAFE_BUFFER_SIZE_US
public static final long DEFAULT_SAFE_BUFFER_SIZE_USThe default safe buffer size in microseconds- See Also:
-
DEFAULT_DOWNLOAD_TIME_FACTOR
public static final float DEFAULT_DOWNLOAD_TIME_FACTORThe default download time factor- See Also:
-
DEFAULT_BANDWIDTH_FRACTION
public static final float DEFAULT_BANDWIDTH_FRACTIONThe default bandwidth fraction- See Also:
-
DEFAULT_METHOD
public static final int DEFAULT_METHODThe default method- See Also:
-
DEFAULT_PERCENTILE_WEIGHT
public static final int DEFAULT_PERCENTILE_WEIGHTThe default percentile weight- See Also:
-
DEFAULT_PERCENTILE
public static final float DEFAULT_PERCENTILEThe default percentile- See Also:
-
DEFAULT_THRESHOLD_BYTES
public static final int DEFAULT_THRESHOLD_BYTESThe default bytes threshold- See Also:
-
DEFAULT_THRESHOLD_TIME_MS
public static final int DEFAULT_THRESHOLD_TIME_MSThe default time threshold in milliseconds- See Also:
-
DEFAULT_MIN_SAMPLED_BYTES
public static final long DEFAULT_MIN_SAMPLED_BYTESThe default min sampled bytes- See Also:
-
DEFAULT_DEGRADATION_PENALTY
public static final float DEFAULT_DEGRADATION_PENALTYThe default degradation penalty- See Also:
-
DEFAULT_DEGRADATION_RECOVERY
public static final float DEFAULT_DEGRADATION_RECOVERYThe default degradation recovery- See Also:
-
DEFAULT_DEGRADATION_SAMPLES
public static final int DEFAULT_DEGRADATION_SAMPLESThe default min degradation samples- See Also:
-
DEFAULT_USE_CMSD
public static final boolean DEFAULT_USE_CMSDThe default usage of CMSD- See Also:
-
DEFAULT_INITIAL_TRACK_SELECTION
public static final int DEFAULT_INITIAL_TRACK_SELECTIONThe default initial track selection.- See Also:
-
DEFAULT_KEEP_INITIAL_TRACK_SELECTION
public static final boolean DEFAULT_KEEP_INITIAL_TRACK_SELECTIONThe default value forkeepInitialSelection.- See Also:
-
maxInitialBitrate
public final long maxInitialBitrateThe 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 minDurationForQualityIncreaseUsThe 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 maxDurationForQualityDecreaseUsThe 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 bandwidthFractionThe fraction of the bandwidth estimation that we consider to calculate the effective bandwidth. Defaults to 0.75. -
initialTrackSelection
public final int initialTrackSelectionThe 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 keepInitialSelectionTrue if the first selection should be kept. This will effectively switch the ABR into manual mode after the initial selection. -
method
public final int methodThe ABR method -
minDurationToRetainAfterDiscardUs
public final long minDurationToRetainAfterDiscardUsDuration of the buffer to retain after discarding chunks e.g. discarding SD chunks to replace with better HD quality -
safeBufferSizeUs
public final long safeBufferSizeUsMinimum target buffer considered safe. Buffer below or equals this threshold results in emergency handling. -
downloadTimeFactor
public final float downloadTimeFactorSafety factor that is applied to download time calculations -
percentileWeight
public final int percentileWeightThe weight used for the sliding percentile bandwidth estimator -
percentile
public final float percentileThe percentile, applicable toMETHOD_COMMON_NBA -
bytesThreshold
public final int bytesThresholdThe min number of bytes before transferred bytes and times are used for ABR calculations, applicable toMETHOD_COMMON_NBA -
timeThresholdMs
public final int timeThresholdMsThe min time in milliseconds before transferred bytes and times are used for ABR calculations, applicable toMETHOD_COMMON_NBA -
minSampledBytes
public final long minSampledBytesThe min number of totally transferred bytes before the ABR calculations are considered reliable, applicable toMETHOD_COMMON_NBA -
degradationPenalty
public final float degradationPenaltyA 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 degradationRecoveryThe recovery that is applied on each selection after adegradationPenaltywas applied. This removes the penalty over time. -
minDegradationSamples
public final int minDegradationSamplesThe minium number of segments observed before buffer degradation detection is permitted. -
useCMSD
public final boolean useCMSDWhen 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 Details
-
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
- Specified by:
writeToParcelin interfaceParcelable
-
toString
-
hashCode
public int hashCode() -
equals
-