# DefaultAudioSink.AudioTrackBufferSizeProvider

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.AudioTrackBufferSizeProvider)

*** ** * ** ***


```
public interface DefaultAudioSink.AudioTrackBufferSizeProvider
```

<br />

Known direct subclasses [DefaultAudioTrackBufferSizeProvider](https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioTrackBufferSizeProvider)

|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioTrackBufferSizeProvider` | Provide the buffer size to use when creating an `https://developer.android.com/reference/android/media/AudioTrack.html`. |

*** ** * ** ***

Provides the buffer size to use when creating an `https://developer.android.com/reference/android/media/AudioTrack.html`.

## Summary

| ### Constants |
|---|---|
| `default static final https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.AudioTrackBufferSizeProvider` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.AudioTrackBufferSizeProvider#DEFAULT()` Default instance. |

| ### Public methods |
|---|---|
| `abstract int` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.AudioTrackBufferSizeProvider#getBufferSizeInBytes(int,int,int,int,int,int,double)( int minBufferSizeInBytes, @https://developer.android.com/reference/androidx/media3/common/C.Encoding int encoding, @https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.OutputMode int outputMode, int pcmFrameSize, int sampleRate, int bitrate, double maxAudioTrackPlaybackSpeed )` Returns the buffer size to use when creating an `https://developer.android.com/reference/android/media/AudioTrack.html` for a specific format and output mode. |

## Constants

### DEFAULT

```
default static final DefaultAudioSink.AudioTrackBufferSizeProvider DEFAULT
```

Default instance.

## Public methods

### getBufferSizeInBytes

```
abstract int getBufferSizeInBytes(
    int minBufferSizeInBytes,
    @C.Encoding int encoding,
    @DefaultAudioSink.OutputMode int outputMode,
    int pcmFrameSize,
    int sampleRate,
    int bitrate,
    double maxAudioTrackPlaybackSpeed
)
```

Returns the buffer size to use when creating an `https://developer.android.com/reference/android/media/AudioTrack.html` for a specific format and output mode.

| Parameters |
|---|---|
| `int minBufferSizeInBytes` | The minimum buffer size in bytes required to play this format. See `https://developer.android.com/reference/android/media/AudioTrack.html#getMinBufferSize(int, int, int)`. |
| `@https://developer.android.com/reference/androidx/media3/common/C.Encoding int encoding` | The `https://developer.android.com/reference/androidx/media3/common/C.Encoding` of the format. Value is one of the following: - `Format.NO_VALUE` <br /> |
| `@https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.OutputMode int outputMode` | How the audio will be played. One of the `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.OutputMode`. |
| `int pcmFrameSize` | The size of the PCM frames if the `encoding` is PCM, 1 otherwise, in bytes. |
| `int sampleRate` | The sample rate of the format, in Hz. |
| `int bitrate` | The bitrate of the audio stream if the stream is compressed, or `https://developer.android.com/reference/androidx/media3/common/Format#NO_VALUE()` if `encoding` is PCM or the bitrate is not known. |
| `double maxAudioTrackPlaybackSpeed` | The maximum speed the content will be played using `https://developer.android.com/reference/android/media/AudioTrack.html#setPlaybackParams(android.media.PlaybackParams)`. 0.5 is 2x slow motion, 1 is real time, 2 is 2x fast forward, etc. This will be `1` unless `https://developer.android.com/reference/androidx/media3/exoplayer/audio/DefaultAudioSink.Builder#setEnableAudioOutputPlaybackParameters(boolean)` is enabled. |

| Returns |
|---|---|
| `int` | The computed buffer size in bytes. It should always be `>= minBufferSizeInBytes`. The computed buffer size must contain an integer number of frames: `bufferSizeInBytes % pcmFrameSize == 0`. |