@UnstableApi
public interface Decoder<I, O, E extends DecoderException>

Known direct subclasses
ImageDecoder

A Decoder implementation for images.

SimpleDecoder

Base class for Decoders that use their own decode thread and decode each input buffer immediately into a corresponding output buffer.

SubtitleDecoder

Decodes Subtitles from SubtitleInputBuffers.

Known indirect subclasses
BitmapFactoryImageDecoder

An image decoder that uses BitmapFactory to decode images.

Cea608Decoder

A SubtitleDecoder for CEA-608 (also known as "line 21 captions" and "EIA-608").

Cea708Decoder

A SubtitleDecoder for CEA-708 (also known as "EIA-708").

ExternallyLoadedImageDecoder

An ImageDecoder for externally loaded images.

SimpleSubtitleDecoder

Base class for subtitle parsers that use their own decode thread.


A media decoder.

Parameters
<I>

The type of buffer input to the decoder.

<O>

The type of buffer output from the decoder.

<E extends DecoderException>

The type of exception thrown from the decoder.

Summary

Public methods

abstract @Nullable I

Dequeues the next input buffer to be filled and queued to the decoder.

abstract @Nullable O

Dequeues the next output buffer from the decoder.

abstract void

Flushes the decoder.

abstract String

Returns the name of the decoder.

abstract void
queueInputBuffer(I inputBuffer)

Queues an input buffer to the decoder.

abstract void

Releases the decoder.

abstract void
setOutputStartTimeUs(long outputStartTimeUs)

Sets the timestamp from which output buffers should be produced, in microseconds.

Public methods

dequeueInputBuffer

abstract @NullabledequeueInputBuffer()

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.

dequeueOutputBuffer

abstract @NullabledequeueOutputBuffer()

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.

flush

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

getName

abstract String getName()

Returns the name of the decoder.

Returns
String

The name of the decoder.

queueInputBuffer

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

release

abstract void release()

Releases the decoder. Must be called when the decoder is no longer needed.

setOutputStartTimeUs

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