DefaultVideoCompositor
@UnstableApi
class DefaultVideoCompositor : VideoCompositor
A basic VideoCompositor implementation that takes in frames from input sources' streams and combines them into one output stream.
The first registered source will be the primary stream, which is used to determine the output textures' timestamps and dimensions.
The input source must be able to have at least two queued textures in its output buffer.
When composited, textures are overlaid over one another in the reverse order of their registration order, so that the first registered source is on the very top. The way the textures are overlaid can be customized using the OverlaySettings output by VideoCompositorSettings.
Only SDR input with the same ColorInfo are supported.
Summary
Public constructors |
|---|
DefaultVideoCompositor(Creates an instance. |
Public functions |
|
|---|---|
synchronized Unit |
queueInputTexture(Queues an input texture to be composited. |
synchronized Unit |
registerInputSource(inputIndex: Int)Registers a new input source. |
synchronized Unit |
release()Releases all resources. |
Unit |
releaseOutputTexture(presentationTimeUs: Long)Releases the output texture at the given |
Unit |
setVideoCompositorSettings(Sets the |
synchronized Unit |
signalEndOfInputSource(inputIndex: Int)Signals that no more frames will come from the upstream |
Public constructors
DefaultVideoCompositor
DefaultVideoCompositor(
context: Context!,
glObjectsProvider: GlObjectsProvider!,
executorService: ExecutorService!,
listener: VideoCompositor.Listener!,
textureOutputListener: GlTextureProducer.Listener!,
textureOutputCapacity: @IntRange(from = 1) Int
)
Creates an instance.
It's the caller's responsibility to release the GlObjectsProvider on the ExecutorService's thread, and to shut down the ExecutorService.
Public functions
queueInputTexture
synchronized fun queueInputTexture(
inputIndex: Int,
textureProducer: GlTextureProducer!,
inputTexture: GlTextureInfo!,
colorInfo: ColorInfo!,
presentationTimeUs: Long
): Unit
Queues an input texture to be composited.
| Parameters | |
|---|---|
inputIndex: Int |
The index of the input source, the same index used when |
textureProducer: GlTextureProducer! |
The source from where the |
inputTexture: GlTextureInfo! |
The |
colorInfo: ColorInfo! |
The |
presentationTimeUs: Long |
The presentation time of |
registerInputSource
synchronized fun registerInputSource(inputIndex: Int): Unit
Registers a new input source.
The first registered input will be designated as the primary input.
release
synchronized fun release(): Unit
Releases all resources.
This VideoCompositor instance must not be used after this method is called.
releaseOutputTexture
fun releaseOutputTexture(presentationTimeUs: Long): Unit
Releases the output texture at the given presentationTimeUs.
setVideoCompositorSettings
fun setVideoCompositorSettings(
videoCompositorSettings: VideoCompositorSettings!
): Unit
Sets the VideoCompositorSettings to apply to inputs.
signalEndOfInputSource
synchronized fun signalEndOfInputSource(inputIndex: Int): Unit
Signals that no more frames will come from the upstream GlTextureProducer.Listener.
| Parameters | |
|---|---|
inputIndex: Int |
The index of the input source. |