Class AdaptiveTrackSelection.Factory
- java.lang.Object
-
- com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection.Factory
-
- All Implemented Interfaces:
ExoTrackSelection.Factory
- Enclosing class:
- AdaptiveTrackSelection
public static class AdaptiveTrackSelection.Factory extends Object implements ExoTrackSelection.Factory
Factory forAdaptiveTrackSelection
instances.
-
-
Constructor Summary
Constructors Constructor Description Factory()
Creates an adaptive track selection factory with default parameters.Factory(int minDurationForQualityIncreaseMs, int maxDurationForQualityDecreaseMs, int minDurationToRetainAfterDiscardMs, float bandwidthFraction)
Creates an adaptive track selection factory.Factory(int minDurationForQualityIncreaseMs, int maxDurationForQualityDecreaseMs, int minDurationToRetainAfterDiscardMs, float bandwidthFraction, float bufferedFractionToLiveEdgeForQualityIncrease, Clock clock)
Creates an adaptive track selection factory.Factory(int minDurationForQualityIncreaseMs, int maxDurationForQualityDecreaseMs, int minDurationToRetainAfterDiscardMs, int maxWidthToDiscard, int maxHeightToDiscard, float bandwidthFraction)
Creates an adaptive track selection factory.Factory(int minDurationForQualityIncreaseMs, int maxDurationForQualityDecreaseMs, int minDurationToRetainAfterDiscardMs, int maxWidthToDiscard, int maxHeightToDiscard, float bandwidthFraction, float bufferedFractionToLiveEdgeForQualityIncrease, Clock clock)
Creates an adaptive track selection factory.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected AdaptiveTrackSelection
createAdaptiveTrackSelection(TrackGroup group, int[] tracks, int type, BandwidthMeter bandwidthMeter, ImmutableList<AdaptiveTrackSelection.AdaptationCheckpoint> adaptationCheckpoints)
Creates a single adaptive selection for the given group, bandwidth meter and tracks.@NullableType ExoTrackSelection[]
createTrackSelections(@NullableType ExoTrackSelection.Definition[] definitions, BandwidthMeter bandwidthMeter, MediaSource.MediaPeriodId mediaPeriodId, Timeline timeline)
Creates track selections for the providedDefinitions
.
-
-
-
Constructor Detail
-
Factory
public Factory()
Creates an adaptive track selection factory with default parameters.
-
Factory
public Factory(int minDurationForQualityIncreaseMs, int maxDurationForQualityDecreaseMs, int minDurationToRetainAfterDiscardMs, float bandwidthFraction)
Creates an adaptive track selection factory.- Parameters:
minDurationForQualityIncreaseMs
- The minimum duration of buffered data required for the selected track to switch to one of higher quality.maxDurationForQualityDecreaseMs
- The maximum duration of buffered data required for the selected track to switch to one of lower quality.minDurationToRetainAfterDiscardMs
- When switching to a video track of higher quality, the selection may indicate that media already buffered at the lower quality can be discarded to speed up the switch. This is the minimum duration of media that must be retained at the lower quality. It must be at leastminDurationForQualityIncreaseMs
.bandwidthFraction
- The fraction of the available bandwidth that the selection should consider available for use. Setting to a value less than 1 is recommended to account for inaccuracies in the bandwidth estimator.
-
Factory
public Factory(int minDurationForQualityIncreaseMs, int maxDurationForQualityDecreaseMs, int minDurationToRetainAfterDiscardMs, int maxWidthToDiscard, int maxHeightToDiscard, float bandwidthFraction)
Creates an adaptive track selection factory.- Parameters:
minDurationForQualityIncreaseMs
- The minimum duration of buffered data required for the selected track to switch to one of higher quality.maxDurationForQualityDecreaseMs
- The maximum duration of buffered data required for the selected track to switch to one of lower quality.minDurationToRetainAfterDiscardMs
- When switching to a video track of higher quality, the selection may indicate that media already buffered at the lower quality can be discarded to speed up the switch. This is the minimum duration of media that must be retained at the lower quality. It must be at leastminDurationForQualityIncreaseMs
.maxWidthToDiscard
- The maximum video width that the selector may discard from the buffer to speed up switching to a higher quality.maxHeightToDiscard
- The maximum video height that the selector may discard from the buffer to speed up switching to a higher quality.bandwidthFraction
- The fraction of the available bandwidth that the selection should consider available for use. Setting to a value less than 1 is recommended to account for inaccuracies in the bandwidth estimator.
-
Factory
public Factory(int minDurationForQualityIncreaseMs, int maxDurationForQualityDecreaseMs, int minDurationToRetainAfterDiscardMs, float bandwidthFraction, float bufferedFractionToLiveEdgeForQualityIncrease, Clock clock)
Creates an adaptive track selection factory.- Parameters:
minDurationForQualityIncreaseMs
- The minimum duration of buffered data required for the selected track to switch to one of higher quality.maxDurationForQualityDecreaseMs
- The maximum duration of buffered data required for the selected track to switch to one of lower quality.minDurationToRetainAfterDiscardMs
- When switching to a video track of higher quality, the selection may indicate that media already buffered at the lower quality can be discarded to speed up the switch. This is the minimum duration of media that must be retained at the lower quality. It must be at leastminDurationForQualityIncreaseMs
.bandwidthFraction
- The fraction of the available bandwidth that the selection should consider available for use. Setting to a value less than 1 is recommended to account for inaccuracies in the bandwidth estimator.bufferedFractionToLiveEdgeForQualityIncrease
- For live streaming, the fraction of the duration from current playback position to the live edge that has to be buffered before the selected track can be switched to one of higher quality. This parameter is only applied when the playback position is closer to the live edge thanminDurationForQualityIncreaseMs
, which would otherwise prevent switching to a higher quality from happening.clock
- AClock
.
-
Factory
public Factory(int minDurationForQualityIncreaseMs, int maxDurationForQualityDecreaseMs, int minDurationToRetainAfterDiscardMs, int maxWidthToDiscard, int maxHeightToDiscard, float bandwidthFraction, float bufferedFractionToLiveEdgeForQualityIncrease, Clock clock)
Creates an adaptive track selection factory.- Parameters:
minDurationForQualityIncreaseMs
- The minimum duration of buffered data required for the selected track to switch to one of higher quality.maxDurationForQualityDecreaseMs
- The maximum duration of buffered data required for the selected track to switch to one of lower quality.minDurationToRetainAfterDiscardMs
- When switching to a video track of higher quality, the selection may indicate that media already buffered at the lower quality can be discarded to speed up the switch. This is the minimum duration of media that must be retained at the lower quality. It must be at leastminDurationForQualityIncreaseMs
.maxWidthToDiscard
- The maximum video width that the selector may discard from the buffer to speed up switching to a higher quality.maxHeightToDiscard
- The maximum video height that the selector may discard from the buffer to speed up switching to a higher quality.bandwidthFraction
- The fraction of the available bandwidth that the selection should consider available for use. Setting to a value less than 1 is recommended to account for inaccuracies in the bandwidth estimator.bufferedFractionToLiveEdgeForQualityIncrease
- For live streaming, the fraction of the duration from current playback position to the live edge that has to be buffered before the selected track can be switched to one of higher quality. This parameter is only applied when the playback position is closer to the live edge thanminDurationForQualityIncreaseMs
, which would otherwise prevent switching to a higher quality from happening.clock
- AClock
.
-
-
Method Detail
-
createTrackSelections
public final @NullableType ExoTrackSelection[] createTrackSelections(@NullableType ExoTrackSelection.Definition[] definitions, BandwidthMeter bandwidthMeter, MediaSource.MediaPeriodId mediaPeriodId, Timeline timeline)
Description copied from interface:ExoTrackSelection.Factory
Creates track selections for the providedDefinitions
.Implementations that create at most one adaptive track selection may use
TrackSelectionUtil.createTrackSelectionsForDefinitions(com.google.android.exoplayer2.trackselection.ExoTrackSelection.Definition[], com.google.android.exoplayer2.trackselection.TrackSelectionUtil.AdaptiveTrackSelectionFactory)
.- Specified by:
createTrackSelections
in interfaceExoTrackSelection.Factory
- Parameters:
definitions
- AExoTrackSelection.Definition
array. May include null values.bandwidthMeter
- ABandwidthMeter
which can be used to select tracks.mediaPeriodId
- TheMediaSource.MediaPeriodId
of the period for which tracks are to be selected.timeline
- TheTimeline
holding the period for which tracks are to be selected.- Returns:
- The created selections. Must have the same length as
definitions
and may include null values.
-
createAdaptiveTrackSelection
protected AdaptiveTrackSelection createAdaptiveTrackSelection(TrackGroup group, int[] tracks, int type, BandwidthMeter bandwidthMeter, ImmutableList<AdaptiveTrackSelection.AdaptationCheckpoint> adaptationCheckpoints)
Creates a single adaptive selection for the given group, bandwidth meter and tracks.- Parameters:
group
- TheTrackGroup
.tracks
- The indices of the selected tracks in the track group.type
- The type that will be returned fromTrackSelection.getType()
.bandwidthMeter
- ABandwidthMeter
which can be used to select tracks.adaptationCheckpoints
- Thecheckpoints
that can be used to calculate available bandwidth for this selection.- Returns:
- An
AdaptiveTrackSelection
for the specified tracks.
-
-