# CapturingRenderersFactory.CapturingMediaCodecVideoRenderer

Artifact: [androidx.media3:media3-test-utils-robolectric](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/test/utils/robolectric/CapturingRenderersFactory.java+class:androidx.media3.test.utils.robolectric.CapturingRenderersFactory.CapturingMediaCodecVideoRenderer)

*** ** * ** ***


```
protected class CapturingRenderersFactory.CapturingMediaCodecVideoRenderer extends MediaCodecVideoRenderer
```

<br />

|---|---|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||||
| ↳ | [androidx.media3.exoplayer.BaseRenderer](https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer) ||||
|   | ↳ | [androidx.media3.exoplayer.mediacodec.MediaCodecRenderer](https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer) |||
|   |   | ↳ | [androidx.media3.exoplayer.video.MediaCodecVideoRenderer](https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer) ||
|   |   |   | ↳ | [androidx.media3.test.utils.robolectric.CapturingRenderersFactory.CapturingMediaCodecVideoRenderer](https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory.CapturingMediaCodecVideoRenderer) |

*** ** * ** ***

A `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer` that will not skip or drop buffers due to slow processing.

## Summary

| ### Protected constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory.CapturingMediaCodecVideoRenderer#CapturingMediaCodecVideoRenderer(android.content.Context,androidx.media3.exoplayer.mediacodec.MediaCodecAdapter.Factory,androidx.media3.exoplayer.mediacodec.MediaCodecSelector,long,boolean,android.os.Handler,androidx.media3.exoplayer.video.VideoRendererEventListener,int)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Factory codecAdapterFactory, https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector mediaCodecSelector, long allowedJoiningTimeMs, boolean enableDecoderFallback, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/os/Handler.html eventHandler, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/video/VideoRendererEventListener eventListener, int maxDroppedFramesToNotify )` |

| ### Protected methods |
|---|---|
| `boolean` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory.CapturingMediaCodecVideoRenderer#shouldDropBuffersToKeyframe(long,long,boolean)( long earlyUs, long elapsedRealtimeUs, boolean isLastBuffer )` Returns whether to drop all buffers from the buffer being processed to the keyframe at or after the current playback position, if possible. |
| `boolean` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory.CapturingMediaCodecVideoRenderer#shouldDropOutputBuffer(long,long,boolean)( long earlyUs, long elapsedRealtimeUs, boolean isLastBuffer )` Returns whether the buffer being processed should be dropped. |

### Inherited Constants

From [androidx.media3.exoplayer.mediacodec.MediaCodecRenderer](https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer) `static final float` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#CODEC_OPERATING_RATE_UNSET() = -1.0f`

Indicates no codec operating rate should be set.
`static final boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#DEBUG_LOG_ENABLED() = false`

Compile-time flag to enable detailed logging for codec interactions.
`static final https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#DEBUG_LOG_TAG() = "MCRdebug"`

Logging tag that should be used for all `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#DEBUG_LOG_ENABLED()` logs.
From [androidx.media3.exoplayer.video.MediaCodecVideoRenderer](https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer) `static final long` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#DEFAULT_EARLY_SCHEDULING_THRESHOLD_US() = 50000`

The maximum earliest time, in microseconds, to release a video frame on a surface.
`static final long` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#DEFAULT_LATE_THRESHOLD_TO_DROP_DECODER_INPUT_US() = 15000`

