Package com.google.android.exoplayer2.audio

## Interface AudioProcessorChain

- All Known Subinterfaces:
    `DefaultAudioSink.AudioProcessorChain`
  All Known Implementing Classes:
    `DefaultAudioSink.DefaultAudioProcessorChain`

      public interface AudioProcessorChain

  Provides a chain of audio processors, which are used for any user-defined processing and applying playback parameters (if supported). Because applying playback parameters can skip and stretch/compress audio, the sink will query the chain for information on how to transform its output position to map it onto a media position, via `getMediaDuration(long)` and `getSkippedOutputFrameCount()`.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `PlaybackParameters` | `applyPlaybackParameters​(PlaybackParameters playbackParameters)` | Configures audio processors to apply the specified playback parameters immediately, returning the new playback parameters, which may differ from those passed in.
    `boolean` | `applySkipSilenceEnabled​(boolean skipSilenceEnabled)` | Configures audio processors to apply whether to skip silences immediately, returning the new value.
    `AudioProcessor[]` | `getAudioProcessors()` | Returns the fixed chain of audio processors that will process audio.
    `long` | `getMediaDuration​(long playoutDuration)` | Returns the media duration corresponding to the specified playout duration, taking speed adjustment due to audio processing into account.
    `long` | `getSkippedOutputFrameCount()` | Returns the number of output audio frames skipped since the audio processors were last flushed.

- - ### Method Detail

    - #### getAudioProcessors

          AudioProcessor[] getAudioProcessors()

      Returns the fixed chain of audio processors that will process audio. This method is called once during initialization, but audio processors may change state to become active/inactive during playback.

    - #### applyPlaybackParameters

          PlaybackParameters applyPlaybackParameters​(PlaybackParameters playbackParameters)

      Configures audio processors to apply the specified playback parameters immediately, returning the new playback parameters, which may differ from those passed in. Only called when processors have no input pending.
      Parameters:
        `playbackParameters` - The playback parameters to try to apply.
      Returns:
        The playback parameters that were actually applied.

    - #### applySkipSilenceEnabled

          boolean applySkipSilenceEnabled​(boolean skipSilenceEnabled)

      Configures audio processors to apply whether to skip silences immediately, returning the new value. Only called when processors have no input pending.
      Parameters:
        `skipSilenceEnabled` - Whether silences should be skipped in the audio stream.
      Returns:
        The new value.

    - #### getMediaDuration

          long getMediaDuration​(long playoutDuration)

      Returns the media duration corresponding to the specified playout duration, taking speed adjustment due to audio processing into account.

      The scaling performed by this method will use the actual playback speed achieved by the audio processor chain, on average, since it was last flushed. This may differ very slightly from the target playback speed.

      Parameters:
        `playoutDuration` - The playout duration to scale.
      Returns:
        The corresponding media duration, in the same units as `duration`.

    - #### getSkippedOutputFrameCount

          long getSkippedOutputFrameCount()

      Returns the number of output audio frames skipped since the audio processors were last flushed.