# AudioRendererEventListener

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

*** ** * ** ***


```
@UnstableApi
public interface AudioRendererEventListener
```

<br />

*** ** * ** ***

Listener of audio `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` events. All methods have no-op default implementations to allow selective overrides.

## Summary

| ### Nested types |
|---|
| `public final class https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener.EventDispatcher` Dispatches events to an `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener`. |

| ### Public methods |
|---|---|
| `default void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener#onAudioCodecError(java.lang.Exception)(https://developer.android.com/reference/java/lang/Exception.html audioCodecError)` Called when an audio decoder encounters an error. |
| `default void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener#onAudioCodecParametersChanged(androidx.media3.exoplayer.CodecParameters)(https://developer.android.com/reference/androidx/media3/exoplayer/CodecParameters codecParameters)` Called when the audio codec parameters change. |
| `default void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener#onAudioDecoderInitialized(java.lang.String,long,long)( https://developer.android.com/reference/java/lang/String.html decoderName, long initializedTimestampMs, long initializationDurationMs )` Called when a decoder is created. |
| `default void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener#onAudioDecoderReleased(java.lang.String)(https://developer.android.com/reference/java/lang/String.html decoderName)` Called when a decoder is released. |
| `default void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener#onAudioDisabled(androidx.media3.exoplayer.DecoderCounters)(https://developer.android.com/reference/androidx/media3/exoplayer/DecoderCounters counters)` Called when the renderer is disabled. |
| `default void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener#onAudioEnabled(androidx.media3.exoplayer.DecoderCounters)(https://developer.android.com/reference/androidx/media3/exoplayer/DecoderCounters counters)` Called when the renderer is enabled. |
| `default void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener#onAudioInputFormatChanged(androidx.media3.common.Format,androidx.media3.exoplayer.DecoderReuseEvaluation)( https://developer.android.com/reference/androidx/media3/common/Format format, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/DecoderReuseEvaluation decoderReuseEvaluation )` Called when the format of the media being consumed by the renderer changes. |
| `default void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener#onAudioPositionAdvancing(long)(long playoutStartSystemTimeMs)` Called when the audio position has increased for the first time since the last pause or position reset. |
| `default void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener#onAudioSessionIdChanged(int)(int audioSessionId)` Called when the audio session id changed. |
| `default void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener#onAudioSinkError(java.lang.Exception)(https://developer.android.com/reference/java/lang/Exception.html audioSinkError)` Called when `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioSink` has encountered an error. |
| `default void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener#onAudioTrackInitialized(androidx.media3.exoplayer.audio.AudioSink.AudioTrackConfig)(https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioSink.AudioTrackConfig audioTrackConfig)` Called when an `https://developer.android.com/reference/android/media/AudioTrack.html` has been initialized. |
| `default void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener#onAudioTrackReleased(androidx.media3.exoplayer.audio.AudioSink.AudioTrackConfig)(https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioSink.AudioTrackConfig audioTrackConfig)` Called when an `https://developer.android.com/reference/android/media/AudioTrack.html` has been released. |
| `default void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener#onAudioUnderrun(int,long,long)( int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs )` Called when an audio underrun occurs. |
| `default void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener#onSkipSilenceEnabledChanged(boolean)(boolean skipSilenceEnabled)` Called when skipping silences is enabled or disabled in the audio stream. |

## Public methods

### onAudioCodecError

```
default void onAudioCodecError(Exception audioCodecError)
```

Called when an audio decoder encounters an error.

This method being called does not indicate that playback has failed, or that it will fail. The player may be able to recover from the error. Hence applications should *not* implement this method to display a user visible error or initiate an application level retry. `https://developer.android.com/reference/androidx/media3/common/Player.Listener#onPlayerError(androidx.media3.common.PlaybackException)` is the appropriate place to implement such behavior. This method is called to provide the application with an opportunity to log the error if it wishes to do so.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/Exception.html audioCodecError` | The error. Typically a `https://developer.android.com/reference/android/media/MediaCodec.CodecException.html` if the renderer uses `https://developer.android.com/reference/android/media/MediaCodec.html`, or a `https://developer.android.com/reference/androidx/media3/decoder/DecoderException` if the renderer uses a software decoder. |

### onAudioCodecParametersChanged

```
default void onAudioCodecParametersChanged(CodecParameters codecParameters)
```

Called when the audio codec parameters change.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/CodecParameters codecParameters` | The new codec parameters. |

### onAudioDecoderInitialized

```
default void onAudioDecoderInitialized(
    String decoderName,
    long initializedTimestampMs,
    long initializationDurationMs
)
```

Called when a decoder is created.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html decoderName` | The decoder that was created. |
| `long initializedTimestampMs` | `https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtime()` when initialization finished. |
| `long initializationDurationMs` | The time taken to initialize the decoder in milliseconds. |

