Package com.castlabs.android.player

# Interface AudioRendererListener

All Known Implementing Classes:
  `AbstractAudioRendererListener`

public interface AudioRendererListener
A listener that can be attached to the `PlayerController` to be informed about audio rendering events such as decoder initializations, format changes and frame drops. Note that all events are posted async on the main thread

Since:
  4.2.25

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `onAudioDecoderInitialized(String decoderName, long initializedTimestampMs, long initializationDurationMs)`
  Called when a decoder is created.
  `void`
  `onAudioDisabled(com.google.android.exoplayer2.decoder.DecoderCounters counters)`
  Called when the renderer is disabled.
  `void`
  `onAudioEnabled(com.google.android.exoplayer2.decoder.DecoderCounters counters)`
  Called when the renderer is enabled.
  `void`
  `onAudioInputFormatChanged(com.google.android.exoplayer2.Format format)`
  Called when the format of the media being consumed by the renderer changes.
  `void`
  `onAudioSessionId(int audioSessionId)`
  Called when the audio session is set.
  `void`
  `onAudioSinkUnderrun(int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs)`
  Called when an `AudioSink` underrun occurs.
  `void`
  `onPositionFramesMismatch(long audioTimestampPositionFrames, long audioTimestampSystemTimeUs, long systemTimeUs, long playbackPositionUs)`
  Called when the frame position is too far from the expected frame position.
  `void`
  `onSystemTimeUsMismatch(long audioTimestampPositionFrames, long audioTimestampSystemTimeUs, long systemTimeUs, long playbackPositionUs)`
  Called when the system time associated with the last known audio track timestamp is unexpectedly far from the current time.

- ## Method Details

  - ### onAudioEnabled

    void onAudioEnabled(com.google.android.exoplayer2.decoder.DecoderCounters counters)
    Called when the renderer is enabled.
    Parameters:
      `counters` - `DecoderCounters` that will be updated by the renderer for as long as it remains enabled.

  - ### onAudioDecoderInitialized

    void onAudioDecoderInitialized(String decoderName, long initializedTimestampMs, long initializationDurationMs)
    Called when a decoder is created.
    Parameters:
      `decoderName` - The decoder that was created.
      `initializedTimestampMs` - `SystemClock.elapsedRealtime()` when initialization finished.
      `initializationDurationMs` - The time taken to initialize the decoder in milliseconds.

  - ### onAudioInputFormatChanged

    void onAudioInputFormatChanged(com.google.android.exoplayer2.Format format)
    Called when the format of the media being consumed by the renderer changes.
    Parameters:
      `format` - The new format.

  - ### onAudioDisabled

    void onAudioDisabled(com.google.android.exoplayer2.decoder.DecoderCounters counters)
    Called when the renderer is disabled.
    Parameters:
      `counters` - `DecoderCounters` that were updated by the renderer.

  - ### onAudioSessionId

    void onAudioSessionId(int audioSessionId)
    Called when the audio session is set.
    Parameters:
      `audioSessionId` - The audio session id.

  - ### onAudioSinkUnderrun

    void onAudioSinkUnderrun(int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs)
    Called when an `AudioSink` underrun occurs.
    Parameters:
      `bufferSize` - The size of the `AudioSink`'s buffer, in bytes.
      `bufferSizeMs` - The size of the `AudioSink`'s buffer, in milliseconds, if it is configured for PCM output. `C.TIME_UNSET` if it is configured for passthrough output, as the buffered media can have a variable bitrate so the duration may be unknown.
      `elapsedSinceLastFeedMs` - The time since the `AudioSink` was last fed data.

  - ### onPositionFramesMismatch

    void onPositionFramesMismatch(long audioTimestampPositionFrames, long audioTimestampSystemTimeUs, long systemTimeUs, long playbackPositionUs)
    Called when the frame position is too far from the expected frame position.
    Parameters:
      `audioTimestampPositionFrames` - The frame position of the last known audio track timestamp.
      `audioTimestampSystemTimeUs` - The system time associated with the last known audio track timestamp, in microseconds.
      `systemTimeUs` - The current time.
      `playbackPositionUs` - The current playback head position in microseconds.

  - ### onSystemTimeUsMismatch

    void onSystemTimeUsMismatch(long audioTimestampPositionFrames, long audioTimestampSystemTimeUs, long systemTimeUs, long playbackPositionUs)
    Called when the system time associated with the last known audio track timestamp is unexpectedly far from the current time.
    Parameters:
      `audioTimestampPositionFrames` - The frame position of the last known audio track timestamp.
      `audioTimestampSystemTimeUs` - The system time associated with the last known audio track timestamp, in microseconds.
      `systemTimeUs` - The current time.
      `playbackPositionUs` - The current playback head position in microseconds.