The default late threshold for rendered output buffers, in microseconds, after which decoder input buffers may be dropped.
From [androidx.media3.exoplayer.Renderer](https://developer.android.com/reference/androidx/media3/exoplayer/Renderer) `static final long` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#DEFAULT_DURATION_TO_PROGRESS_US() = 10000`

Default minimum duration that the playback clock must advance before `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#render(long,long)` can make progress.
`static final long` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#DEFAULT_IDLE_DURATION_TO_PROGRESS_US() = 1000000`

Default duration to progress reported if the renderer does not need calls to `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#render(long,long)` to progress, if it's in `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#STATE_ENABLED()` and already `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#isReady()` or `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#isEnded()`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_CUSTOM_BASE() = 10000`

Applications or extensions may define custom `MSG_*` constants that can be passed to renderers.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_AUDIO_ATTRIBUTES() = 3`

A type of a message that can be passed to an audio renderer via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_AUDIO_OUTPUT_PROVIDER() = 20`

The type of a message that can be passed to audio renderers via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_AUDIO_SESSION_ID() = 10`

The type of a message that can be passed to audio and video renderers via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_AUX_EFFECT_INFO() = 6`

A type of a message that can be passed to an audio renderer via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_CAMERA_MOTION_LISTENER() = 8`

The type of a message that can be passed to a camera motion renderer via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_CHANGE_FRAME_RATE_STRATEGY() = 5`

The type of a message that can be passed to a video renderer via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_CODEC_PARAMETERS() = 21`

The type of a message that can be passed to renderers via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_IMAGE_METADATA_LISTENER() = 23`

The type of a message that can be passed to an image renderer via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_IMAGE_OUTPUT() = 15`

The type of message that can be passed to an image renderer to set a desired image output.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_PREFERRED_AUDIO_DEVICE() = 12`

The type of a message that can be passed to audio renderers via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_PRIORITY() = 16`

The type of message that can be passed to a renderer to set its priority.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_SCALING_MODE() = 4`

The type of a message that can be passed to a `https://developer.android.com/reference/android/media/MediaCodec.html`-based video renderer via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_SCRUBBING_MODE() = 18`

The type of message that can be passed to a renderer to direct it to enable or disable scrubbing mode.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_SKIP_SILENCE_ENABLED() = 9`

The type of a message that can be passed to an audio renderer via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_SUBSCRIBED_CODEC_PARAMETER_KEYS() = 22`

A message to set the keys for which a renderer should report parameter changes.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_VIDEO_EFFECTS() = 13`

The type of a message that can be passed to a video renderer.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_VIDEO_FRAME_METADATA_LISTENER() = 7`

The type of a message that can be passed to a video renderer via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_VIDEO_OUTPUT() = 1`

The type of a message that can be passed to a video renderer via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_VIDEO_OUTPUT_RESOLUTION() = 14`

The type of a message that can be passed to a video renderer to set the desired output resolution.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_VIRTUAL_DEVICE_ID() = 19`

The type of a message that can be passed to audio renderers via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_VOLUME() = 2`

A type of a message that can be passed to an audio renderer via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_SET_WAKEUP_LISTENER() = 11`

The type of a message that can be passed to a `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` via `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer#createMessage(androidx.media3.exoplayer.PlayerMessage.Target)`, to inform the renderer that it can schedule waking up another component.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#MSG_TRANSFER_RESOURCES() = 17`

The type of message that can be passed to a renderer to direct it to transfer relevant resources to another renderer.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#STATE_DISABLED() = 0`

The renderer is disabled.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#STATE_ENABLED() = 1`

The renderer is enabled but not started.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#STATE_STARTED() = 2`

The renderer is started.
From [androidx.media3.exoplayer.RendererCapabilities](https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities) `static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#ADAPTIVE_NOT_SEAMLESS() = 8`

The `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` can adapt between formats, but may suffer a brief discontinuity (\~50-100ms) when adaptation occurs.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#ADAPTIVE_NOT_SUPPORTED() = 0`

The `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` does not support adaptation between formats.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#ADAPTIVE_SEAMLESS() = 16`

The `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` can seamlessly adapt between formats.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#ADAPTIVE_SUPPORT_MASK() = 24`

A mask to apply to `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities` to obtain the `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AdaptiveSupport` only.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#AUDIO_OFFLOAD_GAPLESS_SUPPORTED() = 1024`

The renderer supports audio offload and gapless transitions with this format.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#AUDIO_OFFLOAD_NOT_SUPPORTED() = 0`

Audio offload is not supported with this format.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#AUDIO_OFFLOAD_SPEED_CHANGE_SUPPORTED() = 2048`

The renderer supports audio offload and speed changes with this format.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#AUDIO_OFFLOAD_SUPPORTED() = 512`

The renderer supports audio offload with this format.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#AUDIO_OFFLOAD_SUPPORT_MASK() = 3584`

A mask to apply to `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities` to obtain `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AudioOffloadSupport` only.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#DECODER_SUPPORT_FALLBACK() = 0`

The format exceeds the primary decoder's capabilities but is supported by fallback decoder
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#DECODER_SUPPORT_FALLBACK_MIMETYPE() = 256`

The format's MIME type is unsupported and the renderer may use a decoder for a fallback MIME type.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#DECODER_SUPPORT_MASK() = 384`

A mask to apply to `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities` to obtain `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.DecoderSupport` only.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#DECODER_SUPPORT_PRIMARY() = 128`

The renderer is able to use the primary decoder for the format's MIME type.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#FORMAT_SUPPORT_MASK() = 7`

A mask to apply to `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities` to obtain the `https://developer.android.com/reference/androidx/media3/common/C.FormatSupport` only.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#HARDWARE_ACCELERATION_NOT_SUPPORTED() = 0`

The renderer is not able to use hardware acceleration.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#HARDWARE_ACCELERATION_SUPPORTED() = 64`

The renderer is able to use hardware acceleration.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#HARDWARE_ACCELERATION_SUPPORT_MASK() = 64`

A mask to apply to `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities` to obtain `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.HardwareAccelerationSupport` only.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#TUNNELING_NOT_SUPPORTED() = 0`

The `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` does not support tunneled output.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#TUNNELING_SUPPORTED() = 32`

The `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` supports tunneled output.
`static final int` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#TUNNELING_SUPPORT_MASK() = 32`

A mask to apply to `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities` to obtain `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.TunnelingSupport` only.

### Inherited fields

From [androidx.media3.exoplayer.BaseRenderer](https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer) `@https://checkerframework.org/api/org/checkerframework/checker/nullness/qual/MonotonicNonNull.html https://developer.android.com/reference/androidx/media3/common/util/Clock` `@https://checkerframework.org/api/org/checkerframework/checker/nullness/qual/MonotonicNonNull.html
https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#clock()` `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/RendererConfiguration` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#configuration()` `final https://developer.android.com/reference/androidx/media3/exoplayer/FormatHolder` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#formatHolder()` `int` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#index()` `long` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#lastResetPositionUs()` `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#mediaPeriodId()` `@https://checkerframework.org/api/org/checkerframework/checker/nullness/qual/MonotonicNonNull.html https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId` `@https://checkerframework.org/api/org/checkerframework/checker/nullness/qual/MonotonicNonNull.html
https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#playerId()` `long` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#readingPositionUs()` `int` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#state()` `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#stream()` `long` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#streamEndPositionUs()` `@https://developer.android.com/reference/androidx/annotation/Nullable Format[]` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#streamFormats()` `long` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#streamOffsetUs()` `https://developer.android.com/reference/androidx/media3/common/Timeline` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#timeline()` `final int` `@https://developer.android.com/reference/androidx/media3/common/C.TrackType
https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#trackType()` From [androidx.media3.exoplayer.mediacodec.MediaCodecRenderer](https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer) `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#codec()` `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecInfo` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#codecInfo()` `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/Format` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#codecInputFormat()` `float` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#codecOperatingRate()` `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/media/MediaFormat.html` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#codecOutputMediaFormat()` `https://developer.android.com/reference/androidx/media3/exoplayer/DecoderCounters` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#decoderCounters()` `long` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#largestQueuedPresentationTimeUs()` `long` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#lastProcessedOutputBufferTimeUs()` `long` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#skippedFlushOffsetUs()` `@https://checkerframework.org/api/org/checkerframework/checker/nullness/qual/MonotonicNonNull.html https://developer.android.com/reference/androidx/media3/exoplayer/Renderer.WakeupListener` `@https://checkerframework.org/api/org/checkerframework/checker/nullness/qual/MonotonicNonNull.html
https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#wakeupListener()`

### Inherited methods

From [androidx.media3.exoplayer.BaseRenderer](https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer) `final void` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#clearListener()()`

Clears the `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Listener`.
`final https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#createRendererException(java.lang.Throwable,androidx.media3.common.Format,int)(
https://developer.android.com/reference/java/lang/Throwable.html cause,
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/Format format,
@https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode
)`

Creates an `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException` of type `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER()` for this renderer.
`final https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#createRendererException(java.lang.Throwable,androidx.media3.common.Format,boolean,int)(
https://developer.android.com/reference/java/lang/Throwable.html cause,
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/Format format,
boolean isRecoverable,
@https://developer.android.com/reference/androidx/media3/common/PlaybackException.ErrorCode int errorCode
)`

Creates an `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException` of type `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException#TYPE_RENDERER()` for this renderer.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#disable()()`

Disable the renderer, transitioning it to the `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#STATE_DISABLED()` state.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#enable(androidx.media3.exoplayer.RendererConfiguration,androidx.media3.common.Format[],androidx.media3.exoplayer.source.SampleStream,long,boolean,boolean,long,long,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)(
https://developer.android.com/reference/androidx/media3/exoplayer/RendererConfiguration configuration,
Format[] formats,
https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream stream,
long positionUs,
boolean joining,
boolean mayRenderStartOfStream,
long startPositionUs,
long offsetUs,
https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId
)`

Enables the renderer to consume from the specified `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream`.
`final https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getCapabilities()()`

Returns the capabilities of the renderer.
`final https://developer.android.com/reference/androidx/media3/common/util/Clock` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getClock()()`

