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:
parent
168d0cc9a6
commit
68b17d3391
@ -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.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user