PassthroughShaderProgram


@UnstableApi
class PassthroughShaderProgram : GlShaderProgram


A GlShaderProgram that passes a frame from the input to the output listener without copying.

This shader program can only process one input frame at a time.

Summary

Public constructors

Public functions

Unit

Flushes the GlShaderProgram.

Unit
queueInputFrame(
    glObjectsProvider: GlObjectsProvider!,
    inputTexture: GlTextureInfo!,
    presentationTimeUs: Long
)

Processes an input frame if possible.

Unit

Releases all resources.

Unit

Notifies the GlShaderProgram that the frame on the given output texture is no longer used and can be overwritten.

Unit
setErrorListener(
    executor: Executor!,
    errorListener: GlShaderProgram.ErrorListener!
)

Sets the ErrorListener.

Unit

Sets the OutputListener.

Unit

Notifies the GlShaderProgram that no further input frames belonging to the current input stream will be queued.

Protected functions

Unit

Public constructors

PassthroughShaderProgram

PassthroughShaderProgram()

Public functions

flush

fun flush(): Unit

Flushes the GlShaderProgram.

The GlShaderProgram should reclaim the ownership of its allocated textures, notify its InputListener about the flush event, and report its availability if necessary.

The implementation must not output frames until after this method returns.

queueInputFrame

fun queueInputFrame(
    glObjectsProvider: GlObjectsProvider!,
    inputTexture: GlTextureInfo!,
    presentationTimeUs: Long
): Unit

Processes an input frame if possible.

The GlShaderProgram owns the accepted frame until it calls onInputFrameProcessed. The caller should not overwrite or release the texture before the GlShaderProgram has finished processing it.

This method must only be called when the GlShaderProgram can accept an input frame.

Parameters
glObjectsProvider: GlObjectsProvider!

The GlObjectsProvider for using EGL and GLES.

inputTexture: GlTextureInfo!

A GlTextureInfo describing the texture containing the input frame.

presentationTimeUs: Long

The presentation timestamp of the input frame, in microseconds.

release

fun release(): Unit

Releases all resources.

Throws
androidx.media3.common.VideoFrameProcessingException

If an error occurs while releasing resources.

releaseOutputFrame

fun releaseOutputFrame(outputTexture: GlTextureInfo!): Unit

Notifies the GlShaderProgram that the frame on the given output texture is no longer used and can be overwritten.

setErrorListener

fun setErrorListener(
    executor: Executor!,
    errorListener: GlShaderProgram.ErrorListener!
): Unit

Sets the ErrorListener.

The ErrorListener is invoked on the provided Executor.

setOutputListener

fun setOutputListener(outputListener: GlShaderProgram.OutputListener!): Unit

Sets the OutputListener.

The OutputListener should be invoked on the thread that owns the parent OpenGL context. For example, DefaultVideoFrameProcessor invokes the OutputListener methods on its internal thread.

signalEndOfCurrentInputStream

fun signalEndOfCurrentInputStream(): Unit

Notifies the GlShaderProgram that no further input frames belonging to the current input stream will be queued.

Input frames that are queued after this method is called belong to a different input stream.

Protected functions

onError

protected fun onError(e: Exception!): Unit

Protected properties

inputListener

protected var inputListenerGlShaderProgram.InputListener!