# 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)

*** ** * ** ***

<br />

```
@UnstableApi
class TrackSelectionUtil
```

<br />

*** ** * ** ***

Track selection related utility methods.

## Summary

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

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

## Public functions

### buildTracks

```
java-static fun buildTracks(
    mappedTrackInfo: MappingTrackSelector.MappedTrackInfo!,
    @NullableType selections: Array<@NullableType TrackSelection!>!
): Tracks!
```

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

| Parameters |
|---|---|
| `mappedTrackInfo: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/MappingTrackSelector.MappedTrackInfo!` | The `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/MappingTrackSelector.MappedTrackInfo` |
| `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/NullableType selections: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-array/index.html<@https://developer.android.com/reference/kotlin/androidx/media3/common/util/NullableType https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/TrackSelection!>!` | 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/kotlin/androidx/media3/common/Tracks!` | The corresponding `https://developer.android.com/reference/kotlin/androidx/media3/common/Tracks`. |

### buildTracks

```
java-static fun buildTracks(
    mappedTrackInfo: MappingTrackSelector.MappedTrackInfo!,
    selections: Array<(Mutable)List<TrackSelection!>!>!
): Tracks!
```

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

| Parameters |
|---|---|
| `mappedTrackInfo: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/MappingTrackSelector.MappedTrackInfo!` | The `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/MappingTrackSelector.MappedTrackInfo` |
| `selections: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-array/index.html<(https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-list/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/TrackSelection!>!>!` | 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/kotlin/androidx/media3/common/Tracks!` | The corresponding `https://developer.android.com/reference/kotlin/androidx/media3/common/Tracks`. |

### createTrackSelectionsForDefinitions

```
@NullableType
java-static fun createTrackSelectionsForDefinitions(
    @NullableType definitions: Array<@NullableType ExoTrackSelection.Definition!>!,
    adaptiveTrackSelectionFactory: TrackSelectionUtil.AdaptiveTrackSelectionFactory!
): Array<ExoTrackSelection!>!
```

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

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/NullableType definitions: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-array/index.html<@https://developer.android.com/reference/kotlin/androidx/media3/common/util/NullableType https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/ExoTrackSelection.Definition!>!` | The list of track selection `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/ExoTrackSelection.Definition`. May include null values. |
| `adaptiveTrackSelectionFactory: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/TrackSelectionUtil.AdaptiveTrackSelectionFactory!` | A factory for the multi-track adaptive track selection. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-array/index.html<https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/trackselection/ExoTrackSelection!>!` | The array of created track selection. For null entries in `definitions` returns null values. |

### getMaxVideoSizeInViewport

```
java-static fun getMaxVideoSizeInViewport(
    orientationMayChange: Boolean,
    viewportWidth: Int,
    viewportHeight: Int,
    videoWidth: Int,
    videoHeight: Int
): Point!
```

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

```
java-static fun [updateParametersWithOverride](https://developer.android.com/reference/kotlin/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))(
    parameters: DefaultTrackSelector.Parameters!,
    rendererIndex: Int,
    trackGroupArray: TrackGroupArray!,
    isDisabled: Boolean,
    override: DefaultTrackSelector.SelectionOverride?
): DefaultTrackSelector.Parameters!
```

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