Merge pull request #6696 from phhusson:fix/nullable-selection-override
PiperOrigin-RevId: 283347700
This commit is contained in:
parent
b296b8d807
commit
ab1d54d0ac
@ -184,7 +184,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||||||
private boolean exceedRendererCapabilitiesIfNecessary;
|
private boolean exceedRendererCapabilitiesIfNecessary;
|
||||||
private int tunnelingAudioSessionId;
|
private int tunnelingAudioSessionId;
|
||||||
|
|
||||||
private final SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides;
|
private final SparseArray<Map<TrackGroupArray, @NullableType SelectionOverride>>
|
||||||
|
selectionOverrides;
|
||||||
private final SparseBooleanArray rendererDisabledFlags;
|
private final SparseBooleanArray rendererDisabledFlags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -646,8 +647,9 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||||||
* @return This builder.
|
* @return This builder.
|
||||||
*/
|
*/
|
||||||
public final ParametersBuilder setSelectionOverride(
|
public final ParametersBuilder setSelectionOverride(
|
||||||
int rendererIndex, TrackGroupArray groups, SelectionOverride override) {
|
int rendererIndex, TrackGroupArray groups, @Nullable SelectionOverride override) {
|
||||||
Map<TrackGroupArray, SelectionOverride> overrides = selectionOverrides.get(rendererIndex);
|
Map<TrackGroupArray, @NullableType SelectionOverride> overrides =
|
||||||
|
selectionOverrides.get(rendererIndex);
|
||||||
if (overrides == null) {
|
if (overrides == null) {
|
||||||
overrides = new HashMap<>();
|
overrides = new HashMap<>();
|
||||||
selectionOverrides.put(rendererIndex, overrides);
|
selectionOverrides.put(rendererIndex, overrides);
|
||||||
@ -669,7 +671,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||||||
*/
|
*/
|
||||||
public final ParametersBuilder clearSelectionOverride(
|
public final ParametersBuilder clearSelectionOverride(
|
||||||
int rendererIndex, TrackGroupArray groups) {
|
int rendererIndex, TrackGroupArray groups) {
|
||||||
Map<TrackGroupArray, SelectionOverride> overrides = selectionOverrides.get(rendererIndex);
|
Map<TrackGroupArray, @NullableType SelectionOverride> overrides =
|
||||||
|
selectionOverrides.get(rendererIndex);
|
||||||
if (overrides == null || !overrides.containsKey(groups)) {
|
if (overrides == null || !overrides.containsKey(groups)) {
|
||||||
// Nothing to clear.
|
// Nothing to clear.
|
||||||
return this;
|
return this;
|
||||||
@ -688,7 +691,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||||||
* @return This builder.
|
* @return This builder.
|
||||||
*/
|
*/
|
||||||
public final ParametersBuilder clearSelectionOverrides(int rendererIndex) {
|
public final ParametersBuilder clearSelectionOverrides(int rendererIndex) {
|
||||||
Map<TrackGroupArray, SelectionOverride> overrides = selectionOverrides.get(rendererIndex);
|
Map<TrackGroupArray, @NullableType SelectionOverride> overrides =
|
||||||
|
selectionOverrides.get(rendererIndex);
|
||||||
if (overrides == null || overrides.isEmpty()) {
|
if (overrides == null || overrides.isEmpty()) {
|
||||||
// Nothing to clear.
|
// Nothing to clear.
|
||||||
return this;
|
return this;
|
||||||
@ -775,9 +779,11 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||||||
tunnelingAudioSessionId = C.AUDIO_SESSION_ID_UNSET;
|
tunnelingAudioSessionId = C.AUDIO_SESSION_ID_UNSET;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static SparseArray<Map<TrackGroupArray, SelectionOverride>> cloneSelectionOverrides(
|
private static SparseArray<Map<TrackGroupArray, @NullableType SelectionOverride>>
|
||||||
SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides) {
|
cloneSelectionOverrides(
|
||||||
SparseArray<Map<TrackGroupArray, SelectionOverride>> clone = new SparseArray<>();
|
SparseArray<Map<TrackGroupArray, @NullableType SelectionOverride>> selectionOverrides) {
|
||||||
|
SparseArray<Map<TrackGroupArray, @NullableType SelectionOverride>> clone =
|
||||||
|
new SparseArray<>();
|
||||||
for (int i = 0; i < selectionOverrides.size(); i++) {
|
for (int i = 0; i < selectionOverrides.size(); i++) {
|
||||||
clone.put(selectionOverrides.keyAt(i), new HashMap<>(selectionOverrides.valueAt(i)));
|
clone.put(selectionOverrides.keyAt(i), new HashMap<>(selectionOverrides.valueAt(i)));
|
||||||
}
|
}
|
||||||
@ -962,7 +968,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||||||
public final int tunnelingAudioSessionId;
|
public final int tunnelingAudioSessionId;
|
||||||
|
|
||||||
// Overrides
|
// Overrides
|
||||||
private final SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides;
|
private final SparseArray<Map<TrackGroupArray, @NullableType SelectionOverride>>
|
||||||
|
selectionOverrides;
|
||||||
private final SparseBooleanArray rendererDisabledFlags;
|
private final SparseBooleanArray rendererDisabledFlags;
|
||||||
|
|
||||||
/* package */ Parameters(
|
/* package */ Parameters(
|
||||||
@ -996,7 +1003,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||||||
boolean exceedRendererCapabilitiesIfNecessary,
|
boolean exceedRendererCapabilitiesIfNecessary,
|
||||||
int tunnelingAudioSessionId,
|
int tunnelingAudioSessionId,
|
||||||
// Overrides
|
// Overrides
|
||||||
SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides,
|
SparseArray<Map<TrackGroupArray, @NullableType SelectionOverride>> selectionOverrides,
|
||||||
SparseBooleanArray rendererDisabledFlags) {
|
SparseBooleanArray rendererDisabledFlags) {
|
||||||
super(
|
super(
|
||||||
preferredAudioLanguage,
|
preferredAudioLanguage,
|
||||||
@ -1087,7 +1094,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||||||
* @return Whether there is an override.
|
* @return Whether there is an override.
|
||||||
*/
|
*/
|
||||||
public final boolean hasSelectionOverride(int rendererIndex, TrackGroupArray groups) {
|
public final boolean hasSelectionOverride(int rendererIndex, TrackGroupArray groups) {
|
||||||
Map<TrackGroupArray, SelectionOverride> overrides = selectionOverrides.get(rendererIndex);
|
Map<TrackGroupArray, @NullableType SelectionOverride> overrides =
|
||||||
|
selectionOverrides.get(rendererIndex);
|
||||||
return overrides != null && overrides.containsKey(groups);
|
return overrides != null && overrides.containsKey(groups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1100,7 +1108,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public final SelectionOverride getSelectionOverride(int rendererIndex, TrackGroupArray groups) {
|
public final SelectionOverride getSelectionOverride(int rendererIndex, TrackGroupArray groups) {
|
||||||
Map<TrackGroupArray, SelectionOverride> overrides = selectionOverrides.get(rendererIndex);
|
Map<TrackGroupArray, @NullableType SelectionOverride> overrides =
|
||||||
|
selectionOverrides.get(rendererIndex);
|
||||||
return overrides != null ? overrides.get(groups) : null;
|
return overrides != null ? overrides.get(groups) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1233,17 +1242,20 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||||||
|
|
||||||
// Static utility methods.
|
// Static utility methods.
|
||||||
|
|
||||||
private static SparseArray<Map<TrackGroupArray, SelectionOverride>> readSelectionOverrides(
|
private static SparseArray<Map<TrackGroupArray, @NullableType SelectionOverride>>
|
||||||
Parcel in) {
|
readSelectionOverrides(Parcel in) {
|
||||||
int renderersWithOverridesCount = in.readInt();
|
int renderersWithOverridesCount = in.readInt();
|
||||||
SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides =
|
SparseArray<Map<TrackGroupArray, @NullableType SelectionOverride>> selectionOverrides =
|
||||||
new SparseArray<>(renderersWithOverridesCount);
|
new SparseArray<>(renderersWithOverridesCount);
|
||||||
for (int i = 0; i < renderersWithOverridesCount; i++) {
|
for (int i = 0; i < renderersWithOverridesCount; i++) {
|
||||||
int rendererIndex = in.readInt();
|
int rendererIndex = in.readInt();
|
||||||
int overrideCount = in.readInt();
|
int overrideCount = in.readInt();
|
||||||
Map<TrackGroupArray, SelectionOverride> overrides = new HashMap<>(overrideCount);
|
Map<TrackGroupArray, @NullableType SelectionOverride> overrides =
|
||||||
|
new HashMap<>(overrideCount);
|
||||||
for (int j = 0; j < overrideCount; j++) {
|
for (int j = 0; j < overrideCount; j++) {
|
||||||
TrackGroupArray trackGroups = in.readParcelable(TrackGroupArray.class.getClassLoader());
|
TrackGroupArray trackGroups =
|
||||||
|
Assertions.checkNotNull(in.readParcelable(TrackGroupArray.class.getClassLoader()));
|
||||||
|
@Nullable
|
||||||
SelectionOverride override = in.readParcelable(SelectionOverride.class.getClassLoader());
|
SelectionOverride override = in.readParcelable(SelectionOverride.class.getClassLoader());
|
||||||
overrides.put(trackGroups, override);
|
overrides.put(trackGroups, override);
|
||||||
}
|
}
|
||||||
@ -1253,16 +1265,19 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void writeSelectionOverridesToParcel(
|
private static void writeSelectionOverridesToParcel(
|
||||||
Parcel dest, SparseArray<Map<TrackGroupArray, SelectionOverride>> selectionOverrides) {
|
Parcel dest,
|
||||||
|
SparseArray<Map<TrackGroupArray, @NullableType SelectionOverride>> selectionOverrides) {
|
||||||
int renderersWithOverridesCount = selectionOverrides.size();
|
int renderersWithOverridesCount = selectionOverrides.size();
|
||||||
dest.writeInt(renderersWithOverridesCount);
|
dest.writeInt(renderersWithOverridesCount);
|
||||||
for (int i = 0; i < renderersWithOverridesCount; i++) {
|
for (int i = 0; i < renderersWithOverridesCount; i++) {
|
||||||
int rendererIndex = selectionOverrides.keyAt(i);
|
int rendererIndex = selectionOverrides.keyAt(i);
|
||||||
Map<TrackGroupArray, SelectionOverride> overrides = selectionOverrides.valueAt(i);
|
Map<TrackGroupArray, @NullableType SelectionOverride> overrides =
|
||||||
|
selectionOverrides.valueAt(i);
|
||||||
int overrideCount = overrides.size();
|
int overrideCount = overrides.size();
|
||||||
dest.writeInt(rendererIndex);
|
dest.writeInt(rendererIndex);
|
||||||
dest.writeInt(overrideCount);
|
dest.writeInt(overrideCount);
|
||||||
for (Map.Entry<TrackGroupArray, SelectionOverride> override : overrides.entrySet()) {
|
for (Map.Entry<TrackGroupArray, @NullableType SelectionOverride> override :
|
||||||
|
overrides.entrySet()) {
|
||||||
dest.writeParcelable(override.getKey(), /* parcelableFlags= */ 0);
|
dest.writeParcelable(override.getKey(), /* parcelableFlags= */ 0);
|
||||||
dest.writeParcelable(override.getValue(), /* parcelableFlags= */ 0);
|
dest.writeParcelable(override.getValue(), /* parcelableFlags= */ 0);
|
||||||
}
|
}
|
||||||
@ -1285,8 +1300,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static boolean areSelectionOverridesEqual(
|
private static boolean areSelectionOverridesEqual(
|
||||||
SparseArray<Map<TrackGroupArray, SelectionOverride>> first,
|
SparseArray<Map<TrackGroupArray, @NullableType SelectionOverride>> first,
|
||||||
SparseArray<Map<TrackGroupArray, SelectionOverride>> second) {
|
SparseArray<Map<TrackGroupArray, @NullableType SelectionOverride>> second) {
|
||||||
int firstSize = first.size();
|
int firstSize = first.size();
|
||||||
if (second.size() != firstSize) {
|
if (second.size() != firstSize) {
|
||||||
return false;
|
return false;
|
||||||
@ -1303,13 +1318,14 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static boolean areSelectionOverridesEqual(
|
private static boolean areSelectionOverridesEqual(
|
||||||
Map<TrackGroupArray, SelectionOverride> first,
|
Map<TrackGroupArray, @NullableType SelectionOverride> first,
|
||||||
Map<TrackGroupArray, SelectionOverride> second) {
|
Map<TrackGroupArray, @NullableType SelectionOverride> second) {
|
||||||
int firstSize = first.size();
|
int firstSize = first.size();
|
||||||
if (second.size() != firstSize) {
|
if (second.size() != firstSize) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
for (Map.Entry<TrackGroupArray, SelectionOverride> firstEntry : first.entrySet()) {
|
for (Map.Entry<TrackGroupArray, @NullableType SelectionOverride> firstEntry :
|
||||||
|
first.entrySet()) {
|
||||||
TrackGroupArray key = firstEntry.getKey();
|
TrackGroupArray key = firstEntry.getKey();
|
||||||
if (!second.containsKey(key) || !Util.areEqual(firstEntry.getValue(), second.get(key))) {
|
if (!second.containsKey(key) || !Util.areEqual(firstEntry.getValue(), second.get(key))) {
|
||||||
return false;
|
return false;
|
||||||
@ -1536,7 +1552,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public final void setSelectionOverride(
|
public final void setSelectionOverride(
|
||||||
int rendererIndex, TrackGroupArray groups, SelectionOverride override) {
|
int rendererIndex, TrackGroupArray groups, @Nullable SelectionOverride override) {
|
||||||
setParameters(buildUponParameters().setSelectionOverride(rendererIndex, groups, override));
|
setParameters(buildUponParameters().setSelectionOverride(rendererIndex, groups, override));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user