Commit 679b6283 by tonihei Committed by Toni

Add experimental option for multiple parallel adaptive track selections.

If enabled, DefaultTrackSelector returns multiple groups with more than one
track. AdaptiveTrackSelection then decides on the order in which the tracks
are changed such that the BandwidthProvider for each selection can figure out
the allocated bandwidth.

PiperOrigin-RevId: 240150206
parent 32347362
......@@ -1283,6 +1283,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
private final TrackSelection.Factory trackSelectionFactory;
private final AtomicReference<Parameters> parametersReference;
private boolean allowMultipleAdaptiveSelections;
public DefaultTrackSelector() {
this(new AdaptiveTrackSelection.Factory());
}
......@@ -1397,6 +1399,15 @@ public class DefaultTrackSelector extends MappingTrackSelector {
setParameters(buildUponParameters().setTunnelingAudioSessionId(tunnelingAudioSessionId));
}
/**
* Allows the creation of multiple adaptive track selections.
*
* <p>This method is experimental, and will be renamed or removed in a future release.
*/
public void experimental_allowMultipleAdaptiveSelections() {
this.allowMultipleAdaptiveSelections = true;
}
// MappingTrackSelector implementation.
@Override
......@@ -1514,13 +1525,15 @@ public class DefaultTrackSelector extends MappingTrackSelector {
int selectedAudioRendererIndex = C.INDEX_UNSET;
for (int i = 0; i < rendererCount; i++) {
if (C.TRACK_TYPE_AUDIO == mappedTrackInfo.getRendererType(i)) {
boolean enableAdaptiveTrackSelection =
allowMultipleAdaptiveSelections || !seenVideoRendererWithMappedTracks;
Pair<TrackSelection.Definition, AudioTrackScore> audioSelection =
selectAudioTrack(
mappedTrackInfo.getTrackGroups(i),
rendererFormatSupports[i],
rendererMixedMimeTypeAdaptationSupports[i],
params,
!seenVideoRendererWithMappedTracks);
enableAdaptiveTrackSelection);
if (audioSelection != null
&& (selectedAudioTrackScore == null
|| audioSelection.second.compareTo(selectedAudioTrackScore) > 0)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment