public interface

AudioSink.Listener

 androidx.media3.exoplayer.audio.AudioSink.Listener

Overview

Listener for audio sink events.

Summary

Methods
public voidonAudioCapabilitiesChanged()

Called when audio capabilities changed.

public voidonAudioSinkError(java.lang.Exception audioSinkError)

Called when AudioSink has encountered an error.

public voidonAudioTrackInitialized(AudioSink.AudioTrackConfig audioTrackConfig)

Called when an AudioTrack has been initialized.

public voidonAudioTrackReleased(AudioSink.AudioTrackConfig audioTrackConfig)

Called when an AudioTrack has been released.

public voidonOffloadBufferEmptying()

Called when the offload buffer has been partially emptied.

public voidonOffloadBufferFull()

Called when the offload buffer has been filled completely.

public voidonPositionAdvancing(long playoutStartSystemTimeMs)

Called when the audio sink's position has increased for the first time since it was last paused or flushed.

public voidonPositionDiscontinuity()

Called when the audio sink handles a buffer whose timestamp is discontinuous with the last buffer handled since it was reset.

public voidonSilenceSkipped()

Called when a period of silence has been skipped.

public voidonSkipSilenceEnabledChanged(boolean skipSilenceEnabled)

Called when skipping silences is enabled or disabled.

public voidonUnderrun(int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs)

Called when the audio sink runs out of data.

Methods

public void onPositionDiscontinuity()

Called when the audio sink handles a buffer whose timestamp is discontinuous with the last buffer handled since it was reset.

public void onPositionAdvancing(long playoutStartSystemTimeMs)

Called when the audio sink's position has increased for the first time since it was last paused or flushed.

Parameters:

playoutStartSystemTimeMs: The approximate derived currentTimeMillis at which playout started. Only valid if the audio track has not underrun.

public void onUnderrun(int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs)

Called when the audio sink runs out of data.

An audio sink implementation may never call this method (for example, if audio data is consumed in batches rather than based on the sink's own clock).

Parameters:

bufferSize: The size of the sink's buffer, in bytes.
bufferSizeMs: The size of the sink's buffer, in milliseconds, if it is configured for PCM output. C.TIME_UNSET if it is configured for encoded audio output, as the buffered media can have a variable bitrate so the duration may be unknown.
elapsedSinceLastFeedMs: The time since the sink was last fed data, in milliseconds.

public void onSkipSilenceEnabledChanged(boolean skipSilenceEnabled)

Called when skipping silences is enabled or disabled.

Parameters:

skipSilenceEnabled: Whether skipping silences is enabled.

public void onOffloadBufferEmptying()

Called when the offload buffer has been partially emptied.

public void onOffloadBufferFull()

Called when the offload buffer has been filled completely.

public void onAudioSinkError(java.lang.Exception audioSinkError)

Called when AudioSink has encountered an error.

If the sink writes to a platform AudioTrack, this will called for all AudioTrack 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 (for example by recreating the AudioTrack, possibly with different settings) and continue. Hence applications should not implement this method to display a user visible error or initiate an application level retry ( 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.

Fatal errors that cannot be recovered will be reported wrapped in a ExoPlaybackException by .

Parameters:

audioSinkError: The error that occurred. Typically an AudioSink.InitializationException, a AudioSink.WriteException, or an AudioSink.UnexpectedDiscontinuityException.

public void onAudioCapabilitiesChanged()

Called when audio capabilities changed.

public void onAudioTrackInitialized(AudioSink.AudioTrackConfig audioTrackConfig)

Called when an AudioTrack has been initialized.

Parameters:

audioTrackConfig: The AudioSink.AudioTrackConfig of the initialized AudioTrack.

public void onAudioTrackReleased(AudioSink.AudioTrackConfig audioTrackConfig)

Called when an AudioTrack has been released.

Parameters:

audioTrackConfig: The AudioSink.AudioTrackConfig of the released AudioTrack.

public void onSilenceSkipped()

Called when a period of silence has been skipped.