From d9f0c2c07162910ad75486442f2c63241e15e56b Mon Sep 17 00:00:00 2001 From: olly Date: Thu, 14 Apr 2022 11:10:05 +0100 Subject: [PATCH] Tracks.Group/TrackGroup variable naming disambiguation PiperOrigin-RevId: 441712166 --- .../androidx/media3/common/TrackGroup.java | 8 +++-- .../media3/common/TrackSelectionOverride.java | 30 ++++++++--------- .../common/TrackSelectionParameters.java | 12 +++---- .../java/androidx/media3/common/Tracks.java | 33 +++++++++++-------- .../common/TrackSelectionOverrideTest.java | 6 ++-- .../common/TrackSelectionParametersTest.java | 23 ++++++++----- .../trackselection/DefaultTrackSelector.java | 4 +-- .../DefaultTrackSelectorTest.java | 2 +- .../TrackSelectionUtilTest.java | 12 +++---- .../androidx/media3/ui/PlayerControlView.java | 9 ++--- .../ui/TrackSelectionDialogBuilder.java | 4 ++- .../media3/ui/TrackSelectionView.java | 23 +++++++------ 12 files changed, 95 insertions(+), 71 deletions(-) diff --git a/libraries/common/src/main/java/androidx/media3/common/TrackGroup.java b/libraries/common/src/main/java/androidx/media3/common/TrackGroup.java index ecca4c3151..139a0ab0bb 100644 --- a/libraries/common/src/main/java/androidx/media3/common/TrackGroup.java +++ b/libraries/common/src/main/java/androidx/media3/common/TrackGroup.java @@ -35,8 +35,8 @@ import java.util.Arrays; import java.util.List; /** - * An immutable group of tracks. All tracks in a group present the same content, but their formats - * may differ. + * An immutable group of tracks available within a media stream. All tracks in a group present the + * same content, but their formats may differ. * *

As an example of how tracks can be grouped, consider an adaptive playback where a main video * feed is provided in five resolutions, and an alternative video feed (e.g., a different camera @@ -48,6 +48,10 @@ import java.util.List; * languages is not considered to be the same. Conversely, audio tracks in the same language that * only differ in properties such as bitrate, sampling rate, channel count and so on can be grouped. * This also applies to text tracks. + * + *

Note also that this class only contains information derived from the media itself. Unlike + * {@link Tracks.Group}, it does not include runtime information such as the extent to which + * playback of each track is supported by the device, or which tracks are currently selected. */ public final class TrackGroup implements Bundleable { diff --git a/libraries/common/src/main/java/androidx/media3/common/TrackSelectionOverride.java b/libraries/common/src/main/java/androidx/media3/common/TrackSelectionOverride.java index a7ea841dd1..a673e95bd8 100644 --- a/libraries/common/src/main/java/androidx/media3/common/TrackSelectionOverride.java +++ b/libraries/common/src/main/java/androidx/media3/common/TrackSelectionOverride.java @@ -49,8 +49,8 @@ import java.util.List; */ public final class TrackSelectionOverride implements Bundleable { - /** The {@link TrackGroup} whose {@link #trackIndices} are forced to be selected. */ - public final TrackGroup trackGroup; + /** The media {@link TrackGroup} whose {@link #trackIndices} are forced to be selected. */ + public final TrackGroup mediaTrackGroup; /** The indices of tracks in a {@link TrackGroup} to be selected. */ public final ImmutableList trackIndices; @@ -68,32 +68,32 @@ public final class TrackSelectionOverride implements Bundleable { /** * Constructs an instance to force {@code trackIndex} in {@code trackGroup} to be selected. * - * @param trackGroup The {@link TrackGroup} for which to override the track selection. + * @param mediaTrackGroup The media {@link TrackGroup} for which to override the track selection. * @param trackIndex The index of the track in the {@link TrackGroup} to select. */ - public TrackSelectionOverride(TrackGroup trackGroup, int trackIndex) { - this(trackGroup, ImmutableList.of(trackIndex)); + public TrackSelectionOverride(TrackGroup mediaTrackGroup, int trackIndex) { + this(mediaTrackGroup, ImmutableList.of(trackIndex)); } /** * Constructs an instance to force {@code trackIndices} in {@code trackGroup} to be selected. * - * @param trackGroup The {@link TrackGroup} for which to override the track selection. + * @param mediaTrackGroup The media {@link TrackGroup} for which to override the track selection. * @param trackIndices The indices of the tracks in the {@link TrackGroup} to select. */ - public TrackSelectionOverride(TrackGroup trackGroup, List trackIndices) { + public TrackSelectionOverride(TrackGroup mediaTrackGroup, List trackIndices) { if (!trackIndices.isEmpty()) { - if (min(trackIndices) < 0 || max(trackIndices) >= trackGroup.length) { + if (min(trackIndices) < 0 || max(trackIndices) >= mediaTrackGroup.length) { throw new IndexOutOfBoundsException(); } } - this.trackGroup = trackGroup; + this.mediaTrackGroup = mediaTrackGroup; this.trackIndices = ImmutableList.copyOf(trackIndices); } /** Returns the {@link C.TrackType} of the overridden track group. */ public @C.TrackType int getType() { - return trackGroup.type; + return mediaTrackGroup.type; } @Override @@ -105,12 +105,12 @@ public final class TrackSelectionOverride implements Bundleable { return false; } TrackSelectionOverride that = (TrackSelectionOverride) obj; - return trackGroup.equals(that.trackGroup) && trackIndices.equals(that.trackIndices); + return mediaTrackGroup.equals(that.mediaTrackGroup) && trackIndices.equals(that.trackIndices); } @Override public int hashCode() { - return trackGroup.hashCode() + 31 * trackIndices.hashCode(); + return mediaTrackGroup.hashCode() + 31 * trackIndices.hashCode(); } // Bundleable implementation @@ -119,7 +119,7 @@ public final class TrackSelectionOverride implements Bundleable { @Override public Bundle toBundle() { Bundle bundle = new Bundle(); - bundle.putBundle(keyForField(FIELD_TRACK_GROUP), trackGroup.toBundle()); + bundle.putBundle(keyForField(FIELD_TRACK_GROUP), mediaTrackGroup.toBundle()); bundle.putIntArray(keyForField(FIELD_TRACKS), Ints.toArray(trackIndices)); return bundle; } @@ -129,9 +129,9 @@ public final class TrackSelectionOverride implements Bundleable { public static final Creator CREATOR = bundle -> { Bundle trackGroupBundle = checkNotNull(bundle.getBundle(keyForField(FIELD_TRACK_GROUP))); - TrackGroup trackGroup = TrackGroup.CREATOR.fromBundle(trackGroupBundle); + TrackGroup mediaTrackGroup = TrackGroup.CREATOR.fromBundle(trackGroupBundle); int[] tracks = checkNotNull(bundle.getIntArray(keyForField(FIELD_TRACKS))); - return new TrackSelectionOverride(trackGroup, Ints.asList(tracks)); + return new TrackSelectionOverride(mediaTrackGroup, Ints.asList(tracks)); }; private static String keyForField(@FieldNumber int field) { diff --git a/libraries/common/src/main/java/androidx/media3/common/TrackSelectionParameters.java b/libraries/common/src/main/java/androidx/media3/common/TrackSelectionParameters.java index 6d2e144c9f..18ce1c6ba9 100644 --- a/libraries/common/src/main/java/androidx/media3/common/TrackSelectionParameters.java +++ b/libraries/common/src/main/java/androidx/media3/common/TrackSelectionParameters.java @@ -255,7 +255,7 @@ public class TrackSelectionParameters implements Bundleable { overrides = new HashMap<>(); for (int i = 0; i < overrideList.size(); i++) { TrackSelectionOverride override = overrideList.get(i); - overrides.put(override.trackGroup, override); + overrides.put(override.mediaTrackGroup, override); } int[] disabledTrackTypeArray = firstNonNull(bundle.getIntArray(keyForField(FIELD_DISABLED_TRACK_TYPE)), new int[0]); @@ -678,20 +678,20 @@ public class TrackSelectionParameters implements Bundleable { /** Adds an override, replacing any override for the same {@link TrackGroup}. */ public Builder addOverride(TrackSelectionOverride override) { - overrides.put(override.trackGroup, override); + overrides.put(override.mediaTrackGroup, override); return this; } /** Sets an override, replacing all existing overrides with the same track type. */ public Builder setOverrideForType(TrackSelectionOverride override) { clearOverridesOfType(override.getType()); - overrides.put(override.trackGroup, override); + overrides.put(override.mediaTrackGroup, override); return this; } - /** Removes the override for the provided {@link TrackGroup}, if there is one. */ - public Builder clearOverride(TrackGroup trackGroup) { - overrides.remove(trackGroup); + /** Removes the override for the provided media {@link TrackGroup}, if there is one. */ + public Builder clearOverride(TrackGroup mediaTrackGroup) { + overrides.remove(mediaTrackGroup); return this; } diff --git a/libraries/common/src/main/java/androidx/media3/common/Tracks.java b/libraries/common/src/main/java/androidx/media3/common/Tracks.java index 544c9f01e1..6e12538c4e 100644 --- a/libraries/common/src/main/java/androidx/media3/common/Tracks.java +++ b/libraries/common/src/main/java/androidx/media3/common/Tracks.java @@ -49,7 +49,7 @@ public final class Tracks implements Bundleable { /** The number of tracks in the group. */ public final int length; - private final TrackGroup trackGroup; + private final TrackGroup mediaTrackGroup; private final boolean adaptiveSupported; private final @C.FormatSupport int[] trackSupport; private final boolean[] trackSelected; @@ -57,7 +57,7 @@ public final class Tracks implements Bundleable { /** * Constructs an instance. * - * @param trackGroup The underlying {@link TrackGroup}. + * @param mediaTrackGroup The underlying {@link TrackGroup} defined by the media. * @param adaptiveSupported Whether the player supports adaptive selections containing more than * one track in the group. * @param trackSupport The {@link C.FormatSupport} of each track in the group. @@ -65,21 +65,28 @@ public final class Tracks implements Bundleable { */ @UnstableApi public Group( - TrackGroup trackGroup, + TrackGroup mediaTrackGroup, boolean adaptiveSupported, @C.FormatSupport int[] trackSupport, boolean[] trackSelected) { - length = trackGroup.length; + length = mediaTrackGroup.length; checkArgument(length == trackSupport.length && length == trackSelected.length); - this.trackGroup = trackGroup; + this.mediaTrackGroup = mediaTrackGroup; this.adaptiveSupported = adaptiveSupported && length > 1; this.trackSupport = trackSupport.clone(); this.trackSelected = trackSelected.clone(); } - /** Returns the underlying {@link TrackGroup}. */ - public TrackGroup getTrackGroup() { - return trackGroup; + /** + * Returns the underlying {@link TrackGroup} defined by the media. + * + *

Unlike this class, {@link TrackGroup} only contains information defined by the media + * itself, and does not contain runtime information such as which tracks are supported and + * currently selected. This makes it suitable for use as a {@code key} in certain {@code (key, + * value)} data structures. + */ + public TrackGroup getMediaTrackGroup() { + return mediaTrackGroup; } /** @@ -89,7 +96,7 @@ public final class Tracks implements Bundleable { * @return The {@link Format} of the track. */ public Format getTrackFormat(int trackIndex) { - return trackGroup.getFormat(trackIndex); + return mediaTrackGroup.getFormat(trackIndex); } /** @@ -187,7 +194,7 @@ public final class Tracks implements Bundleable { /** Returns the {@link C.TrackType} of the group. */ public @C.TrackType int getType() { - return trackGroup.type; + return mediaTrackGroup.type; } @Override @@ -200,14 +207,14 @@ public final class Tracks implements Bundleable { } Group that = (Group) other; return adaptiveSupported == that.adaptiveSupported - && trackGroup.equals(that.trackGroup) + && mediaTrackGroup.equals(that.mediaTrackGroup) && Arrays.equals(trackSupport, that.trackSupport) && Arrays.equals(trackSelected, that.trackSelected); } @Override public int hashCode() { - int result = trackGroup.hashCode(); + int result = mediaTrackGroup.hashCode(); result = 31 * result + (adaptiveSupported ? 1 : 0); result = 31 * result + Arrays.hashCode(trackSupport); result = 31 * result + Arrays.hashCode(trackSelected); @@ -234,7 +241,7 @@ public final class Tracks implements Bundleable { @Override public Bundle toBundle() { Bundle bundle = new Bundle(); - bundle.putBundle(keyForField(FIELD_TRACK_GROUP), trackGroup.toBundle()); + bundle.putBundle(keyForField(FIELD_TRACK_GROUP), mediaTrackGroup.toBundle()); bundle.putIntArray(keyForField(FIELD_TRACK_SUPPORT), trackSupport); bundle.putBooleanArray(keyForField(FIELD_TRACK_SELECTED), trackSelected); bundle.putBoolean(keyForField(FIELD_ADAPTIVE_SUPPORTED), adaptiveSupported); diff --git a/libraries/common/src/test/java/androidx/media3/common/TrackSelectionOverrideTest.java b/libraries/common/src/test/java/androidx/media3/common/TrackSelectionOverrideTest.java index a65ff4572f..f3be086110 100644 --- a/libraries/common/src/test/java/androidx/media3/common/TrackSelectionOverrideTest.java +++ b/libraries/common/src/test/java/androidx/media3/common/TrackSelectionOverrideTest.java @@ -33,7 +33,7 @@ public final class TrackSelectionOverrideTest { TrackSelectionOverride trackSelectionOverride = new TrackSelectionOverride(newTrackGroupWithIds(1, 2), /* trackIndex= */ 1); - assertThat(trackSelectionOverride.trackGroup).isEqualTo(newTrackGroupWithIds(1, 2)); + assertThat(trackSelectionOverride.mediaTrackGroup).isEqualTo(newTrackGroupWithIds(1, 2)); assertThat(trackSelectionOverride.trackIndices).containsExactly(1).inOrder(); } @@ -42,7 +42,7 @@ public final class TrackSelectionOverrideTest { TrackSelectionOverride trackSelectionOverride = new TrackSelectionOverride(newTrackGroupWithIds(1, 2), ImmutableList.of(1)); - assertThat(trackSelectionOverride.trackGroup).isEqualTo(newTrackGroupWithIds(1, 2)); + assertThat(trackSelectionOverride.mediaTrackGroup).isEqualTo(newTrackGroupWithIds(1, 2)); assertThat(trackSelectionOverride.trackIndices).containsExactly(1); } @@ -51,7 +51,7 @@ public final class TrackSelectionOverrideTest { TrackSelectionOverride trackSelectionOverride = new TrackSelectionOverride(newTrackGroupWithIds(1, 2), ImmutableList.of()); - assertThat(trackSelectionOverride.trackGroup).isEqualTo(newTrackGroupWithIds(1, 2)); + assertThat(trackSelectionOverride.mediaTrackGroup).isEqualTo(newTrackGroupWithIds(1, 2)); assertThat(trackSelectionOverride.trackIndices).isEmpty(); } diff --git a/libraries/common/src/test/java/androidx/media3/common/TrackSelectionParametersTest.java b/libraries/common/src/test/java/androidx/media3/common/TrackSelectionParametersTest.java index 5b04a0f115..c8c16475ee 100644 --- a/libraries/common/src/test/java/androidx/media3/common/TrackSelectionParametersTest.java +++ b/libraries/common/src/test/java/androidx/media3/common/TrackSelectionParametersTest.java @@ -149,7 +149,8 @@ public final class TrackSelectionParametersTest { assertThat(parameters.forceLowestBitrate).isFalse(); assertThat(parameters.forceHighestSupportedBitrate).isTrue(); assertThat(parameters.overrides) - .containsExactly(override1.trackGroup, override1, override2.trackGroup, override2); + .containsExactly( + override1.mediaTrackGroup, override1, override2.mediaTrackGroup, override2); assertThat(parameters.disabledTrackTypes) .containsExactly(C.TRACK_TYPE_AUDIO, C.TRACK_TYPE_TEXT); } @@ -203,7 +204,8 @@ public final class TrackSelectionParametersTest { TrackSelectionParameters.CREATOR.fromBundle(trackSelectionParameters.toBundle()); assertThat(fromBundle).isEqualTo(trackSelectionParameters); - assertThat(trackSelectionParameters.overrides).containsExactly(override.trackGroup, override); + assertThat(trackSelectionParameters.overrides) + .containsExactly(override.mediaTrackGroup, override); } @Test @@ -220,7 +222,8 @@ public final class TrackSelectionParametersTest { .build(); assertThat(trackSelectionParameters.overrides) - .containsExactly(override1.trackGroup, override1, override2.trackGroup, override2); + .containsExactly( + override1.mediaTrackGroup, override1, override2.mediaTrackGroup, override2); } @Test @@ -237,7 +240,8 @@ public final class TrackSelectionParametersTest { .addOverride(override2) .build(); - assertThat(trackSelectionParameters.overrides).containsExactly(override2.trackGroup, override2); + assertThat(trackSelectionParameters.overrides) + .containsExactly(override2.mediaTrackGroup, override2); } @Test @@ -253,7 +257,8 @@ public final class TrackSelectionParametersTest { .setOverrideForType(override2) .build(); - assertThat(trackSelectionParameters.overrides).containsExactly(override2.trackGroup, override2); + assertThat(trackSelectionParameters.overrides) + .containsExactly(override2.mediaTrackGroup, override2); } @Test @@ -269,7 +274,8 @@ public final class TrackSelectionParametersTest { .clearOverridesOfType(C.TRACK_TYPE_AUDIO) .build(); - assertThat(trackSelectionParameters.overrides).containsExactly(override2.trackGroup, override2); + assertThat(trackSelectionParameters.overrides) + .containsExactly(override2.mediaTrackGroup, override2); } @Test @@ -282,10 +288,11 @@ public final class TrackSelectionParametersTest { new TrackSelectionParameters.Builder(getApplicationContext()) .addOverride(override1) .addOverride(override2) - .clearOverride(override2.trackGroup) + .clearOverride(override2.mediaTrackGroup) .build(); - assertThat(trackSelectionParameters.overrides).containsExactly(override1.trackGroup, override1); + assertThat(trackSelectionParameters.overrides) + .containsExactly(override1.mediaTrackGroup, override1); } private static TrackGroup newTrackGroupWithIds(int... ids) { diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java index 556ea9c929..a718b5aafa 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java @@ -1934,11 +1934,11 @@ public class DefaultTrackSelector extends MappingTrackSelector { // want the renderer to be enabled at all, so clear any existing selection. @Nullable ExoTrackSelection.Definition selection; if (!overrideForType.trackIndices.isEmpty() - && mappedTrackInfo.getTrackGroups(rendererIndex).indexOf(overrideForType.trackGroup) + && mappedTrackInfo.getTrackGroups(rendererIndex).indexOf(overrideForType.mediaTrackGroup) != -1) { selection = new ExoTrackSelection.Definition( - overrideForType.trackGroup, Ints.toArray(overrideForType.trackIndices)); + overrideForType.mediaTrackGroup, Ints.toArray(overrideForType.trackIndices)); } else { selection = null; } diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelectorTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelectorTest.java index c04de486f5..0e1764a829 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelectorTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelectorTest.java @@ -2240,7 +2240,7 @@ public final class DefaultTrackSelectorTest { assertThat(result.selections[2]).isNull(); ImmutableList trackGroups = result.tracks.getGroups(); assertThat(trackGroups).hasSize(1); - assertThat(trackGroups.get(0).getTrackGroup()).isEqualTo(AUDIO_TRACK_GROUP); + assertThat(trackGroups.get(0).getMediaTrackGroup()).isEqualTo(AUDIO_TRACK_GROUP); assertThat(trackGroups.get(0).isTrackSelected(0)).isTrue(); assertThat(trackGroups.get(0).getTrackSupport(0)).isEqualTo(FORMAT_HANDLED); } diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/TrackSelectionUtilTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/TrackSelectionUtilTest.java index 47d151469c..d8befc1eae 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/TrackSelectionUtilTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/TrackSelectionUtilTest.java @@ -76,13 +76,13 @@ public class TrackSelectionUtilTest { ImmutableList trackGroups = tracks.getGroups(); assertThat(trackGroups).hasSize(4); - assertThat(trackGroups.get(0).getTrackGroup()) + assertThat(trackGroups.get(0).getMediaTrackGroup()) .isEqualTo(mappedTrackInfo.getTrackGroups(0).get(0)); - assertThat(trackGroups.get(1).getTrackGroup()) + assertThat(trackGroups.get(1).getMediaTrackGroup()) .isEqualTo(mappedTrackInfo.getTrackGroups(0).get(1)); - assertThat(trackGroups.get(2).getTrackGroup()) + assertThat(trackGroups.get(2).getMediaTrackGroup()) .isEqualTo(mappedTrackInfo.getTrackGroups(1).get(0)); - assertThat(trackGroups.get(3).getTrackGroup()) + assertThat(trackGroups.get(3).getMediaTrackGroup()) .isEqualTo(mappedTrackInfo.getUnmappedTrackGroups().get(0)); assertThat(trackGroups.get(0).getTrackSupport(0)).isEqualTo(FORMAT_HANDLED); assertThat(trackGroups.get(1).getTrackSupport(0)).isEqualTo(FORMAT_UNSUPPORTED_SUBTYPE); @@ -135,9 +135,9 @@ public class TrackSelectionUtilTest { ImmutableList trackGroups = tracks.getGroups(); assertThat(trackGroups).hasSize(2); - assertThat(trackGroups.get(0).getTrackGroup()) + assertThat(trackGroups.get(0).getMediaTrackGroup()) .isEqualTo(mappedTrackInfo.getTrackGroups(0).get(0)); - assertThat(trackGroups.get(1).getTrackGroup()) + assertThat(trackGroups.get(1).getMediaTrackGroup()) .isEqualTo(mappedTrackInfo.getTrackGroups(0).get(1)); assertThat(trackGroups.get(0).getTrackSupport(0)).isEqualTo(FORMAT_HANDLED); assertThat(trackGroups.get(1).getTrackSupport(0)).isEqualTo(FORMAT_HANDLED); diff --git a/libraries/ui/src/main/java/androidx/media3/ui/PlayerControlView.java b/libraries/ui/src/main/java/androidx/media3/ui/PlayerControlView.java index 11983f41dc..e24ca1fcd6 100644 --- a/libraries/ui/src/main/java/androidx/media3/ui/PlayerControlView.java +++ b/libraries/ui/src/main/java/androidx/media3/ui/PlayerControlView.java @@ -1920,7 +1920,7 @@ public class PlayerControlView extends FrameLayout { private boolean hasSelectionOverride(TrackSelectionParameters trackSelectionParameters) { for (int i = 0; i < tracks.size(); i++) { - TrackGroup trackGroup = tracks.get(i).trackGroup.getTrackGroup(); + TrackGroup trackGroup = tracks.get(i).trackGroup.getMediaTrackGroup(); if (trackSelectionParameters.overrides.containsKey(trackGroup)) { return true; } @@ -1994,9 +1994,10 @@ public class PlayerControlView extends FrameLayout { onBindViewHolderAtZeroPosition(holder); } else { TrackInformation track = tracks.get(position - 1); - TrackGroup trackGroup = track.trackGroup.getTrackGroup(); + TrackGroup mediaTrackGroup = track.trackGroup.getMediaTrackGroup(); TrackSelectionParameters params = player.getTrackSelectionParameters(); - boolean explicitlySelected = params.overrides.get(trackGroup) != null && track.isSelected(); + boolean explicitlySelected = + params.overrides.get(mediaTrackGroup) != null && track.isSelected(); holder.textView.setText(track.trackName); holder.checkView.setVisibility(explicitlySelected ? VISIBLE : INVISIBLE); holder.itemView.setOnClickListener( @@ -2008,7 +2009,7 @@ public class PlayerControlView extends FrameLayout { .buildUpon() .setOverrideForType( new TrackSelectionOverride( - trackGroup, ImmutableList.of(track.trackIndex))) + mediaTrackGroup, ImmutableList.of(track.trackIndex))) .setTrackTypeDisabled(track.trackGroup.getType(), /* disabled= */ false) .build()); onTrackSelection(track.trackName); diff --git a/libraries/ui/src/main/java/androidx/media3/ui/TrackSelectionDialogBuilder.java b/libraries/ui/src/main/java/androidx/media3/ui/TrackSelectionDialogBuilder.java index 44479b54fe..11cf8424ec 100644 --- a/libraries/ui/src/main/java/androidx/media3/ui/TrackSelectionDialogBuilder.java +++ b/libraries/ui/src/main/java/androidx/media3/ui/TrackSelectionDialogBuilder.java @@ -154,7 +154,9 @@ public final class TrackSelectionDialogBuilder { */ public TrackSelectionDialogBuilder setOverride(@Nullable TrackSelectionOverride override) { return setOverrides( - override == null ? Collections.emptyMap() : ImmutableMap.of(override.trackGroup, override)); + override == null + ? Collections.emptyMap() + : ImmutableMap.of(override.mediaTrackGroup, override)); } /** diff --git a/libraries/ui/src/main/java/androidx/media3/ui/TrackSelectionView.java b/libraries/ui/src/main/java/androidx/media3/ui/TrackSelectionView.java index 4aac0670e7..12fa828726 100644 --- a/libraries/ui/src/main/java/androidx/media3/ui/TrackSelectionView.java +++ b/libraries/ui/src/main/java/androidx/media3/ui/TrackSelectionView.java @@ -72,9 +72,9 @@ public class TrackSelectionView extends LinearLayout { HashMap filteredOverrides = new HashMap<>(); for (int i = 0; i < trackGroups.size(); i++) { Tracks.Group trackGroup = trackGroups.get(i); - @Nullable TrackSelectionOverride override = overrides.get(trackGroup.getTrackGroup()); + @Nullable TrackSelectionOverride override = overrides.get(trackGroup.getMediaTrackGroup()); if (override != null && (allowMultipleOverrides || filteredOverrides.isEmpty())) { - filteredOverrides.put(override.trackGroup, override); + filteredOverrides.put(override.mediaTrackGroup, override); } } return filteredOverrides; @@ -320,7 +320,8 @@ public class TrackSelectionView extends LinearLayout { disableView.setChecked(isDisabled); defaultView.setChecked(!isDisabled && overrides.size() == 0); for (int i = 0; i < trackViews.length; i++) { - @Nullable TrackSelectionOverride override = overrides.get(trackGroups.get(i).getTrackGroup()); + @Nullable + TrackSelectionOverride override = overrides.get(trackGroups.get(i).getMediaTrackGroup()); for (int j = 0; j < trackViews[i].length; j++) { if (override != null) { TrackInfo trackInfo = (TrackInfo) Assertions.checkNotNull(trackViews[i][j].getTag()); @@ -359,9 +360,9 @@ public class TrackSelectionView extends LinearLayout { private void onTrackViewClicked(View view) { isDisabled = false; TrackInfo trackInfo = (TrackInfo) Assertions.checkNotNull(view.getTag()); - TrackGroup trackGroup = trackInfo.trackGroup.getTrackGroup(); + TrackGroup mediaTrackGroup = trackInfo.trackGroup.getMediaTrackGroup(); int trackIndex = trackInfo.trackIndex; - @Nullable TrackSelectionOverride override = overrides.get(trackGroup); + @Nullable TrackSelectionOverride override = overrides.get(mediaTrackGroup); if (override == null) { // Start new override. if (!allowMultipleOverrides && overrides.size() > 0) { @@ -369,7 +370,8 @@ public class TrackSelectionView extends LinearLayout { overrides.clear(); } overrides.put( - trackGroup, new TrackSelectionOverride(trackGroup, ImmutableList.of(trackIndex))); + mediaTrackGroup, + new TrackSelectionOverride(mediaTrackGroup, ImmutableList.of(trackIndex))); } else { // An existing override is being modified. ArrayList trackIndices = new ArrayList<>(override.trackIndices); @@ -381,19 +383,20 @@ public class TrackSelectionView extends LinearLayout { trackIndices.remove((Integer) trackIndex); if (trackIndices.isEmpty()) { // The last track has been removed, so remove the whole override. - overrides.remove(trackGroup); + overrides.remove(mediaTrackGroup); } else { - overrides.put(trackGroup, new TrackSelectionOverride(trackGroup, trackIndices)); + overrides.put(mediaTrackGroup, new TrackSelectionOverride(mediaTrackGroup, trackIndices)); } } else if (!isCurrentlySelected) { if (isAdaptiveAllowed) { // Add new track to adaptive override. trackIndices.add(trackIndex); - overrides.put(trackGroup, new TrackSelectionOverride(trackGroup, trackIndices)); + overrides.put(mediaTrackGroup, new TrackSelectionOverride(mediaTrackGroup, trackIndices)); } else { // Replace existing track in override. overrides.put( - trackGroup, new TrackSelectionOverride(trackGroup, ImmutableList.of(trackIndex))); + mediaTrackGroup, + new TrackSelectionOverride(mediaTrackGroup, ImmutableList.of(trackIndex))); } } }