# PlaybackSpeedState

Artifact: [androidx.media3:media3-ui-compose](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/ui/compose/state/PlaybackSpeedState.kt+class:androidx.media3.ui.compose.state.PlaybackSpeedState)

<br />

```
@UnstableApi
class PlaybackSpeedState
```

<br />

*** ** * ** ***

State that holds all interactions to correctly deal with a UI component representing a playback speed controller.

In most cases, this will be created via `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/rememberPlaybackSpeedState.composable#rememberPlaybackSpeedState(androidx.media3.common.Player)`.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackSpeedState#PlaybackSpeedState(androidx.media3.common.Player)(player: https://developer.android.com/reference/kotlin/androidx/media3/common/Player?)` |

| ### Public functions |
|---|---|
| `suspend https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackSpeedState#observe()()` Subscribes to updates from `https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Events` and listens to |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackSpeedState#restoreOverriddenSpeed()()` Restores the playback speed to the value it had before the first call to `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackSpeedState#temporarilyOverrideSpeedWith(kotlin.Float)`. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackSpeedState#temporarilyOverrideSpeedWith(kotlin.Float)(speed: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Starts a temporary speed override, i.e. fast-forward or slow motion. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackSpeedState#updatePlaybackSpeed(kotlin.Float)(speed: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Updates the playback speed of the `https://developer.android.com/reference/kotlin/androidx/media3/common/Player` backing this state. |

| ### Public properties |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackSpeedState#isEnabled()` true if `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackSpeedState#player()` is not `null` and `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#COMMAND_SET_SPEED_AND_PITCH()` is available. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackSpeedState#playbackSpeed()` determined by `https://developer.android.com/reference/kotlin/androidx/media3/common/PlaybackParameters#speed()`. |

## Public constructors

### PlaybackSpeedState

```
PlaybackSpeedState(player: Player?)
```

| Parameters |
|---|---|
| `player: https://developer.android.com/reference/kotlin/androidx/media3/common/Player?` | `https://developer.android.com/reference/kotlin/androidx/media3/common/Player` object that operates as a state provider. |

## Public functions

### observe

```
suspend fun observe(): Unit
```

Subscribes to updates from `https://developer.android.com/reference/kotlin/androidx/media3/common/Player.Events` and listens to

- `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#EVENT_PLAYBACK_PARAMETERS_CHANGED()` in order to determine the latest playback speed.

- `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#EVENT_AVAILABLE_COMMANDS_CHANGED()` in order to determine whether the UI element responsible for setting the playback speed should be enabled, i.e. respond to user input.

### restoreOverriddenSpeed

```
fun restoreOverriddenSpeed(): Unit
```

Restores the playback speed to the value it had before the first call to `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackSpeedState#temporarilyOverrideSpeedWith(kotlin.Float)`.

If the playback speed is changed while a temporary override is active, this method will still restore the speed to the value that was current *before* the override began.

### temporarilyOverrideSpeedWith

```
fun temporarilyOverrideSpeedWith(speed: Float): Unit
```

Starts a temporary speed override, i.e. fast-forward or slow motion.

If there isn't an ongoing override, remembers the current speed to restore later.

### updatePlaybackSpeed

```
fun updatePlaybackSpeed(speed: Float): Unit
```

Updates the playback speed of the `https://developer.android.com/reference/kotlin/androidx/media3/common/Player` backing this state.

This method does nothing if `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#COMMAND_SET_SPEED_AND_PITCH()` is not available.

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#setPlaybackSpeed(float)` |   |
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#COMMAND_SET_SPEED_AND_PITCH()` |   |

## Public properties

### isEnabled

```
val isEnabled: Boolean
```

true if `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackSpeedState#player()` is not `null` and `https://developer.android.com/reference/kotlin/androidx/media3/common/Player#COMMAND_SET_SPEED_AND_PITCH()` is available.

### playbackSpeed

```
val playbackSpeed: Float
```

determined by `https://developer.android.com/reference/kotlin/androidx/media3/common/PlaybackParameters#speed()`. Defaults to `1f` if the `https://developer.android.com/reference/kotlin/androidx/media3/ui/compose/state/PlaybackSpeedState#player()` is `null`.