Returns the `https://developer.android.com/reference/androidx/media3/common/util/Clock`.
`final https://developer.android.com/reference/androidx/media3/exoplayer/RendererConfiguration` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getConfiguration()()`

Returns the configuration set when the renderer was most recently enabled.
`final https://developer.android.com/reference/androidx/media3/exoplayer/FormatHolder` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getFormatHolder()()`

Returns a clear `https://developer.android.com/reference/androidx/media3/exoplayer/FormatHolder`.
`final int` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getIndex()()`

Returns the index of the renderer within the player.
`final long` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getLastResetPositionUs()()`

Returns the position passed to the most recent call to `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#enable(androidx.media3.exoplayer.RendererConfiguration,androidx.media3.common.Format[],androidx.media3.exoplayer.source.SampleStream,long,boolean,boolean,long,long,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)` or `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#resetPosition(long,boolean)`.
`@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/MediaClock` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getMediaClock()()`

If the renderer advances its own playback position then this method returns a corresponding `https://developer.android.com/reference/androidx/media3/exoplayer/MediaClock`.
`final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getMediaPeriodId()()`

The `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId` of the `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` producing the `stream`, or `null` if the renderer is disabled.
`final https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getPlayerId()()`

Returns the `https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId` of the player using this renderer.
`final long` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getReadingPositionUs()()`

Returns the renderer time up to which the renderer has read samples, in microseconds, or `https://developer.android.com/reference/androidx/media3/common/C#TIME_END_OF_SOURCE()` if the renderer has read the current `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream` to the end.
`final int` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getState()()`

Returns the current state of the renderer.
`final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getStream()()`

Returns the `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream` being consumed, or null if the renderer is disabled.
`final long` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getStreamEndPositionUs()()`

Returns the end position of the content or ad period producing the stream, in microseconds, or `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()` if unknown.
`final Format[]` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getStreamFormats()()`

Returns the formats of the currently enabled stream.
`final long` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getStreamOffsetUs()()`

Returns the offset added to timestamps of buffers read from the `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream`.
`final https://developer.android.com/reference/androidx/media3/common/Timeline` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getTimeline()()`

Returns the current `https://developer.android.com/reference/androidx/media3/common/Timeline` containing the rendered stream.
`final int` `@https://developer.android.com/reference/androidx/media3/common/C.TrackType
https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#getTrackType()()`

Returns the track type that the renderer handles.
`final boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#hasReadStreamToEnd()()`

Returns whether the renderer has read the current `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream` to the end.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#init(int,androidx.media3.exoplayer.analytics.PlayerId,androidx.media3.common.util.Clock)(int index, https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId playerId, https://developer.android.com/reference/androidx/media3/common/util/Clock clock)`

Initializes the renderer for playback with a player.
`final boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#isCurrentStreamFinal()()`

Returns whether the current `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream` will be the final one supplied before the renderer is next disabled or reset.
`final boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#isSourceReady()()`

Returns whether the upstream source is ready.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#maybeThrowStreamError()()`

Throws an error that's preventing the renderer from reading from its `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream`.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#onRendererCapabilitiesChanged()()`

Called when the renderer capabilities are changed.
`final int` `@https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream.ReadDataResult
https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#readSource(androidx.media3.exoplayer.FormatHolder,androidx.media3.decoder.DecoderInputBuffer,int)(
https://developer.android.com/reference/androidx/media3/exoplayer/FormatHolder formatHolder,
https://developer.android.com/reference/androidx/media3/decoder/DecoderInputBuffer buffer,
@https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream.ReadFlags int readFlags
)`

Reads from the enabled upstream source.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#release()()`

Releases the renderer.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#replaceStream(androidx.media3.common.Format[],androidx.media3.exoplayer.source.SampleStream,long,long,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)(
Format[] formats,
https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream stream,
long startPositionUs,
long offsetUs,
https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId
)`

Replaces the `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream` from which samples will be consumed.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#reset()()`

Forces the renderer to give up any resources (e.g. media decoders) that it may be holding.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#resetPosition(long,boolean)(long positionUs, boolean sampleStreamIsResetToKeyFrame)`

Signals to the renderer that a position discontinuity has occurred.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#setCurrentStreamFinal()()`

Signals to the renderer that the current `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream` will be the final one supplied before it is next disabled or reset.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#setListener(androidx.media3.exoplayer.RendererCapabilities.Listener)(https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Listener listener)`

Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Listener`.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#setTimeline(androidx.media3.common.Timeline)(https://developer.android.com/reference/androidx/media3/common/Timeline timeline)`

Sets the timeline that is currently being played.
`int` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#skipSource(long)(long positionUs)`

Attempts to skip to the keyframe before the specified position, or to the end of the stream if `positionUs` is beyond it.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#start()()`

Starts the renderer, meaning that calls to `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#render(long,long)` will cause media to be rendered.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#stop()()`