### onAudioDecoderReleased

```
default void onAudioDecoderReleased(String decoderName)
```

Called when a decoder is released.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html decoderName` | The decoder that was released. |

### onAudioDisabled

```
default void onAudioDisabled(DecoderCounters counters)
```

Called when the renderer is disabled.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/DecoderCounters counters` | `https://developer.android.com/reference/androidx/media3/exoplayer/DecoderCounters` that were updated by the renderer. |

### onAudioEnabled

```
default void onAudioEnabled(DecoderCounters counters)
```

Called when the renderer is enabled.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/DecoderCounters counters` | `https://developer.android.com/reference/androidx/media3/exoplayer/DecoderCounters` that will be updated by the renderer for as long as it remains enabled. |

### onAudioInputFormatChanged

```
default void onAudioInputFormatChanged(
    Format format,
    @Nullable DecoderReuseEvaluation decoderReuseEvaluation
)
```

Called when the format of the media being consumed by the renderer changes.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/Format format` | The new format. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/DecoderReuseEvaluation decoderReuseEvaluation` | The result of the evaluation to determine whether an existing decoder instance can be reused for the new format, or `null` if the renderer did not have a decoder. |

### onAudioPositionAdvancing

```
default void onAudioPositionAdvancing(long playoutStartSystemTimeMs)
```

Called when the audio position has increased for the first time since the last pause or position reset.

| Parameters |
|---|---|
| `long playoutStartSystemTimeMs` | The approximate derived `https://developer.android.com/reference/java/lang/System.html#currentTimeMillis()` at which playout started. |

### onAudioSessionIdChanged

```
default void onAudioSessionIdChanged(int audioSessionId)
```

Called when the audio session id changed.

| Parameters |
|---|---|
| `int audioSessionId` | The new audio session ID. |

### onAudioSinkError

```
default void onAudioSinkError(Exception audioSinkError)
```

Called when `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioSink` has encountered an error.

If the sink writes to a platform `https://developer.android.com/reference/android/media/AudioTrack.html`, this will be called for all `https://developer.android.com/reference/android/media/AudioTrack.html` errors.

This method being called does not indicate that playback has failed, or that it will fail. The player may be able to recover from the error. Hence applications should *not* implement this method to display a user visible error or initiate an application level retry. `https://developer.android.com/reference/androidx/media3/common/Player.Listener#onPlayerError(androidx.media3.common.PlaybackException)` is the appropriate place to implement such behavior. This method is called to provide the application with an opportunity to log the error if it wishes to do so.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/Exception.html audioSinkError` | The error that occurred. Typically an `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioSink.InitializationException`, a `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioSink.WriteException`, or an `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioSink.UnexpectedDiscontinuityException`. |

### onAudioTrackInitialized

```
default void onAudioTrackInitialized(AudioSink.AudioTrackConfig audioTrackConfig)
```

Called when an `https://developer.android.com/reference/android/media/AudioTrack.html` has been initialized.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioSink.AudioTrackConfig audioTrackConfig` | The `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioSink.AudioTrackConfig` of the initialized `https://developer.android.com/reference/android/media/AudioTrack.html`. |

### onAudioTrackReleased

```
default void onAudioTrackReleased(AudioSink.AudioTrackConfig audioTrackConfig)
```

Called when an `https://developer.android.com/reference/android/media/AudioTrack.html` has been released.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioSink.AudioTrackConfig audioTrackConfig` | The `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioSink.AudioTrackConfig` of the released `https://developer.android.com/reference/android/media/AudioTrack.html`. |

### onAudioUnderrun

```
default void onAudioUnderrun(
    int bufferSize,
    long bufferSizeMs,
    long elapsedSinceLastFeedMs
)
```

Called when an audio underrun occurs.

| Parameters |
|---|---|
| `int bufferSize` | The size of the audio output buffer, in bytes. |
| `long bufferSizeMs` | The size of the audio output buffer, in milliseconds, if it contains PCM encoded audio. `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()` if the output buffer contains non-PCM encoded audio. |
| `long elapsedSinceLastFeedMs` | The time since audio was last written to the output buffer. |

### onSkipSilenceEnabledChanged

```
default void onSkipSilenceEnabledChanged(boolean skipSilenceEnabled)
```

Called when skipping silences is enabled or disabled in the audio stream.

| Parameters |
|---|---|
| `boolean skipSilenceEnabled` | Whether skipping silences in the audio stream is enabled. |