Nested Class Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description
configure(Format inputFormat, int specifiedBufferSize, int outputChannels)Configures (or reconfigures) the sink.
dump(Dumper dumper)Dumps the fields of the object using the
flush()Flushes the sink, after which it is ready to receive buffers from a new playback position.
handleBuffer(ByteBuffer buffer, long presentationTimeUs, int encodedAccessUnitCount)Attempts to process data from a
ByteBuffer, starting from its current position and ending at its limit (exclusive).
handleDiscontinuity()Signals to the sink that the next buffer may be discontinuous with the previous buffer.
reset()Resets the sink, releasing any resources that it currently holds.
Methods inherited from class com.google.android.exoplayer2.audio.ForwardingAudioSink
disableTunneling, enableTunnelingV21, experimentalFlushWithoutAudioTrackRelease, getAudioAttributes, getCurrentPositionUs, getFormatSupport, getPlaybackParameters, getSkipSilenceEnabled, hasPendingData, isEnded, pause, play, playToEndOfStream, setAudioAttributes, setAudioSessionId, setAuxEffectInfo, setListener, setPlaybackParameters, setPlayerId, setSkipSilenceEnabled, setVolume, supportsFormat
public CapturingAudioSink(AudioSink sink)
public void configure(Format inputFormat, int specifiedBufferSize, @Nullable int outputChannels) throws AudioSink.ConfigurationExceptionConfigures (or reconfigures) the sink.
- Specified by:
inputFormat- The format of audio data provided in the input buffers.
specifiedBufferSize- A specific size for the playback buffer in bytes, or 0 to infer a suitable buffer size.
outputChannels- A mapping from input to output channels that is applied to this sink's input as a preprocessing step, if handling PCM input. Specify
nullto leave the input unchanged. Otherwise, the element at index
ispecifies index of the input channel to map to output channel
iwhen preprocessing input buffers. After the map is applied the audio data will have
AudioSink.ConfigurationException- If an error occurs configuring the sink.
public void handleDiscontinuity()Signals to the sink that the next buffer may be discontinuous with the previous buffer.
public boolean handleBuffer(ByteBuffer buffer, long presentationTimeUs, int encodedAccessUnitCount) throws AudioSink.InitializationException, AudioSink.WriteExceptionAttempts to process data from a
ByteBuffer, starting from its current position and ending at its limit (exclusive). The position of the
ByteBufferis advanced by the number of bytes that were handled.
AudioSink.Listener.onPositionDiscontinuity()will be called if
presentationTimeUsis discontinuous with the last buffer handled since the last reset.
Returns whether the data was handled in full. If the data was not handled in full then the same
ByteBuffermust be provided to subsequent calls until it has been fully consumed, except in the case of an intervening call to
AudioSink.configure(Format, int, int)that causes the sink to be flushed).
- Specified by:
buffer- The buffer containing audio data.
presentationTimeUs- The presentation timestamp of the buffer in microseconds.
encodedAccessUnitCount- The number of encoded access units in the buffer, or 1 if the buffer contains PCM audio. This allows batching multiple encoded access units in one buffer.
- Whether the buffer was handled fully.
AudioSink.InitializationException- If an error occurs initializing the sink.
AudioSink.WriteException- If an error occurs writing the audio data.
public void flush()Flushes the sink, after which it is ready to receive buffers from a new playback position.
The audio session may remain active until
public void reset()Resets the sink, releasing any resources that it currently holds.