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 877123ed9e..982268dfed 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 @@ -28,7 +28,6 @@ import androidx.media3.common.Bundleable; import androidx.media3.common.C; import androidx.media3.common.C.FormatSupport; import androidx.media3.common.Format; -import androidx.media3.common.Player; import androidx.media3.common.Timeline; import androidx.media3.common.TrackGroup; import androidx.media3.common.TrackGroupArray; @@ -65,112 +64,36 @@ import java.util.concurrent.atomic.AtomicReference; import org.checkerframework.checker.nullness.compatqual.NullableType; /** - * A default {@link TrackSelector} suitable for most use cases. Track selections are made according - * to configurable {@link Parameters}, which can be set by calling {@link - * Player#setTrackSelectionParameters}. + * A default {@link TrackSelector} suitable for most use cases. * *
{@code - * // Build on the current parameters. - * TrackSelectionParameters currentParameters = player.getTrackSelectionParameters(); - * // Build the resulting parameters. - * TrackSelectionParameters newParameters = currentParameters - * .buildUpon() - * .setMaxVideoSizeSd() - * .setPreferredAudioLanguage("deu") - * .build(); - * // Set the new parameters. - * player.setTrackSelectionParameters(newParameters); - * }- * - * Convenience methods and chaining allow this to be written more concisely as: + * Track selection parameters should be modified by obtaining a {@link + * TrackSelectionParameters.Builder} initialized with the current {@link TrackSelectionParameters} + * from the player. The desired modifications can be made on the builder, and the resulting {@link + * TrackSelectionParameters} can then be built and set on the player: * *
{@code * player.setTrackSelectionParameters( * player.getTrackSelectionParameters() * .buildUpon() * .setMaxVideoSizeSd() - * .setPreferredAudioLanguage("deu") + * .setPreferredAudioLanguage("de") * .build()); + * * }* - * Selection {@link Parameters} support many different options, some of which are described below. - * - *
{@code - * MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo(); - * TrackGroupArray rendererTrackGroups = mappedTrackInfo == null ? null - * : mappedTrackInfo.getTrackGroups(rendererIndex); - * }- * - * If {@code rendererTrackGroups} is null then there aren't any currently mapped tracks, and so - * setting an override isn't possible. Note that a {@link Player.Listener} registered on the player - * can be used to determine when the current tracks (and therefore the mapping) changes. If {@code - * rendererTrackGroups} is non-null then an override can be set. The next step is to query the - * properties of the available tracks to determine the {@code groupIndex} and the {@code - * trackIndices} within the group it that should be selected. The override can then be specified - * using {@link ParametersBuilder#setSelectionOverride}: - * - *
{@code - * SelectionOverride selectionOverride = new SelectionOverride(groupIndex, trackIndices); - * player.setTrackSelectionParameters( - * ((Parameters)player.getTrackSelectionParameters()) + * defaultTrackSelector.setParameters( + * defaultTrackSelector.getParameters() * .buildUpon() - * .setSelectionOverride(rendererIndex, rendererTrackGroups, selectionOverride) + * .setTunnelingEnabled(true) * .build()); + * * }- * - *
{@code - * player.setTrackSelectionParameters( - * player.getTrackSelectionParameters() - * .buildUpon() - * .setMaxVideoSizeSd() - * .setPreferredAudioLanguage("deu") - * .build()); - * }- * - * There are several benefits to using constraint based track selection instead of specific track - * overrides: - * - *