Stops the renderer, transitioning it to the `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#STATE_ENABLED()` state.
From [androidx.media3.exoplayer.mediacodec.MediaCodecRenderer](https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer) `final void` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#applyCodecParametersToMediaFormat(android.media.MediaFormat)(https://developer.android.com/reference/android/media/MediaFormat.html mediaFormat)`

Applies the currently active `https://developer.android.com/reference/androidx/media3/exoplayer/CodecParameters` to the given `https://developer.android.com/reference/android/media/MediaFormat.html`.
`final boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#flushOrReinitializeCodec()()`

Flushes the codec.
`final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#getCodec()()` `final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecInfo` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#getCodecInfo()()` `final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/Format` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#getCodecInputFormat()()` `float` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#getCodecOperatingRate()()`

Returns the operating rate used by the current codec
`final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/media/MediaFormat.html` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#getCodecOutputMediaFormat()()` `final long` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#getDurationToProgressUs(long,long)(long positionUs, long elapsedRealtimeUs)`

Returns minimum amount of playback clock time that must pass from `elapsedRealtimeUs` in order for the `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#render(long,long)` call to make progress.
`long` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#getLargestQueuedPresentationTimeUs()()`

Returns the largest presentation time of a buffer queued to the decoder.
`long` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#getLastBufferInStreamPresentationTimeUs()()`

Returns the presentation time of the last buffer in the stream.
`final long` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#getLastProcessedOutputBufferTimeUs()()`

Returns the presentation time of the last output buffer processed.
`final long` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#getOutputStreamOffsetUs()()`

Returns the offset that should be subtracted from `bufferPresentationTimeUs` in `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#processOutputBuffer(long,long,androidx.media3.exoplayer.mediacodec.MediaCodecAdapter,java.nio.ByteBuffer,int,int,int,long,boolean,boolean,androidx.media3.common.Format)` to get the playback position with respect to the media.
`final long` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#getOutputStreamStartPositionUs()()`

Returns the start position of the current output stream in microseconds.
`float` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#getPlaybackSpeed()()`

Returns the current playback speed, as set by `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#setPlaybackSpeed(float,float)`.
`long` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#getSkippedFlushOffsetUs()()`

Returns the offset added to buffer timestamps prior to decoding.
`final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/Renderer.WakeupListener` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#getWakeupListener()()`

Returns listener used to signal that `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#render(long,long)` should be called.
`final boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#isBypassEnabled()()`

Returns whether bypass is enabled by the renderer.
`final boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#isBypassPossible(androidx.media3.common.Format)(https://developer.android.com/reference/androidx/media3/common/Format format)`

Returns whether buffers in the input format can be processed without a codec.
`final boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#isReadyForDecoding()()`

Returns whether the renderer is ready to start or continue decoding.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#maybeInitCodecOrBypass()()` `void` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#onOutputStreamOffsetUsChanged(long)(long outputStreamOffsetUs)`

Called after the output stream offset changes.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#onTimelineChanged(androidx.media3.common.Timeline)(https://developer.android.com/reference/androidx/media3/common/Timeline timeline)`

Called when a new timeline is `https://developer.android.com/reference/androidx/media3/exoplayer/BaseRenderer#setTimeline(androidx.media3.common.Timeline)`.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#releaseCodec()()` `void` `@https://developer.android.com/reference/androidx/annotation/CallSuper
https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#resetCodecStateForRelease()()`

Resets the renderer internal state after a codec release.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#setPendingOutputEndOfStream()()`

Notifies the renderer that output end of stream is pending and should be handled on the next render.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#setPendingPlaybackException(androidx.media3.exoplayer.ExoPlaybackException)(https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlaybackException exception)`

Sets an exception to be re-thrown by render.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#setRenderTimeLimitMs(long)(long renderTimeLimitMs)`

Sets a limit on the time a single `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#render(long,long)` call can spend draining and filling the decoder.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#shouldReinitCodec()()`

Returns whether the renderer needs to re-initialize the codec, possibly as a result of a change in device capabilities.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#shouldSkipDecoderInputBuffer(androidx.media3.decoder.DecoderInputBuffer)(https://developer.android.com/reference/androidx/media3/decoder/DecoderInputBuffer buffer)`

Returns whether the input buffer should be skipped before the decoder.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#shouldUseBypass(androidx.media3.common.Format)(https://developer.android.com/reference/androidx/media3/common/Format format)`

Returns whether buffers in the input format can be processed without a codec.
`final int` `@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities
https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#supportsFormat(androidx.media3.common.Format)(https://developer.android.com/reference/androidx/media3/common/Format format)`

Returns the extent to which the `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` supports a given format.
`abstract int` `@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities
https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#supportsFormat(androidx.media3.exoplayer.mediacodec.MediaCodecSelector,androidx.media3.common.Format)(https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector mediaCodecSelector, https://developer.android.com/reference/androidx/media3/common/Format format)`

Returns the `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities` for the given `https://developer.android.com/reference/androidx/media3/common/Format`.
`static boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#supportsFormatDrm(androidx.media3.common.Format)(https://developer.android.com/reference/androidx/media3/common/Format format)`

Returns whether this renderer supports the given `https://developer.android.com/reference/androidx/media3/common/Format` DRM scheme.
`final int` `@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AdaptiveSupport
https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#supportsMixedMimeTypeAdaptation()()`

Returns the extent to which the `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` supports adapting between supported formats that have different MIME types.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#updateCodecOperatingRate()()`

Updates the codec operating rate.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#updateOutputFormatForTime(long)(long presentationTimeUs)`

