MediaCodec.Callback


public static abstract class MediaCodec.Callback
extends Object

java.lang.Object
   ↳ android.media.MediaCodec.Callback


MediaCodec callback interface. Used to notify the user asynchronously of various MediaCodec events.

Summary

Public constructors

Callback()

Public methods

void onCryptoError(MediaCodec codec, MediaCodec.CryptoException e)

Called only when MediaCodec encountered a crypto(decryption) error when using a decoder configured with CONFIGURE_FLAG_USE_CRYPTO_ASYNC flag along with crypto or descrambler object.

abstract void onError(MediaCodec codec, MediaCodec.CodecException e)

Called when the MediaCodec encountered an error

abstract void onInputBufferAvailable(MediaCodec codec, int index)

Called when an input buffer becomes available.

void onMetricsFlushed(MediaCodec codec, PersistableBundle metrics)

Called when the metrics for this codec have been flushed "mid-stream" due to the start of a new subsession during execution.

abstract void onOutputBufferAvailable(MediaCodec codec, int index, MediaCodec.BufferInfo info)

Called when an output buffer becomes available.

void onOutputBuffersAvailable(MediaCodec codec, int index, ArrayDeque<MediaCodec.BufferInfo> infos)

Called when multiple access-units are available in the output.

abstract void onOutputFormatChanged(MediaCodec codec, MediaFormat format)

Called when the output format has changed

Inherited methods

Public constructors

Callback

public Callback ()

Public methods

onCryptoError

Added in API level 34
public void onCryptoError (MediaCodec codec, 
                MediaCodec.CryptoException e)

Called only when MediaCodec encountered a crypto(decryption) error when using a decoder configured with CONFIGURE_FLAG_USE_CRYPTO_ASYNC flag along with crypto or descrambler object.

Parameters
codec MediaCodec: The MediaCodec object This value cannot be null.

e MediaCodec.CryptoException: The MediaCodec.CryptoException object with error details. This value cannot be null.

onError

Added in API level 21
public abstract void onError (MediaCodec codec, 
                MediaCodec.CodecException e)

Called when the MediaCodec encountered an error

Parameters
codec MediaCodec: The MediaCodec object. This value cannot be null.

e MediaCodec.CodecException: The MediaCodec.CodecException object describing the error. This value cannot be null.

onInputBufferAvailable

Added in API level 21
public abstract void onInputBufferAvailable (MediaCodec codec, 
                int index)

Called when an input buffer becomes available.

Parameters
codec MediaCodec: The MediaCodec object. This value cannot be null.

index int: The index of the available input buffer.

onMetricsFlushed

public void onMetricsFlushed (MediaCodec codec, 
                PersistableBundle metrics)

Called when the metrics for this codec have been flushed "mid-stream" due to the start of a new subsession during execution.

A new codec subsession normally starts when the codec is reconfigured after stop(), but it can also happen mid-stream e.g. if the video size changes. When this happens, the metrics for the previous subsession are flushed, and MediaCodec.getMetrics will return the metrics for the new subsession.

For subsessions that begin due to a reconfiguration, the metrics for the prior subsession can be retrieved via MediaCodec.getMetrics prior to calling MediaCodec.configure(MediaFormat, Surface, MediaCrypto, int).

When a new subsession begins "mid-stream", the metrics for the prior subsession are flushed just before the Callback.onOutputFormatChanged event, so this optional callback is provided to be able to capture the final metrics for the previous subsession.

Parameters
codec MediaCodec: The MediaCodec object. This value cannot be null.

metrics PersistableBundle: The flushed metrics for this codec. This is a PersistableBundle containing the set of attributes and values available for the media being handled by this instance of MediaCodec. The attributes are described in MetricsConstants. Additional vendor-specific fields may also be present. This value cannot be null.

onOutputBufferAvailable

Added in API level 21
public abstract void onOutputBufferAvailable (MediaCodec codec, 
                int index, 
                MediaCodec.BufferInfo info)

Called when an output buffer becomes available.

Parameters
codec MediaCodec: The MediaCodec object. This value cannot be null.

index int: The index of the available output buffer.

info MediaCodec.BufferInfo: Info regarding the available output buffer MediaCodec.BufferInfo. This value cannot be null.

onOutputBuffersAvailable

Added in API level 35
public void onOutputBuffersAvailable (MediaCodec codec, 
                int index, 
                ArrayDeque<MediaCodec.BufferInfo> infos)

Called when multiple access-units are available in the output.

Parameters
codec MediaCodec: The MediaCodec object. This value cannot be null.

index int: The index of the available output buffer.

infos ArrayDeque: Infos describing the available output buffer MediaCodec.BufferInfo. Access units present in the output buffer are laid out contiguously without gaps and in order. This value cannot be null.

onOutputFormatChanged

Added in API level 21
public abstract void onOutputFormatChanged (MediaCodec codec, 
                MediaFormat format)

Called when the output format has changed

Parameters
codec MediaCodec: The MediaCodec object. This value cannot be null.

format MediaFormat: The new output format. This value cannot be null.