TeeAudioProcessor


@UnstableApi
class TeeAudioProcessor : BaseAudioProcessor


Audio processor that outputs its input unmodified and also outputs its input to a given sink. This is intended to be used for diagnostics and debugging.

This audio processor can be inserted into the audio processor chain to access audio data before/after particular processing steps have been applied. For example, to get audio output after playback speed adjustment and silence skipping have been applied it is necessary to pass a custom AudioProcessorChain when creating the audio sink, and include this audio processor after all other audio processors.

Summary

Nested types

A sink for audio buffers handled by the audio processor.

A sink for audio buffers that writes output audio as .wav files with a given path prefix.

Public constructors

Creates a new tee audio processor, sending incoming data to the given AudioBufferSink.

Public functions

AudioProcessor.AudioFormat!

Called when the processor is configured for a new input format.

Unit
queueInput(inputBuffer: ByteBuffer!)

Queues audio data between the position and limit of the inputBuffer for processing.

Protected functions

Unit

Called when the processor is flushed, directly or as part of resetting.

Unit

Called when the end-of-stream is queued to the processor.

Unit

Called when the processor is reset.

Inherited Constants

From androidx.media3.common.audio.AudioProcessor
const ByteBuffer!

An empty, direct ByteBuffer.

Inherited functions

From androidx.media3.common.audio.BaseAudioProcessor
AudioProcessor.AudioFormat!

Configures the processor to process input audio with the specified format.

Unit

Clears any buffered data and pending output.

ByteBuffer!

Returns a buffer containing processed output data between its position and limit.

Boolean

Returns whether the current output buffer has any data remaining.

Boolean

Returns whether the processor is configured and will process input buffers.

Boolean

Returns whether this processor will return no more output from getOutput until flush has been called and more input has been queued.

Unit

Queues an end of stream signal.

ByteBuffer!

Replaces the current output buffer with a buffer of at least size bytes and returns it.

Unit

Resets the processor to its unconfigured state, releasing any resources.

Inherited properties

From androidx.media3.common.audio.BaseAudioProcessor
AudioProcessor.AudioFormat!

The current input audio format.

AudioProcessor.AudioFormat!

The current output audio format.

Public constructors

TeeAudioProcessor

TeeAudioProcessor(audioBufferSink: TeeAudioProcessor.AudioBufferSink!)

Creates a new tee audio processor, sending incoming data to the given AudioBufferSink.

Parameters
audioBufferSink: TeeAudioProcessor.AudioBufferSink!

The audio buffer sink that will receive input queued to this audio processor.

Public functions

onConfigure

fun onConfigure(inputAudioFormat: AudioProcessor.AudioFormat!): AudioProcessor.AudioFormat!

Called when the processor is configured for a new input format.

queueInput

fun queueInput(inputBuffer: ByteBuffer!): Unit

Queues audio data between the position and limit of the inputBuffer for processing. After calling this method, processed output may be available via getOutput. Calling queueInput(ByteBuffer) again invalidates any pending output.

Parameters
inputBuffer: ByteBuffer!

The input buffer to process. It must be a direct byte buffer with native byte order. Its contents are treated as read-only. Its position will be advanced by the number of bytes consumed (which may be zero). The caller retains ownership of the provided buffer.

Protected functions

onFlush

protected fun onFlush(): Unit

Called when the processor is flushed, directly or as part of resetting.

onQueueEndOfStream

protected fun onQueueEndOfStream(): Unit

Called when the end-of-stream is queued to the processor.

onReset

protected fun onReset(): Unit

Called when the processor is reset.