SimpleDecoder
@UnstableApi
public abstract class SimpleDecoder<I extends DecoderInputBuffer, O extends DecoderOutputBuffer, E extends DecoderException> implements Decoder
BitmapFactoryImageDecoder |
An image decoder that uses |
SimpleSubtitleDecoder |
Base class for subtitle parsers that use their own decode thread. |
Base class for Decoders that use their own decode thread and decode each input buffer immediately into a corresponding output buffer.
Summary
Protected constructors |
|---|
SimpleDecoder(I[] inputBuffers, O[] outputBuffers) |
Public methods |
|
|---|---|
final @Nullable I |
Dequeues the next input buffer to be filled and queued to the decoder. |
final @Nullable O |
Dequeues the next output buffer from the decoder. |
final void |
flush()Flushes the decoder. |
final void |
queueInputBuffer(I inputBuffer)Queues an input buffer to the decoder. |
void |
Releases the decoder. |
final void |
setOutputStartTimeUs(long outputStartTimeUs)Sets the timestamp from which output buffers should be produced, in microseconds. |
Protected methods |
|
|---|---|
abstract I |
Creates a new input buffer. |
abstract O |
Creates a new output buffer. |
abstract E |
Creates an exception to propagate for an unexpected decode error. |
abstract @Nullable E |
decode(I inputBuffer, O outputBuffer, boolean reset)Decodes the |
final boolean |
isAtLeastOutputStartTimeUs(long timeUs)Returns whether a sample time is greater or equal to the |
void |
@CallSuperReleases an output buffer back to the decoder. |
final void |
setInitialInputBufferSize(int size)Sets the initial size of each input buffer. |
Protected constructors
SimpleDecoder
protected SimpleDecoder(I[] inputBuffers, O[] outputBuffers)
| Parameters | |
|---|---|
I[] inputBuffers |
An array of nulls that will be used to store references to input buffers. |
O[] outputBuffers |
An array of nulls that will be used to store references to output buffers. |
Public methods
dequeueInputBuffer
public final @Nullable I dequeueInputBuffer()
Dequeues the next input buffer to be filled and queued to the decoder.
| Returns | |
|---|---|
@Nullable I |
The input buffer, which will have been cleared, or null if a buffer isn't available. |
| Throws | |
|---|---|
E |
If a decoder error has occurred. |
androidx.media3.decoder.SimpleDecoder |
dequeueOutputBuffer
public final @Nullable O dequeueOutputBuffer()
Dequeues the next output buffer from the decoder.
| Returns | |
|---|---|
@Nullable O |
The output buffer, or null if an output buffer isn't available. |
| Throws | |
|---|---|
E |
If a decoder error has occurred. |
androidx.media3.decoder.SimpleDecoder |
flush
public final void flush()
Flushes the decoder. Ownership of dequeued input buffers is returned to the decoder. The caller is still responsible for releasing any dequeued output buffers.
queueInputBuffer
public final void queueInputBuffer(I inputBuffer)
Queues an input buffer to the decoder.
| Parameters | |
|---|---|
I inputBuffer |
The input buffer. |
| Throws | |
|---|---|
E |
If a decoder error has occurred. |
androidx.media3.decoder.SimpleDecoder |
release
@CallSuper
public void release()
Releases the decoder. Must be called when the decoder is no longer needed.
setOutputStartTimeUs
public final void setOutputStartTimeUs(long outputStartTimeUs)
Sets the timestamp from which output buffers should be produced, in microseconds.
Any decoded buffer with a timestamp less than outputStartTimeUs should be skipped by the implementation and not made available via dequeueOutputBuffer.
This method must only be called before queuing the first input buffer initially or after flush.
| Parameters | |
|---|---|
long outputStartTimeUs |
The time from which output buffer should be produced, in microseconds. |
Protected methods
createUnexpectedDecodeException
protected abstract E createUnexpectedDecodeException(Throwable error)
Creates an exception to propagate for an unexpected decode error.
| Parameters | |
|---|---|
Throwable error |
The unexpected decode error. |
| Returns | |
|---|---|
E |
The exception to propagate. |
decode
protected abstract @Nullable E decode(I inputBuffer, O outputBuffer, boolean reset)
Decodes the inputBuffer and stores any decoded output in outputBuffer.
| Parameters | |
|---|---|
I inputBuffer |
The buffer to decode. |
O outputBuffer |
The output buffer to store decoded data. The output buffer will not be made available to dequeue if its |
boolean reset |
Whether the decoder must be reset before decoding. |
| Returns | |
|---|---|
@Nullable E |
A decoder exception if an error occurred, or null if decoding was successful. |
isAtLeastOutputStartTimeUs
protected final boolean isAtLeastOutputStartTimeUs(long timeUs)
Returns whether a sample time is greater or equal to the output start time, if set.
If this method returns false, the buffer will not be made available as an output buffer.
| Parameters | |
|---|---|
long timeUs |
The buffer time, in microseconds. |
| Returns | |
|---|---|
boolean |
Whether the buffer time is greater or equal to the output start time, or |
releaseOutputBuffer
@CallSuper
protected void releaseOutputBuffer(O outputBuffer)
Releases an output buffer back to the decoder.
| Parameters | |
|---|---|
O outputBuffer |
The output buffer being released. |
setInitialInputBufferSize
protected final void setInitialInputBufferSize(int size)
Sets the initial size of each input buffer.
This method should only be called before the decoder is used (i.e. before the first call to dequeueInputBuffer.
| Parameters | |
|---|---|
int size |
The required input buffer size. |