# DefaultAudioSink.Builder

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/audio/DefaultAudioSink.java+class:androidx.media3.exoplayer.audio.DefaultAudioSink.Builder)

*** ** * ** ***


```
public final class DefaultAudioSink.Builder
```

<br />

*** ** * ** ***

A builder to create `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink` instances.

## Summary

| ### Public constructors |
|---|
| `[Builder](https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#Builder())()` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#Builder(android.content.Context)` instead. <br /> |
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#Builder(android.content.Context)(https://developer.android.com/reference/android/content/Context.html context)` Creates a new builder. |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#build()()` Builds the `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html [setAudioCapabilities](https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioCapabilities(androidx.media3.exoplayer.audio.AudioCapabilities))(https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioCapabilities audioCapabilities)` **This method is deprecated.** These `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioCapabilities` are only used in the absence of a `https://developer.android.com/reference/android/content/Context.html`. <br /> |
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html [setAudioOffloadSupportProvider](https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioOffloadSupportProvider(androidx.media3.exoplayer.audio.DefaultAudioSink.AudioOffloadSupportProvider))( https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.AudioOffloadSupportProvider audioOffloadSupportProvider )` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioOutputProvider(androidx.media3.exoplayer.audio.AudioOutputProvider)` instead and customize `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioTrackAudioOutputProvider.Builder#setAudioOffloadSupportProvider(androidx.media3.exoplayer.audio.DefaultAudioSink.AudioOffloadSupportProvider)`. <br /> |
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioOutputProvider(androidx.media3.exoplayer.audio.AudioOutputProvider)(https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioOutputProvider audioOutputProvider)` Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioOutputProvider` used to create `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioOutput` instances. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioProcessorChain(androidx.media3.common.audio.AudioProcessorChain)(https://developer.android.com/reference/androidx/media3/common/audio/AudioProcessorChain audioProcessorChain)` Sets the `https://developer.android.com/reference/androidx/media3/common/audio/AudioProcessorChain` to process audio before playback. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioProcessors(androidx.media3.common.audio.AudioProcessor[])(AudioProcessor[] audioProcessors)` Sets an array of `https://developer.android.com/reference/androidx/media3/common/audio/AudioProcessor`s that will process PCM audio before output. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html [setAudioTrackBufferSizeProvider](https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioTrackBufferSizeProvider(androidx.media3.exoplayer.audio.DefaultAudioSink.AudioTrackBufferSizeProvider))( https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.AudioTrackBufferSizeProvider audioTrackBufferSizeProvider )` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioOutputProvider(androidx.media3.exoplayer.audio.AudioOutputProvider)` instead and customize `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioTrackAudioOutputProvider.Builder#setAudioTrackBufferSizeProvider(androidx.media3.exoplayer.audio.DefaultAudioSink.AudioTrackBufferSizeProvider)`. <br /> |
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html [setAudioTrackProvider](https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioTrackProvider(androidx.media3.exoplayer.audio.DefaultAudioSink.AudioTrackProvider))( https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.AudioTrackProvider audioTrackProvider )` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioOutputProvider(androidx.media3.exoplayer.audio.AudioOutputProvider)` instead and customize `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioTrackAudioOutputProvider.Builder#setAudioTrackBuilderModifier(java.util.function.BiConsumer<android.media.AudioTrack.Builder,androidx.media3.exoplayer.audio.AudioOutputProvider.OutputConfig>)` or wrap `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioTrackAudioOutputProvider` in a `https://developer.android.com/reference/androidx/media3/exoplayer/audio/ForwardingAudioOutputProvider`. <br /> |
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setEnableAudioOutputPlaybackParameters(boolean)( boolean enableAudioOutputPlaybackParameters )` Sets whether to control the playback speed using the `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioOutput` implementation (using `https://developer.android.com/reference/android/media/AudioTrack.html#setPlaybackParams(android.media.PlaybackParams)` by default), if supported. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html [setEnableAudioTrackPlaybackParams](https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setEnableAudioTrackPlaybackParams(boolean))( boolean enableAudioTrackPlaybackParams )` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setEnableAudioOutputPlaybackParameters(boolean)` instead. <br /> |
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setEnableFloatOutput(boolean)(boolean enableFloatOutput)` Sets whether to enable 32-bit float output or integer output. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html @https://developer.android.com/reference/androidx/media3/common/util/ExperimentalApi https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setExperimentalAudioOffloadListener(androidx.media3.exoplayer.ExoPlayer.AudioOffloadListener)( @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer.AudioOffloadListener audioOffloadListener )` Sets an optional `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer.AudioOffloadListener` to receive events relevant to offloaded playback. |

## Public constructors

### Builder

```
public [Builder](https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#Builder())()
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#Builder(android.content.Context)` instead.

### Builder

```
public Builder(Context context)
```

Creates a new builder.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | The `https://developer.android.com/reference/android/content/Context.html`. |

## Public methods

### build

```
public DefaultAudioSink build()
```

Builds the `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink`. Must only be called once per Builder instance.

### setAudioCapabilities

```
@CanIgnoreReturnValue
public DefaultAudioSink.Builder [setAudioCapabilities](https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioCapabilities(androidx.media3.exoplayer.audio.AudioCapabilities))(AudioCapabilities audioCapabilities)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> These `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioCapabilities` are only used in the absence of a `https://developer.android.com/reference/android/content/Context.html`. In the case when the `Context` is `
> null` and the `audioCapabilities` is not set to the `Builder`, the default capabilities (no encoded audio passthrough support) should be assumed.

### setAudioOffloadSupportProvider

```
@CanIgnoreReturnValue
public DefaultAudioSink.Builder [setAudioOffloadSupportProvider](https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioOffloadSupportProvider(androidx.media3.exoplayer.audio.DefaultAudioSink.AudioOffloadSupportProvider))(
    DefaultAudioSink.AudioOffloadSupportProvider audioOffloadSupportProvider
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioOutputProvider(androidx.media3.exoplayer.audio.AudioOutputProvider)` instead and customize `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioTrackAudioOutputProvider.Builder#setAudioOffloadSupportProvider(androidx.media3.exoplayer.audio.DefaultAudioSink.AudioOffloadSupportProvider)`.

Sets an `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.AudioOffloadSupportProvider` to provide the sink's offload support capabilities for a given `https://developer.android.com/reference/androidx/media3/common/Format` and `https://developer.android.com/reference/androidx/media3/common/AudioAttributes` for calls to `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink#getFormatOffloadSupport(androidx.media3.common.Format)`.

If this setter is not called, then the `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink` uses an instance of `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioOffloadSupportProvider`.

Must not be called if `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioOutputProvider(androidx.media3.exoplayer.audio.AudioOutputProvider)` is used.

### setAudioOutputProvider

```
@CanIgnoreReturnValue
public DefaultAudioSink.Builder setAudioOutputProvider(AudioOutputProvider audioOutputProvider)
```

Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioOutputProvider` used to create `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioOutput` instances.

Must not be used with the deprecated `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#Builder()` constructor.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioOutputProvider audioOutputProvider` | The `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioOutputProvider`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder` | This builder. |

### setAudioProcessorChain

```
@CanIgnoreReturnValue
public DefaultAudioSink.Builder setAudioProcessorChain(AudioProcessorChain audioProcessorChain)
```

Sets the `https://developer.android.com/reference/androidx/media3/common/audio/AudioProcessorChain` to process audio before playback. The instance passed in must not be reused in other sinks. Processing chains are only supported for PCM playback (not passthrough or offload).

By default, no processing will be applied.

### setAudioProcessors

```
@CanIgnoreReturnValue
public DefaultAudioSink.Builder setAudioProcessors(AudioProcessor[] audioProcessors)
```

Sets an array of `https://developer.android.com/reference/androidx/media3/common/audio/AudioProcessor`s that will process PCM audio before output. May be empty. Equivalent of `setAudioProcessorChain(new
DefaultAudioProcessorChain(audioProcessors)`.

The default value is an empty array.

### setAudioTrackBufferSizeProvider

```
@CanIgnoreReturnValue
public DefaultAudioSink.Builder [setAudioTrackBufferSizeProvider](https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioTrackBufferSizeProvider(androidx.media3.exoplayer.audio.DefaultAudioSink.AudioTrackBufferSizeProvider))(
    DefaultAudioSink.AudioTrackBufferSizeProvider audioTrackBufferSizeProvider
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioOutputProvider(androidx.media3.exoplayer.audio.AudioOutputProvider)` instead and customize `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioTrackAudioOutputProvider.Builder#setAudioTrackBufferSizeProvider(androidx.media3.exoplayer.audio.DefaultAudioSink.AudioTrackBufferSizeProvider)`.

Sets an `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.AudioTrackBufferSizeProvider` to compute the buffer size when `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink#configure(androidx.media3.exoplayer.audio.AudioSink.AudioSinkConfig)` is called with `specifiedBufferSize == 0`.

The default value is `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.AudioTrackBufferSizeProvider#DEFAULT()`.

Must not be called if `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioOutputProvider(androidx.media3.exoplayer.audio.AudioOutputProvider)` is used.

### setAudioTrackProvider

```
@CanIgnoreReturnValue
public DefaultAudioSink.Builder [setAudioTrackProvider](https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioTrackProvider(androidx.media3.exoplayer.audio.DefaultAudioSink.AudioTrackProvider))(
    DefaultAudioSink.AudioTrackProvider audioTrackProvider
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioOutputProvider(androidx.media3.exoplayer.audio.AudioOutputProvider)` instead and customize `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioTrackAudioOutputProvider.Builder#setAudioTrackBuilderModifier(java.util.function.BiConsumer<android.media.AudioTrack.Builder,androidx.media3.exoplayer.audio.AudioOutputProvider.OutputConfig>)` or wrap `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioTrackAudioOutputProvider` in a `https://developer.android.com/reference/androidx/media3/exoplayer/audio/ForwardingAudioOutputProvider`.

Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.AudioTrackProvider` used to create `https://developer.android.com/reference/android/media/AudioTrack.html` instances.

Must not be called if `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setAudioOutputProvider(androidx.media3.exoplayer.audio.AudioOutputProvider)` is used.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.AudioTrackProvider audioTrackProvider` | The `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.AudioTrackProvider`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder` | This builder. |

### setEnableAudioOutputPlaybackParameters

```
@CanIgnoreReturnValue
public DefaultAudioSink.Builder setEnableAudioOutputPlaybackParameters(
    boolean enableAudioOutputPlaybackParameters
)
```

Sets whether to control the playback speed using the `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioOutput` implementation (using `https://developer.android.com/reference/android/media/AudioTrack.html#setPlaybackParams(android.media.PlaybackParams)` by default), if supported. If set to `false`, speed up/down of the audio will be done by ExoPlayer (see `https://developer.android.com/reference/androidx/media3/common/audio/SonicAudioProcessor`). The `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioOutput` speed adjustment is lower latency, but device-dependent, less reliable or may offer fewer available speeds.

The default value is `false`.

### setEnableAudioTrackPlaybackParams

```
@CanIgnoreReturnValue
public DefaultAudioSink.Builder [setEnableAudioTrackPlaybackParams](https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setEnableAudioTrackPlaybackParams(boolean))(
    boolean enableAudioTrackPlaybackParams
)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setEnableAudioOutputPlaybackParameters(boolean)` instead.

### setEnableFloatOutput

```
@CanIgnoreReturnValue
public DefaultAudioSink.Builder setEnableFloatOutput(boolean enableFloatOutput)
```

Sets whether to enable 32-bit float output or integer output. Where possible, 32-bit float output will be used if the input is 32-bit float, and also if the input is high resolution (24-bit or 32-bit) integer PCM. Audio processing (for example, speed adjustment) will not be available when float output is in use.

The default value is `false`.

### setExperimentalAudioOffloadListener

```
@CanIgnoreReturnValue
@ExperimentalApi
public DefaultAudioSink.Builder setExperimentalAudioOffloadListener(
    @Nullable ExoPlayer.AudioOffloadListener audioOffloadListener
)
```

Sets an optional `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer.AudioOffloadListener` to receive events relevant to offloaded playback.

The default value is null.