ForwardingAudioOutput
public class ForwardingAudioOutput implements AudioOutput
A forwarding base class that delegates all calls to the provided AudioOutput.
Summary
Public constructors |
|---|
ForwardingAudioOutput(AudioOutput audioOutput)Creates the forwarding |
Public methods |
|
|---|---|
void |
addListener(AudioOutput.Listener listener)Adds a |
void |
attachAuxEffect(int effectId)Attaches an auxiliary effect to the output. |
void |
flush()Flushes the audio data from the output. |
int |
Returns the audio session ID or |
long |
Returns the buffer size in frames of the underlying |
PlaybackParameters |
Returns the playback parameters. |
long |
Returns the current playout timestamp in microseconds. |
int |
Returns the sample rate of the underlying |
boolean |
Returns whether this output is playing back in offload mode. |
boolean |
Returns whether the audio output is stalled. |
void |
pause()Pauses playback. |
void |
play()Starts or resumes playing audio. |
void |
release()Releases the |
void |
removeListener(AudioOutput.Listener listener)Removes a |
void |
setAuxEffectSendLevel(float level)Sets the send level for the auxiliary effect. |
void |
setOffloadDelayPadding(int delayInFrames, int paddingInFrames)Sets the offload delay and padding. |
void |
Notifies the output that this is the end of the stream. |
void |
setPlaybackParameters(PlaybackParameters playbackParams)Sets the playback parameters. |
void |
@UnstableApiSets the |
void |
setPreferredDevice(@Nullable AudioDeviceInfo preferredDevice)Sets the preferred audio device for routing, or null for no preference. |
void |
setVolume(float volume)Sets the volume of the |
void |
stop()Signal that the last buffer has been written and playback should stop after playing out all remaining buffers |
boolean |
write(Writes audio data to the audio output for playback with a presentation timestamp. |
Public constructors
ForwardingAudioOutput
public ForwardingAudioOutput(AudioOutput audioOutput)
Creates the forwarding AudioOutput.
| Parameters | |
|---|---|
AudioOutput audioOutput |
The wrapped |
Public methods
addListener
public void addListener(AudioOutput.Listener listener)
Adds a Listener for audio output events.
attachAuxEffect
public void attachAuxEffect(int effectId)
Attaches an auxiliary effect to the output.
getAudioSessionId
public int getAudioSessionId()
Returns the audio session ID or AUDIO_SESSION_ID_UNSET if unknown.
getBufferSizeInFrames
public long getBufferSizeInFrames()
Returns the buffer size in frames of the underlying AudioOutput.
getPlaybackParameters
public PlaybackParameters getPlaybackParameters()
Returns the playback parameters.
isOffloadedPlayback
public boolean isOffloadedPlayback()
Returns whether this output is playing back in offload mode.
removeListener
public void removeListener(AudioOutput.Listener listener)
Removes a Listener for audio output events.
setAuxEffectSendLevel
public void setAuxEffectSendLevel(float level)
Sets the send level for the auxiliary effect.
setOffloadDelayPadding
public void setOffloadDelayPadding(int delayInFrames, int paddingInFrames)
Sets the offload delay and padding.
setOffloadEndOfStream
public void setOffloadEndOfStream()
Notifies the output that this is the end of the stream.
setPlaybackParameters
public void setPlaybackParameters(PlaybackParameters playbackParams)
Sets the playback parameters.
setPlayerId
@UnstableApi
public void setPlayerId(PlayerId playerId)
Sets the PlayerId on the audio output.
setPreferredDevice
public void setPreferredDevice(@Nullable AudioDeviceInfo preferredDevice)
Sets the preferred audio device for routing, or null for no preference.
stop
public void stop()
Signal that the last buffer has been written and playback should stop after playing out all remaining buffers
write
public boolean write(
ByteBuffer buffer,
int encodedAccessUnitCount,
long presentationTimeUs
)
Writes audio data to the audio output for playback with a presentation timestamp.
The provided buffer must be a direct byte buffer with native byte order. The method is read-only and will not modify the bytes. It processes data from buffer.position() to buffer.limit() (exclusive). Every call will advance buffer.position() to reflect the number of bytes written.
The first time this method is called with a new buffer, the buffer must contain one or more complete encoded access units or complete PCM frames.
If this method returns false, the same buffer must be used for subsequent calls to this method until it has been fully consumed, or until an intervening call to flush.
| Parameters | |
|---|---|
ByteBuffer buffer |
The buffer containing the audio data. |
int encodedAccessUnitCount |
The number of encoded access units in the buffer when the buffer was first used in this method, or 1 if the buffer contains PCM audio. When calling this method again after it returned |
long presentationTimeUs |
The presentation timestamp, in microseconds, of the first access unit or PCM frame when the buffer was first used in this method. When calling this method again after it returned |
| Returns | |
|---|---|
boolean |
Whether the buffer was handled fully. |
| Throws | |
|---|---|
androidx.media3.exoplayer.audio.AudioOutput.WriteException |
If the write fails. The audio output cannot be reused after a failure and needs to be recreated. |