Package com.google.android.exoplayer2.ext.opus

## Class LibopusAudioRenderer

- java.lang.Object
- - com.google.android.exoplayer2.BaseRenderer
  - - com.google.android.exoplayer2.audio.DecoderAudioRenderer<OpusDecoder>
    - - com.google.android.exoplayer2.ext.opus.LibopusAudioRenderer

- All Implemented Interfaces:
    `PlayerMessage.Target`, `Renderer`, `RendererCapabilities`, `MediaClock`

      public class LibopusAudioRenderer
      extends DecoderAudioRenderer<OpusDecoder>

  Decodes and renders audio using the native Opus decoder.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface com.google.android.exoplayer2.Renderer

      `Renderer.MessageType, Renderer.State, Renderer.WakeupListener`

    - ### Nested classes/interfaces inherited from interface com.google.android.exoplayer2.RendererCapabilities

      `RendererCapabilities.AdaptiveSupport, RendererCapabilities.Capabilities, RendererCapabilities.DecoderSupport, RendererCapabilities.FormatSupport, RendererCapabilities.HardwareAccelerationSupport, RendererCapabilities.TunnelingSupport`

  - ### Field Summary

    - ### Fields inherited from interface com.google.android.exoplayer2.Renderer

      `MSG_CUSTOM_BASE, MSG_SET_AUDIO_ATTRIBUTES, MSG_SET_AUDIO_SESSION_ID, MSG_SET_AUX_EFFECT_INFO, MSG_SET_CAMERA_MOTION_LISTENER, MSG_SET_CHANGE_FRAME_RATE_STRATEGY, MSG_SET_PREFERRED_AUDIO_DEVICE, MSG_SET_SCALING_MODE, MSG_SET_SKIP_SILENCE_ENABLED, MSG_SET_VIDEO_FRAME_METADATA_LISTENER, MSG_SET_VIDEO_OUTPUT, MSG_SET_VOLUME, MSG_SET_WAKEUP_LISTENER, STATE_DISABLED, STATE_ENABLED, STATE_STARTED`

    - ### Fields inherited from interface com.google.android.exoplayer2.RendererCapabilities

      `ADAPTIVE_NOT_SEAMLESS, ADAPTIVE_NOT_SUPPORTED, ADAPTIVE_SEAMLESS, ADAPTIVE_SUPPORT_MASK, DECODER_SUPPORT_FALLBACK, DECODER_SUPPORT_FALLBACK_MIMETYPE, DECODER_SUPPORT_PRIMARY, FORMAT_EXCEEDS_CAPABILITIES, FORMAT_HANDLED, FORMAT_SUPPORT_MASK, FORMAT_UNSUPPORTED_DRM, FORMAT_UNSUPPORTED_SUBTYPE, FORMAT_UNSUPPORTED_TYPE, HARDWARE_ACCELERATION_NOT_SUPPORTED, HARDWARE_ACCELERATION_SUPPORT_MASK, HARDWARE_ACCELERATION_SUPPORTED, MODE_SUPPORT_MASK, TUNNELING_NOT_SUPPORTED, TUNNELING_SUPPORT_MASK, TUNNELING_SUPPORTED`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `LibopusAudioRenderer()` |
    `LibopusAudioRenderer​(Handler eventHandler, AudioRendererEventListener eventListener, AudioProcessor... audioProcessors)` | Creates a new instance.
    `LibopusAudioRenderer​(Handler eventHandler, AudioRendererEventListener eventListener, AudioSink audioSink)` | Creates a new instance.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected OpusDecoder` | `createDecoder​(Format format, CryptoConfig cryptoConfig)` | Creates a decoder for the given format.
    `protected boolean` | `experimentalGetDiscardPaddingEnabled()` | Returns true if support for padding removal from the end of decoder output buffer should be enabled.
    `String` | `getName()` | Returns the name of this renderer, for logging and debugging purposes.
    `protected Format` | `getOutputFormat​(OpusDecoder decoder)` | Returns the format of audio buffers output by the decoder.
    `protected @com.google.android.exoplayer2.C.FormatSupport int` | `supportsFormatInternal​(Format format)` | Returns the `C.FormatSupport` for the given `Format`.

    - ### Methods inherited from class com.google.android.exoplayer2.audio.DecoderAudioRenderer

      `canReuseDecoder, experimentalSetEnableKeepAudioTrackOnSeek, getMediaClock, getPlaybackParameters, getPositionUs, getSinkFormatSupport, handleMessage, isEnded, isReady, onDisabled, onEnabled, onPositionDiscontinuity, onPositionReset, onQueueInputBuffer, onStarted, onStopped, onStreamChanged, render, setPlaybackParameters, sinkSupportsFormat, supportsFormat`

    - ### Methods inherited from class com.google.android.exoplayer2.BaseRenderer

      `createRendererException, createRendererException, disable, enable, getCapabilities, getConfiguration, getFormatHolder, getIndex, getLastResetPositionUs, getPlayerId, getReadingPositionUs, getState, getStream, getStreamFormats, getTrackType, hasReadStreamToEnd, init, isCurrentStreamFinal, isSourceReady, maybeThrowStreamError, onReset, readSource, replaceStream, reset, resetPosition, setCurrentStreamFinal, skipSource, start, stop, supportsMixedMimeTypeAdaptation`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface com.google.android.exoplayer2.Renderer

      `setPlaybackSpeed`

- - ### Constructor Detail

    - #### LibopusAudioRenderer

          public LibopusAudioRenderer()

    - #### LibopusAudioRenderer

          public LibopusAudioRenderer​(@Nullable
                                      Handler eventHandler,
                                      @Nullable
                                      AudioRendererEventListener eventListener,
                                      AudioProcessor... audioProcessors)

      Creates a new instance.
      Parameters:
        `eventHandler` - A handler to use when delivering events to `eventListener`. May be null if delivery of events is not required.
        `eventListener` - A listener of events. May be null if delivery of events is not required.
        `audioProcessors` - Optional `AudioProcessor`s that will process audio before output.

    - #### LibopusAudioRenderer

          public LibopusAudioRenderer​(@Nullable
                                      Handler eventHandler,
                                      @Nullable
                                      AudioRendererEventListener eventListener,
                                      AudioSink audioSink)

      Creates a new instance.
      Parameters:
        `eventHandler` - A handler to use when delivering events to `eventListener`. May be null if delivery of events is not required.
        `eventListener` - A listener of events. May be null if delivery of events is not required.
        `audioSink` - The sink to which audio will be output.

  - ### Method Detail

    - #### getName

          public String getName()

      Description copied from interface: `Renderer`
      Returns the name of this renderer, for logging and debugging purposes. Should typically be the renderer's (un-obfuscated) class name.
      Returns:
        The name of this renderer.

    - #### supportsFormatInternal

          @FormatSupport
          protected @com.google.android.exoplayer2.C.FormatSupport int supportsFormatInternal​(Format format)

      Description copied from class: `DecoderAudioRenderer`
      Returns the `C.FormatSupport` for the given `Format`.
      Specified by:
        `supportsFormatInternal` in class `DecoderAudioRenderer<OpusDecoder>`
      Parameters:
        `format` - The format, which has an audio `Format.sampleMimeType`.
      Returns:
        The `C.FormatSupport` for this `Format`.

    - #### createDecoder

          protected final OpusDecoder createDecoder​(Format format,
                                                    @Nullable
                                                    CryptoConfig cryptoConfig)
                                             throws OpusDecoderException

      Creates a decoder for the given format.
      Specified by:
        `createDecoder` in class `DecoderAudioRenderer<OpusDecoder>`
      Parameters:
        `format` - The format for which a decoder is required.
        `cryptoConfig` - The `CryptoConfig` object required for decoding encrypted content. May be null and can be ignored if decoder does not handle encrypted content.
      Returns:
        The decoder.
      Throws:
        `OpusDecoderException`

    - #### getOutputFormat

          protected final Format getOutputFormat​(OpusDecoder decoder)

      Returns the format of audio buffers output by the decoder. Will not be called until the first output buffer has been dequeued, so the decoder may use input data to determine the format.
      Specified by:
        `getOutputFormat` in class `DecoderAudioRenderer<OpusDecoder>`
      Parameters:
        `decoder` - The decoder.

    - #### experimentalGetDiscardPaddingEnabled

          protected boolean experimentalGetDiscardPaddingEnabled()

      Returns true if support for padding removal from the end of decoder output buffer should be enabled.

      This method is experimental, and will be renamed or removed in a future release.