Updates the output formats for the specified output buffer timestamp, calling `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#onOutputFormatChanged(androidx.media3.common.Format,android.media.MediaFormat)` if a change has occurred.
From [androidx.media3.exoplayer.video.MediaCodecVideoRenderer](https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer) `https://developer.android.com/reference/androidx/media3/exoplayer/DecoderReuseEvaluation` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#canReuseCodec(androidx.media3.exoplayer.mediacodec.MediaCodecInfo,androidx.media3.common.Format,androidx.media3.common.Format,boolean)(
https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecInfo codecInfo,
https://developer.android.com/reference/androidx/media3/common/Format oldFormat,
https://developer.android.com/reference/androidx/media3/common/Format newFormat,
boolean isAdaptiveFormatChange
)`

Evaluates whether the existing `https://developer.android.com/reference/android/media/MediaCodec.html` can be kept for a new `https://developer.android.com/reference/androidx/media3/common/Format`, and if it can, whether it requires reconfiguration.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#changeVideoSinkInputStream(androidx.media3.exoplayer.video.VideoSink,int,androidx.media3.common.Format,int)(
https://developer.android.com/reference/androidx/media3/exoplayer/video/VideoSink videoSink,
@https://developer.android.com/reference/androidx/media3/exoplayer/video/VideoSink.InputType int inputType,
https://developer.android.com/reference/androidx/media3/common/Format format,
@https://developer.android.com/reference/androidx/media3/exoplayer/video/VideoSink.FirstFrameReleaseInstruction int firstFrameReleaseInstruction
)`

Called when ready to `https://developer.android.com/reference/androidx/media3/exoplayer/video/VideoSink#onInputStreamChanged(int,androidx.media3.common.Format,long,int,java.util.List<androidx.media3.common.Effect>)` the input stream.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#codecNeedsSetOutputSurfaceWorkaround(java.lang.String)(https://developer.android.com/reference/java/lang/String.html name)`

Returns whether the codec is known to implement `https://developer.android.com/reference/android/media/MediaCodec.html#setOutputSurface(android.view.Surface)` incorrectly.
`https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecDecoderException` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#createDecoderException(java.lang.Throwable,androidx.media3.exoplayer.mediacodec.MediaCodecInfo)(
https://developer.android.com/reference/java/lang/Throwable.html cause,
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecInfo codecInfo
)` `void` `@https://developer.android.com/reference/androidx/annotation/RequiresApi(value = 35)
https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#detachOutputSurfaceV35(androidx.media3.exoplayer.mediacodec.MediaCodecAdapter)(https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter codec)` `void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#dropOutputBuffer(androidx.media3.exoplayer.mediacodec.MediaCodecAdapter,int,long)(
https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter codec,
int index,
long presentationTimeUs
)`

Drops the output buffer with the specified index.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#enableMayRenderStartOfStream()()`

Enables this renderer to render the start of the stream even if the state is not `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#STATE_STARTED()` yet.
`void` `@https://developer.android.com/reference/androidx/media3/common/util/ExperimentalApi
https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#experimentalDisableAdvancingTimestampChecksInVideoFrameReleaseControl()()`

Experimental setter to ignore the checks for advancing timestamps before checking whether a late frame needs to be force released.
`long` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#getBufferTimestampAdjustmentUs()()`

Returns the timestamp that is added to the buffer presentation time (the player decoding position) to get the frame presentation time, in microseconds.
`int` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#getCodecBufferFlags(androidx.media3.decoder.DecoderInputBuffer)(https://developer.android.com/reference/androidx/media3/decoder/DecoderInputBuffer buffer)`

Returns the flags that should be set on `https://developer.android.com/reference/android/media/MediaCodec.html#queueInputBuffer(int, int, int, long, int)` or `https://developer.android.com/reference/android/media/MediaCodec.html#queueSecureInputBuffer(int, int, android.media.MediaCodec.CryptoInfo, long, int)` for this buffer.
`static int` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#getCodecMaxInputSize(androidx.media3.exoplayer.mediacodec.MediaCodecInfo,androidx.media3.common.Format)(https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecInfo codecInfo, https://developer.android.com/reference/androidx/media3/common/Format format)`

Returns a maximum input size for a given codec and format.
`https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.CodecMaxValues` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#getCodecMaxValues(androidx.media3.exoplayer.mediacodec.MediaCodecInfo,androidx.media3.common.Format,androidx.media3.common.Format[])(
https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecInfo codecInfo,
https://developer.android.com/reference/androidx/media3/common/Format format,
Format[] streamFormats
)`

Returns `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.CodecMaxValues` suitable for configuring a codec for `format` in a way that will allow possible adaptation to other compatible formats in `streamFormats`.
`float` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#getCodecOperatingRateV23(float,androidx.media3.common.Format,androidx.media3.common.Format[])(
float targetPlaybackSpeed,
https://developer.android.com/reference/androidx/media3/common/Format format,
Format[] streamFormats
)`

Returns the `https://developer.android.com/reference/android/media/MediaFormat.html#KEY_OPERATING_RATE` value for a given playback speed, current `https://developer.android.com/reference/androidx/media3/common/Format` and set of possible stream formats.
`https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecInfo>` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#getDecoderInfos(androidx.media3.exoplayer.mediacodec.MediaCodecSelector,androidx.media3.common.Format,boolean)(
https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector mediaCodecSelector,
https://developer.android.com/reference/androidx/media3/common/Format format,
boolean requiresSecureDecoder
)`

Returns a list of decoders that can decode media in the specified format, in priority order.
`long` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#getDurationToProgressUs(long,long,boolean)(
long positionUs,
long elapsedRealtimeUs,
boolean isOnBufferAvailableListenerRegistered
)`

Returns minimum time playback must advance in order for the `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#render(long,long)` call to make progress.
`static int` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#getMaxInputSize(androidx.media3.exoplayer.mediacodec.MediaCodecInfo,androidx.media3.common.Format)(https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecInfo codecInfo, https://developer.android.com/reference/androidx/media3/common/Format format)`

Returns a maximum input buffer size for a given `https://developer.android.com/reference/android/media/MediaCodec.html` and `https://developer.android.com/reference/androidx/media3/common/Format`.
`https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Configuration` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#getMediaCodecConfiguration(androidx.media3.exoplayer.mediacodec.MediaCodecInfo,androidx.media3.common.Format,android.media.MediaCrypto,float)(
https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecInfo codecInfo,
https://developer.android.com/reference/androidx/media3/common/Format format,
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/media/MediaCrypto.html crypto,
float codecOperatingRate
)`

Returns the `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Configuration` that will be used to create and configure a `https://developer.android.com/reference/android/media/MediaCodec.html` to decode the given `https://developer.android.com/reference/androidx/media3/common/Format` for a playback.
`https://developer.android.com/reference/android/media/MediaFormat.html` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#getMediaFormat(androidx.media3.common.Format,java.lang.String,androidx.media3.exoplayer.video.MediaCodecVideoRenderer.CodecMaxValues,float,boolean,int)(
https://developer.android.com/reference/androidx/media3/common/Format format,
https://developer.android.com/reference/java/lang/String.html codecMimeType,
https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.CodecMaxValues codecMaxValues,
float codecOperatingRate,
boolean deviceNeedsNoPostProcessWorkaround,
int tunnelingAudioSessionId
)`

Returns the framework `https://developer.android.com/reference/android/media/MediaFormat.html` that should be used to configure the decoder.
`https://developer.android.com/reference/java/lang/String.html` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#getName()()`

