BaseAudioProcessor


@UnstableApi
abstract class BaseAudioProcessor : AudioProcessor

Known direct subclasses
BaseAudioProcessor

This class is deprecated.

Use androidx.media3.common.audio.BaseAudioProcessor.

ChannelMixingAudioProcessor

An AudioProcessor that handles mixing and scaling audio channels.

SilenceSkippingAudioProcessor

An AudioProcessor that skips silence in the input stream.

SpeedChangingAudioProcessor

An AudioProcessor that changes the speed of audio samples depending on their timestamp.

TeeAudioProcessor

Audio processor that outputs its input unmodified and also outputs its input to a given sink.

ToInt16PcmAudioProcessor

An AudioProcessor that converts different PCM audio encodings to 16-bit integer PCM.


Base class for audio processors that keep an output buffer and an internal buffer that is reused whenever input is queued. Subclasses should override onConfigure to return the output audio format for the processor if it's active.

Summary

Public constructors

Public functions

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 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.

Unit

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

Protected functions

Boolean

Returns whether the current output buffer has any data remaining.

AudioProcessor.AudioFormat!

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

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.

ByteBuffer!

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

Protected properties

AudioProcessor.AudioFormat!

The current input audio format.

AudioProcessor.AudioFormat!

The current output audio format.

Inherited Constants

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

An empty, direct ByteBuffer.

Inherited functions

From androidx.media3.common.audio.AudioProcessor
Long

Returns the expected duration of the output stream when the processor is applied given a input durationUs.

abstract Unit
queueInput(inputBuffer: ByteBuffer!)

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

Public constructors

BaseAudioProcessor

BaseAudioProcessor()

Public functions

configure

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

Configures the processor to process input audio with the specified format. After calling this method, call isActive to determine whether the audio processor is active. Returns the configured output audio format if this instance is active.

After calling this method, it is necessary to flush the processor to apply the new configuration. Before applying the new configuration, it is safe to queue input and get output in the old input/output formats. Call queueEndOfStream when no more input will be supplied in the old input format.

Parameters
inputAudioFormat: AudioProcessor.AudioFormat!

The format of audio that will be queued after the next call to flush.

Returns
AudioProcessor.AudioFormat!

The configured output audio format if this instance is active.

Throws
androidx.media3.common.audio.AudioProcessor.UnhandledAudioFormatException

Thrown if the specified format can't be handled as input.

flush

fun flush(): Unit

Clears any buffered data and pending output. If the audio processor is active, also prepares the audio processor to receive a new stream of input in the last configured (pending) format.

getOutput

@CallSuper
fun getOutput(): ByteBuffer!

Returns a buffer containing processed output data between its position and limit. The buffer will always be a direct byte buffer with native byte order. Calling this method invalidates any previously returned buffer. The buffer will be empty if no output is available.

Returns
ByteBuffer!

A buffer containing processed output data between its position and limit.

isActive

@CallSuper
fun isActive(): Boolean

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

isEnded

@CallSuper
fun isEnded(): Boolean

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

queueEndOfStream

fun queueEndOfStream(): Unit

Queues an end of stream signal. After this method has been called, queueInput may not be called until after the next call to flush. Calling getOutput will return any remaining output data. Multiple calls may be required to read all of the remaining output data. isEnded will return true once all remaining output data has been read.

reset

fun reset(): Unit

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

Protected functions

hasPendingOutput

protected fun hasPendingOutput(): Boolean

Returns whether the current output buffer has any data remaining.

onConfigure

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

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

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.

replaceOutputBuffer

protected fun replaceOutputBuffer(size: Int): ByteBuffer!

Replaces the current output buffer with a buffer of at least size bytes and returns it. Callers should write to the returned buffer then flip it so it can be read via getOutput.

Protected properties

inputAudioFormat

protected val inputAudioFormatAudioProcessor.AudioFormat!

The current input audio format.

outputAudioFormat

protected val outputAudioFormatAudioProcessor.AudioFormat!

The current output audio format.