Extract TrackSelection override & disabling in a method

This avoid break and continue after affecting the definition
array.

PiperOrigin-RevId: 400671927
This commit is contained in:
krocard 2021-10-04 10:58:23 +01:00 committed by bachinger
parent 168d0cc9a6
commit 68b17d3391

View File

@ -1498,34 +1498,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
// Apply track disabling and overriding. // Apply track disabling and overriding.
for (int i = 0; i < rendererCount; i++) { for (int i = 0; i < rendererCount; i++) {
// Per renderer and per track type disabling definitions[i] = maybeApplyOverride(mappedTrackInfo, params, i, definitions[i]);
@C.TrackType int rendererType = mappedTrackInfo.getRendererType(i);
if (params.getRendererDisabled(i) || params.disabledTrackTypes.contains(rendererType)) {
definitions[i] = null;
continue;
}
// Per TrackGroupArray override
TrackGroupArray rendererTrackGroups = mappedTrackInfo.getTrackGroups(i);
if (params.hasSelectionOverride(i, rendererTrackGroups)) {
@Nullable SelectionOverride override = params.getSelectionOverride(i, rendererTrackGroups);
definitions[i] =
override == null
? null
: new ExoTrackSelection.Definition(
rendererTrackGroups.get(override.groupIndex), override.tracks, override.type);
continue;
}
// Per TrackGroup override
for (int j = 0; j < rendererTrackGroups.length; j++) {
TrackGroup trackGroup = rendererTrackGroups.get(j);
@Nullable
TrackSelectionOverride overrideTracks = params.trackSelectionOverrides.get(trackGroup);
if (overrideTracks != null) {
definitions[i] =
new ExoTrackSelection.Definition(trackGroup, Ints.toArray(overrideTracks.tracks));
break;
}
}
} }
@NullableType @NullableType
@ -1557,6 +1530,44 @@ public class DefaultTrackSelector extends MappingTrackSelector {
return Pair.create(rendererConfigurations, rendererTrackSelections); return Pair.create(rendererConfigurations, rendererTrackSelections);
} }
/**
* Returns the {@link ExoTrackSelection.Definition} of a renderer after applying selection
* overriding and renderer disabling.
*/
protected ExoTrackSelection.@NullableType Definition maybeApplyOverride(
MappedTrackInfo mappedTrackInfo,
Parameters params,
int rendererIndex,
ExoTrackSelection.@NullableType Definition currentDefinition) {
// Per renderer and per track type disabling
@C.TrackType int rendererType = mappedTrackInfo.getRendererType(rendererIndex);
if (params.getRendererDisabled(rendererIndex)
|| params.disabledTrackTypes.contains(rendererType)) {
return null;
}
// Per TrackGroupArray override
TrackGroupArray rendererTrackGroups = mappedTrackInfo.getTrackGroups(rendererIndex);
if (params.hasSelectionOverride(rendererIndex, rendererTrackGroups)) {
@Nullable
SelectionOverride override = params.getSelectionOverride(rendererIndex, rendererTrackGroups);
if (override == null) {
return null;
}
return new ExoTrackSelection.Definition(
rendererTrackGroups.get(override.groupIndex), override.tracks, override.type);
}
// Per TrackGroup override
for (int j = 0; j < rendererTrackGroups.length; j++) {
TrackGroup trackGroup = rendererTrackGroups.get(j);
@Nullable
TrackSelectionOverride overrideTracks = params.trackSelectionOverrides.get(trackGroup);
if (overrideTracks != null) {
return new ExoTrackSelection.Definition(trackGroup, Ints.toArray(overrideTracks.tracks));
}
}
return currentDefinition; // No override
}
// Track selection prior to overrides and disabled flags being applied. // Track selection prior to overrides and disabled flags being applied.
/** /**