Returns the name of this renderer, for logging and debugging purposes.
`@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/view/Surface.html` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#getSurface()()`

Returns the output surface.
`void` `@https://developer.android.com/reference/android/annotation/TargetApi.html(value = 29)
https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#handleInputBufferSupplementalData(androidx.media3.decoder.DecoderInputBuffer)(https://developer.android.com/reference/androidx/media3/decoder/DecoderInputBuffer buffer)`

Handles supplemental data associated with an input buffer.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#handleMessage(int,java.lang.Object)(
@https://developer.android.com/reference/androidx/media3/exoplayer/Renderer.MessageType int messageType,
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/Object.html message
)`

Handles a message delivered to the target.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#isEnded()()`

Whether the renderer is ready for the `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` instance to transition to `https://developer.android.com/reference/androidx/media3/common/Player#STATE_ENDED()`.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#isReady()()`

Whether the renderer is able to immediately render media from the current position.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#maybeDropBuffersToKeyframe(long,boolean)(
long positionUs,
boolean treatDroppedBuffersAsSkipped
)`

Drops frames from the current output buffer to the next keyframe at or before the playback position.
`boolean` `@https://developer.android.com/reference/androidx/annotation/CallSuper
https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#maybeInitializeProcessingPipeline(androidx.media3.common.Format)(https://developer.android.com/reference/androidx/media3/common/Format format)`

Initializes the processing pipeline, if needed by the implementation.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onCodecError(java.lang.Exception)(https://developer.android.com/reference/java/lang/Exception.html codecError)`

Called when a codec error has occurred.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onCodecInitialized(java.lang.String,androidx.media3.exoplayer.mediacodec.MediaCodecAdapter.Configuration,long,long)(
https://developer.android.com/reference/java/lang/String.html name,
https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Configuration configuration,
long initializedTimestampMs,
long initializationDurationMs
)`

Called when a `https://developer.android.com/reference/android/media/MediaCodec.html` has been created and configured.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onCodecParametersChanged(androidx.media3.exoplayer.CodecParameters)(https://developer.android.com/reference/androidx/media3/exoplayer/CodecParameters codecParameters)`

Called when one or more of the subscribed codec parameters have changed.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onCodecReleased(java.lang.String)(https://developer.android.com/reference/java/lang/String.html name)`

Called when a `https://developer.android.com/reference/android/media/MediaCodec.html` has been released.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onDisabled()()`

Called when the renderer is disabled.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onEnabled(boolean,boolean)(boolean joining, boolean mayRenderStartOfStream)`

Called when the renderer is enabled.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onInit()()`

Called when the renderer is initialized.
`@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/DecoderReuseEvaluation` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onInputFormatChanged(androidx.media3.exoplayer.FormatHolder)(https://developer.android.com/reference/androidx/media3/exoplayer/FormatHolder formatHolder)`

Called when a new `https://developer.android.com/reference/androidx/media3/common/Format` is read from the upstream `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod`.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onOutputFormatChanged(androidx.media3.common.Format,android.media.MediaFormat)(https://developer.android.com/reference/androidx/media3/common/Format format, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/media/MediaFormat.html mediaFormat)`

Called when one of the output formats changes.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onPositionReset(long,boolean,boolean)(
long positionUs,
boolean joining,
boolean sampleStreamIsResetToKeyFrame
)`

Called when the position is reset.
`void` `@https://developer.android.com/reference/androidx/annotation/CallSuper
https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onProcessedOutputBuffer(long)(long presentationTimeUs)`

Called when an output buffer is successfully processed.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onProcessedStreamChange()()`

Called after the last output buffer before a stream change has been processed.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onProcessedTunneledBuffer(long)(long presentationTimeUs)`

Called when a buffer was processed in tunneling mode.
`void` `@https://developer.android.com/reference/androidx/annotation/CallSuper
https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onQueueInputBuffer(androidx.media3.decoder.DecoderInputBuffer)(https://developer.android.com/reference/androidx/media3/decoder/DecoderInputBuffer buffer)`

Called immediately before an input buffer is queued into the codec.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onRelease()()`

Called when the renderer is released.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onReset()()`

Called when the renderer is reset.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onStarted()()`

Called when the renderer is started.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onStopped()()`

Called when the renderer is stopped.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#onStreamChanged(androidx.media3.common.Format[],long,long,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)(
Format[] formats,
long startPositionUs,
long offsetUs,
https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId
)`

Called when the renderer's stream has changed.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#processOutputBuffer(long,long,androidx.media3.exoplayer.mediacodec.MediaCodecAdapter,java.nio.ByteBuffer,int,int,int,long,boolean,boolean,androidx.media3.common.Format)(
long positionUs,
long elapsedRealtimeUs,
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter codec,
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/nio/ByteBuffer.html buffer,
int bufferIndex,
int bufferFlags,
int sampleCount,
long bufferPresentationTimeUs,
boolean isDecodeOnlyBuffer,
boolean isLastBuffer,
https://developer.android.com/reference/androidx/media3/common/Format format
)`

Processes an output media buffer.
`void` `@https://developer.android.com/reference/androidx/annotation/CallSuper
https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#render(long,long)(long positionUs, long elapsedRealtimeUs)`

Incrementally renders the `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream`.
`void` `[renderOutputBuffer](https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#renderOutputBuffer(androidx.media3.exoplayer.mediacodec.MediaCodecAdapter,int,long))(
https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter codec,
int index,
long presentationTimeUs
)`

**This method is deprecated.**

Override `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#renderOutputBufferV21(androidx.media3.exoplayer.mediacodec.MediaCodecAdapter,int,long,long)` instead.

<br />

`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#renderOutputBufferV21(androidx.media3.exoplayer.mediacodec.MediaCodecAdapter,int,long,long)(
https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter codec,
int index,
long presentationTimeUs,
long releaseTimeNs
)`

Renders the output buffer with the specified index.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#renderToEndOfStream()()`

Incrementally renders any remaining output.
`void` `@https://developer.android.com/reference/androidx/annotation/CallSuper
https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#resetCodecStateForFlush()()`

Resets the renderer internal state after a codec flush.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#setOutputSurfaceV23(androidx.media3.exoplayer.mediacodec.MediaCodecAdapter,android.view.Surface)(https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter codec, https://developer.android.com/reference/android/view/Surface.html surface)` `void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#setPlaybackSpeed(float,float)(float currentPlaybackSpeed, float targetPlaybackSpeed)`

Indicates the playback speed to this renderer.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#setVideoEffects(java.util.List<androidx.media3.common.Effect>)(https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/common/Effect> effects)`

Sets the `https://developer.android.com/reference/androidx/media3/common/Effect` to apply.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#shouldDiscardDecoderInputBuffer(androidx.media3.decoder.DecoderInputBuffer)(https://developer.android.com/reference/androidx/media3/decoder/DecoderInputBuffer buffer)`

Returns whether the input buffer should be discarded before decoding.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#shouldDropFrame(long,long,boolean)(
long earlyUs,
long elapsedRealtimeUs,
boolean isLastFrame
)`

Returns whether the frame should be dropped.
`final boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#shouldFlushCodec()()`

Returns whether the codec should be flushed in cases such that the codec was not released.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#shouldForceReleaseFrame(long,long)(long earlyUs, long elapsedSinceLastReleaseUs)`

Whether a frame should be forced for release.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#shouldForceRenderOutputBuffer(long,long)(
long earlyUs,
long elapsedSinceLastRenderUs
)`

Returns whether to force rendering an output buffer.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#shouldIgnoreFrame(long,long,long,boolean,boolean)(
long earlyUs,
long positionUs,
long elapsedRealtimeUs,
boolean isLastFrame,
boolean treatDroppedBuffersAsSkipped
)`

Returns whether this frame should be ignored.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#shouldInitCodec(androidx.media3.exoplayer.mediacodec.MediaCodecInfo)(https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecInfo codecInfo)` `boolean` `@https://developer.android.com/reference/androidx/media3/common/util/ExperimentalApi
https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#shouldProcessStreamChangeAtStart()()`

Returns whether `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#onProcessedStreamChange()` should be invoked on the first stream.
`final boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#shouldReleaseCodecInsteadOfFlushing()()`

Returns whether the codec should be released rather than flushed.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#shouldUseDetachedSurface(androidx.media3.exoplayer.mediacodec.MediaCodecInfo)(https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecInfo codecInfo)` `boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#shouldUsePlaceholderSurface(androidx.media3.exoplayer.mediacodec.MediaCodecInfo)(https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecInfo codecInfo)` `void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#skipOutputBuffer(androidx.media3.exoplayer.mediacodec.MediaCodecAdapter,int,long)(
https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter codec,
int index,
long presentationTimeUs
)`

Skips the output buffer with the specified index.
`int` `@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities
https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#supportsFormat(androidx.media3.exoplayer.mediacodec.MediaCodecSelector,androidx.media3.common.Format)(https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector mediaCodecSelector, https://developer.android.com/reference/androidx/media3/common/Format format)`

