andrewlewis ebe54113a9 Fix SonicAudioProcessor end of stream behavior
The `AudioProcessor` interface requires that no more input is queued after
queueing end of stream, but `DefaultAudioSink` did queue more input and the
implementation of `SonicAudioProcessor` actually relied on this to drain output
at the end of the stream.

Fix this behavior by getting `Sonic` output in `getOutput` and having
`DefaultAudioSink` only queue input to processors that are not draining.

Also add TODOs to clean up audio processor implementations where the code
handles interaction that doesn't conform to the interface.

PiperOrigin-RevId: 345406478
2020-12-03 17:11:47 +00:00
..
2019-10-30 08:47:06 +00:00

ExoPlayer GVR extension

DEPRECATED - If you still need this extension, please contact us by filing an issue on our issue tracker.

The GVR extension wraps the Google VR SDK for Android. It provides a GvrAudioProcessor, which uses GvrAudioSurround to provide binaural rendering of surround sound and ambisonic soundfields.

Getting the extension

The easiest way to use the extension is to add it as a gradle dependency:

implementation 'com.google.android.exoplayer:extension-gvr:2.X.X'

where 2.X.X is the version, which must match the version of the ExoPlayer library being used.

Alternatively, you can clone the ExoPlayer repository and depend on the module locally. Instructions for doing this can be found in ExoPlayer's top level README.

Using the extension

  • If using DefaultRenderersFactory, override DefaultRenderersFactory.buildAudioProcessors to return a GvrAudioProcessor.
  • If constructing renderers directly, pass a GvrAudioProcessor to MediaCodecAudioRenderer's constructor.
  • Javadoc: Classes matching com.google.android.exoplayer2.ext.gvr.* belong to this module.