# TrackSelectionUtil

Artifact: [androidx.media3:media3-exoplayer](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/exoplayer/trackselection/TrackSelectionUtil.java+class:androidx.media3.exoplayer.trackselection.TrackSelectionUtil)

*** ** * ** ***


```
@UnstableApi
public final class TrackSelectionUtil
```

<br />

*** ** * ** ***

Track selection related utility methods.

## Summary

| ### Nested types |
|---|
| `public interface https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelectionUtil.AdaptiveTrackSelectionFactory` Functional interface to create a single adaptive track selection. |

| ### Public methods |
|---|---|
| `static https://developer.android.com/reference/androidx/media3/common/Tracks` | `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelectionUtil#buildTracks(androidx.media3.exoplayer.trackselection.MappingTrackSelector.MappedTrackInfo,androidx.media3.exoplayer.trackselection.TrackSelection[])( https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/MappingTrackSelector.MappedTrackInfo mappedTrackInfo, @https://developer.android.com/reference/androidx/media3/common/util/NullableType TrackSelection[] selections )` Returns `https://developer.android.com/reference/androidx/media3/common/Tracks` built from `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/MappingTrackSelector.MappedTrackInfo` and `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelection` for each renderer. |
| `static https://developer.android.com/reference/androidx/media3/common/Tracks` | `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelectionUtil#buildTracks(androidx.media3.exoplayer.trackselection.MappingTrackSelector.MappedTrackInfo,java.util.List<? extends androidx.media3.exoplayer.trackselection.TrackSelection>[])( https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/MappingTrackSelector.MappedTrackInfo mappedTrackInfo, List[] selections )` Returns `https://developer.android.com/reference/androidx/media3/common/Tracks` built from `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/MappingTrackSelector.MappedTrackInfo` and `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelection` for each renderer. |
| `static ExoTrackSelection[]` | `@https://developer.android.com/reference/androidx/media3/common/util/NullableType https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelectionUtil#createTrackSelectionsForDefinitions(androidx.media3.exoplayer.trackselection.ExoTrackSelection.Definition[],androidx.media3.exoplayer.trackselection.TrackSelectionUtil.AdaptiveTrackSelectionFactory)( @https://developer.android.com/reference/androidx/media3/common/util/NullableType ExoTrackSelection.Definition[] definitions, https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelectionUtil.AdaptiveTrackSelectionFactory adaptiveTrackSelectionFactory )` Creates track selections for an array of track selection definitions, with at most one multi-track adaptive selection. |
| `static https://developer.android.com/reference/android/graphics/Point.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelectionUtil#getMaxVideoSizeInViewport(boolean,int,int,int,int)( boolean orientationMayChange, int viewportWidth, int viewportHeight, int videoWidth, int videoHeight )` Given viewport dimensions and video dimensions, computes the maximum size of the video as it will be rendered to fit inside of the viewport. |
| `static https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.Parameters` | `[updateParametersWithOverride](https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelectionUtil#updateParametersWithOverride(androidx.media3.exoplayer.trackselection.DefaultTrackSelector.Parameters,int,androidx.media3.exoplayer.source.TrackGroupArray,boolean,androidx.media3.exoplayer.trackselection.DefaultTrackSelector.SelectionOverride))( https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.Parameters parameters, int rendererIndex, https://developer.android.com/reference/androidx/media3/exoplayer/source/TrackGroupArray trackGroupArray, boolean isDisabled, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.SelectionOverride override )` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.Parameters.Builder#addOverride(androidx.media3.common.TrackSelectionOverride)` instead. <br /> |

## Public methods

### buildTracks

```
public static Tracks buildTracks(
    MappingTrackSelector.MappedTrackInfo mappedTrackInfo,
    @NullableType TrackSelection[] selections
)
```

Returns `https://developer.android.com/reference/androidx/media3/common/Tracks` built from `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/MappingTrackSelector.MappedTrackInfo` and `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelection` for each renderer.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/MappingTrackSelector.MappedTrackInfo mappedTrackInfo` | The `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/MappingTrackSelector.MappedTrackInfo` |
| `@https://developer.android.com/reference/androidx/media3/common/util/NullableType TrackSelection[] selections` | The track selections, indexed by renderer. A null entry indicates that a renderer does not have any selected tracks. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/Tracks` | The corresponding `https://developer.android.com/reference/androidx/media3/common/Tracks`. |

### buildTracks

```
public static Tracks buildTracks(
    MappingTrackSelector.MappedTrackInfo mappedTrackInfo,
    List[] selections
)
```

Returns `https://developer.android.com/reference/androidx/media3/common/Tracks` built from `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/MappingTrackSelector.MappedTrackInfo` and `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelection` for each renderer.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/MappingTrackSelector.MappedTrackInfo mappedTrackInfo` | The `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/MappingTrackSelector.MappedTrackInfo` |
| `List[] selections` | The track selections, indexed by renderer. Null entries are not permitted. An empty list indicates that a renderer does not have any selected tracks. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/Tracks` | The corresponding `https://developer.android.com/reference/androidx/media3/common/Tracks`. |

### createTrackSelectionsForDefinitions

```
@NullableType
public static ExoTrackSelection[] createTrackSelectionsForDefinitions(
    @NullableType ExoTrackSelection.Definition[] definitions,
    TrackSelectionUtil.AdaptiveTrackSelectionFactory adaptiveTrackSelectionFactory
)
```

Creates track selections for an array of track selection definitions, with at most one multi-track adaptive selection.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/media3/common/util/NullableType ExoTrackSelection.Definition[] definitions` | The list of track selection `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/ExoTrackSelection.Definition`. May include null values. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelectionUtil.AdaptiveTrackSelectionFactory adaptiveTrackSelectionFactory` | A factory for the multi-track adaptive track selection. |

| Returns |
|---|---|
| `ExoTrackSelection[]` | The array of created track selection. For null entries in `definitions` returns null values. |

### getMaxVideoSizeInViewport

```
public static Point getMaxVideoSizeInViewport(
    boolean orientationMayChange,
    int viewportWidth,
    int viewportHeight,
    int videoWidth,
    int videoHeight
)
```

Given viewport dimensions and video dimensions, computes the maximum size of the video as it will be rendered to fit inside of the viewport.

### updateParametersWithOverride

```
public static DefaultTrackSelector.Parameters [updateParametersWithOverride](https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/TrackSelectionUtil#updateParametersWithOverride(androidx.media3.exoplayer.trackselection.DefaultTrackSelector.Parameters,int,androidx.media3.exoplayer.source.TrackGroupArray,boolean,androidx.media3.exoplayer.trackselection.DefaultTrackSelector.SelectionOverride))(
    DefaultTrackSelector.Parameters parameters,
    int rendererIndex,
    TrackGroupArray trackGroupArray,
    boolean isDisabled,
    @Nullable DefaultTrackSelector.SelectionOverride override
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.Parameters.Builder#addOverride(androidx.media3.common.TrackSelectionOverride)` instead.