Returns the `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities` for the given `https://developer.android.com/reference/androidx/media3/common/Format`.
`static int` `@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities
https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#supportsFormat(android.content.Context,androidx.media3.exoplayer.mediacodec.MediaCodecSelector,androidx.media3.common.Format)(
https://developer.android.com/reference/android/content/Context.html context,
https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector mediaCodecSelector,
https://developer.android.com/reference/androidx/media3/common/Format format
)`

Returns the `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities` of MediaCodecVideoRenderer for a given `https://developer.android.com/reference/androidx/media3/common/Format`.
`boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#supportsResetPositionWithoutKeyFrameReset(long)(long positionUs)`

Returns whether the renderer can support processing a position discontinuity without a key frame reset.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#updateDroppedBufferCounters(int,int)(
int droppedInputBufferCount,
int droppedDecoderBufferCount
)`

Updates local counters and `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer#decoderCounters()` to reflect that buffers were dropped.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer#updateVideoFrameProcessingOffsetCounters(long)(long processingOffsetUs)`

Updates local counters and `https://developer.android.com/reference/androidx/media3/exoplayer/DecoderCounters` with a new video frame processing offset.
From [androidx.media3.exoplayer.Renderer](https://developer.android.com/reference/androidx/media3/exoplayer/Renderer) `abstract void` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#enable(androidx.media3.exoplayer.RendererConfiguration,androidx.media3.common.Format[],androidx.media3.exoplayer.source.SampleStream,long,boolean,boolean,long,long,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)(
https://developer.android.com/reference/androidx/media3/exoplayer/RendererConfiguration configuration,
Format[] formats,
https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream stream,
long positionUs,
boolean joining,
boolean mayRenderStartOfStream,
long startPositionUs,
long offsetUs,
https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId
)`

Enables the renderer to consume from the specified `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream`.
`abstract void` `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer#replaceStream(androidx.media3.common.Format[],androidx.media3.exoplayer.source.SampleStream,long,long,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)(
Format[] formats,
https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream stream,
long startPositionUs,
long offsetUs,
https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId
)`

Replaces the `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream` from which samples will be consumed.
From [androidx.media3.exoplayer.RendererCapabilities](https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities) `static int` `@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities
https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#create(int)(@https://developer.android.com/reference/androidx/media3/common/C.FormatSupport int formatSupport)`

Returns `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities` for the given `https://developer.android.com/reference/androidx/media3/common/C.FormatSupport`.
`static int` `@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities
https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#create(int,int,int)(
@https://developer.android.com/reference/androidx/media3/common/C.FormatSupport int formatSupport,
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AdaptiveSupport int adaptiveSupport,
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.TunnelingSupport int tunnelingSupport
)`

