@UnstableApi
public final class FrameCache implements GlEffect


Caches the input frames.

Example usage: cache the processed frames when presenting them on screen, to accommodate for the possible fluctuation in video frame processing time between frames.

Summary

Public fields

final int

The capacity of the frame cache.

Public constructors

FrameCache(@IntRange(from = 1, to = 8) int capacity)

Creates a new instance.

Public methods

GlShaderProgram
toGlShaderProgram(Context context, boolean useHdr)

Returns a GlShaderProgram that applies the effect.

Inherited methods

From androidx.media3.common.Effect
long

Returns the expected duration of the output stream when the effect is applied given a input durationUs.

From androidx.media3.effect.GlEffect
boolean
isNoOp(int inputWidth, int inputHeight)

Returns whether a GlEffect applies no change at every timestamp.

Public fields

capacity

public final int capacity

The capacity of the frame cache.

Public constructors

FrameCache

public FrameCache(@IntRange(from = 1, to = 8) int capacity)

Creates a new instance.

The capacity should be chosen carefully. OpenGL could crash unexpectedly if the device is not capable of allocating the requested buffer.

Currently up to 8 frames can be cached in one FrameCache instance.

Parameters
@IntRange(from = 1, to = 8) int capacity

The capacity of the frame cache, must be greater than zero.

Public methods

toGlShaderProgram

public GlShaderProgram toGlShaderProgram(Context context, boolean useHdr)

Returns a GlShaderProgram that applies the effect.

Parameters
Context context

A Context.

boolean useHdr

Whether input textures come from an HDR source. If true, colors will be in linear RGB BT.2020. If false, colors will be in linear RGB BT.709.

Throws
androidx.media3.common.VideoFrameProcessingException

If an error occurs while creating the .