SpeedChangingAudioProcessor


@UnstableApi
class SpeedChangingAudioProcessor : BaseAudioProcessor


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

Summary

Public constructors

Public functions

Long

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

Long
getMediaDurationUs(playoutDurationUs: Long)

Returns the input media duration for the given playout duration.

ByteBuffer!

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

Unit
getSpeedAdjustedTimeAsync(inputTimeUs: Long, callback: TimestampConsumer!)

Calculates the time at which the inputTimeUs is outputted at after the speed changes has been applied.

Boolean

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

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.

Boolean

Returns whether the current output buffer has any data remaining.

Boolean

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

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

SpeedChangingAudioProcessor

SpeedChangingAudioProcessor(speedProvider: SpeedProvider!)

Public functions

getDurationAfterProcessorApplied

fun getDurationAfterProcessorApplied(durationUs: Long): Long

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

getMediaDurationUs

fun getMediaDurationUs(playoutDurationUs: Long): Long

Returns the input media duration for the given playout duration.

Both durations are counted from the last reset or flush of the audio processor.

The playoutDurationUs must be less than last processed buffer output time.

Parameters
playoutDurationUs: Long

The playout duration in microseconds.

Returns
Long

The corresponding input duration in microseconds.

getOutput

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.

getSpeedAdjustedTimeAsync

fun getSpeedAdjustedTimeAsync(inputTimeUs: Long, callback: TimestampConsumer!): Unit

Calculates the time at which the inputTimeUs is outputted at after the speed changes has been applied.

Calls the callback with the output time as soon as enough audio has been processed to calculate it.

If the audio processor has ended, speeds will come out at the last processed speed of the audio processor.

Successive calls must have monotonically increasing inputTimeUs.

Can be called from any thread.

Parameters
inputTimeUs: Long

The input time, in microseconds.

callback: TimestampConsumer!

The callback called with the output time. May be called on a different thread from the caller of this method.

isEnded

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.

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.