Returns `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities` combining the given `https://developer.android.com/reference/androidx/media3/common/C.FormatSupport`, `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AdaptiveSupport` and `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.TunnelingSupport`.
`static int` `@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities
https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#create(int,int,int,int)(
@https://developer.android.com/reference/androidx/media3/common/C.FormatSupport int formatSupport,
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AdaptiveSupport int adaptiveSupport,
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.TunnelingSupport int tunnelingSupport,
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AudioOffloadSupport int audioOffloadSupport
)`

Returns `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities` combining the given `https://developer.android.com/reference/androidx/media3/common/C.FormatSupport`, `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AdaptiveSupport`, `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.TunnelingSupport`, and `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AudioOffloadSupport`.
`static int` `@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities
https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#create(int,int,int,int,int)(
@https://developer.android.com/reference/androidx/media3/common/C.FormatSupport int formatSupport,
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AdaptiveSupport int adaptiveSupport,
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.TunnelingSupport int tunnelingSupport,
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.HardwareAccelerationSupport int hardwareAccelerationSupport,
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.DecoderSupport int decoderSupport
)`

Returns `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities` combining the given `https://developer.android.com/reference/androidx/media3/common/C.FormatSupport`, `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AdaptiveSupport`, `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.TunnelingSupport`, `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.HardwareAccelerationSupport`, and `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.DecoderSupport`.
`static int` `@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities
https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#create(int,int,int,int,int,int)(
@https://developer.android.com/reference/androidx/media3/common/C.FormatSupport int formatSupport,
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AdaptiveSupport int adaptiveSupport,
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.TunnelingSupport int tunnelingSupport,
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.HardwareAccelerationSupport int hardwareAccelerationSupport,
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.DecoderSupport int decoderSupport,
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AudioOffloadSupport int audioOffloadSupport
)`

Returns `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities` combining the given `https://developer.android.com/reference/androidx/media3/common/C.FormatSupport`, `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AdaptiveSupport`, `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.TunnelingSupport`, `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.HardwareAccelerationSupport`, `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.DecoderSupport` and `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AudioOffloadSupport`.
`static int` `@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AdaptiveSupport
https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#getAdaptiveSupport(int)(@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities int supportFlags)`

Returns the `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AdaptiveSupport` from the combined `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities`.
`static int` `@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AudioOffloadSupport
https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#getAudioOffloadSupport(int)(
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities int supportFlags
)`

Returns the `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.AudioOffloadSupport` from the combined `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities`.
`static int` `@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.DecoderSupport
https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#getDecoderSupport(int)(@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities int supportFlags)`

Returns the `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.DecoderSupport` from the combined `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities`.
`static int` `@https://developer.android.com/reference/androidx/media3/common/C.FormatSupport
https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#getFormatSupport(int)(@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities int supportFlags)`

Returns the `https://developer.android.com/reference/androidx/media3/common/C.FormatSupport` from the combined `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities`.
`static int` `@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.HardwareAccelerationSupport
https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#getHardwareAccelerationSupport(int)(
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities int supportFlags
)`

Returns the `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.HardwareAccelerationSupport` from the combined `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities`.
`static int` `@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.TunnelingSupport
https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#getTunnelingSupport(int)(@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities int supportFlags)`

Returns the `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.TunnelingSupport` from the combined `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities`.
`static boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#isFormatSupported(int,boolean)(
@https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities int supportFlags,
boolean allowExceedsCapabilities
)`

Returns whether the `https://developer.android.com/reference/androidx/media3/common/C.FormatSupport` from the combined `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Capabilities` indicates the format is supported.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities#setListener(androidx.media3.exoplayer.RendererCapabilities.Listener)(https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Listener listener)`

Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/RendererCapabilities.Listener`.
From [androidx.media3.exoplayer.video.VideoFrameReleaseControl.FrameTimingEvaluator](https://developer.android.com/reference/androidx/media3/exoplayer/video/VideoFrameReleaseControl.FrameTimingEvaluator) `abstract boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/video/VideoFrameReleaseControl.FrameTimingEvaluator#shouldIgnoreFrame(long,long,long,boolean,boolean)(
long earlyUs,
long positionUs,
long elapsedRealtimeUs,
boolean isLastFrame,
boolean treatDroppedBuffersAsSkipped
)`

Returns whether this frame should be ignored.

## Protected constructors

### CapturingMediaCodecVideoRenderer

```
protected CapturingMediaCodecVideoRenderer(
    Context context,
    MediaCodecAdapter.Factory codecAdapterFactory,
    MediaCodecSelector mediaCodecSelector,
    long allowedJoiningTimeMs,
    boolean enableDecoderFallback,
    @Nullable Handler eventHandler,
    @Nullable VideoRendererEventListener eventListener,
    int maxDroppedFramesToNotify
)
```

## Protected methods

### shouldDropBuffersToKeyframe

```
protected boolean shouldDropBuffersToKeyframe(
    long earlyUs,
    long elapsedRealtimeUs,
    boolean isLastBuffer
)
```

Returns whether to drop all buffers from the buffer being processed to the keyframe at or after the current playback position, if possible.

| Parameters |
|---|---|
| `long earlyUs` | The time until the current buffer should be presented in microseconds. A negative value indicates that the buffer is late. |
| `long elapsedRealtimeUs` | `https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtime()` in microseconds, measured at the start of the current iteration of the rendering loop. |
| `boolean isLastBuffer` | Whether the buffer is the last buffer in the current stream. |

### shouldDropOutputBuffer

```
protected boolean shouldDropOutputBuffer(
    long earlyUs,
    long elapsedRealtimeUs,
    boolean isLastBuffer
)
```

Returns whether the buffer being processed should be dropped.

| Parameters |
|---|---|
| `long earlyUs` | The time until the buffer should be presented in microseconds. A negative value indicates that the buffer is late. |
| `long elapsedRealtimeUs` | `https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtime()` in microseconds, measured at the start of the current iteration of the rendering loop. |
| `boolean isLastBuffer` | Whether the buffer is the last buffer in the current stream. |