Skip to content

VideoMergePlugin

Video merge plugin

@geenee/armature!ShaderPlugin merges input video stream with the background texture. Merge is done by linear interpolation between images and interpolation weight (alpha) is a tunable input parameter that can be changed on runtime for smooth transition between streams. Background texture is allocated by the plugin and has the same size as the input stream, it can be accessed and updated on runtime, this, for example, allows to replace input video stream with a background video.

Extends

Constructors

new VideoMergePlugin()

new VideoMergePlugin(alpha, mirror): VideoMergePlugin

Constructor

Parameters

alpha: number = 0.5

Interpolation factor

mirror: boolean = false

Mirror background

Returns

VideoMergePlugin

Overrides

ShaderPlugin.constructor

Properties

alpha

protected alpha: number = 0.5

Interpolation factor


bgTexture?

protected optional bgTexture: ImageTexture

Background texture


fragSrc?

protected optional fragSrc: string

Code of fragment shader (copy shader by default)

Inherited from

ShaderPlugin.fragSrc


inputs?

protected optional inputs: string[]

Shader texture inputs (names of sampler uniforms)

Inherited from

ShaderPlugin.inputs


loaded

loaded: boolean

Loaded state

Inherited from

ShaderPlugin.loaded


mirror

protected mirror: boolean = false

Mirror background


ordinal

ordinal: number

Ordinal number

Inherited from

ShaderPlugin.ordinal


renderer?

protected optional renderer: Renderer<any>

Renderer loaded the plugin

Inherited from

ShaderPlugin.renderer


shader?

protected optional shader: ShaderProgram

Rendering shader

Inherited from

ShaderPlugin.shader


shaderCtx?

protected optional shaderCtx: WebGL2RenderingContext

Rendering context

Inherited from

ShaderPlugin.shaderCtx


size

protected size: Size

Image size

Inherited from

ShaderPlugin.size


uniforms?

protected optional uniforms: object

Shader uniforms as name-type map object

Index Signature

[key: string]: UniformType

Inherited from

ShaderPlugin.uniforms


vertSrc?

protected optional vertSrc: string

Vertex shader source (copy shader by default)

Inherited from

ShaderPlugin.vertSrc

Methods

background()

background(): undefined | ImageTexture

Background texture merged with the video

Returns

undefined | ImageTexture

Background texture


dispose()

dispose(): void

Dispose video plugin

Returns

void

Inherited from

ShaderPlugin.dispose


load()

load(renderer): Promise<void>

Initialize plugin

Initializes resources required for the shader effect. Allocates texture that will be merged with the video.

Parameters

renderer: Renderer<any>

Renderer this plugin is attached to

Returns

Promise<void>

Promise resolving when initialization is finished

Overrides

ShaderPlugin.load


process()

process(result, input): Promise<boolean>

Process the image

Merges the video with a background texture.

Parameters

result: any

Results of video processing

input: WebGLTexture

Current image texture

Returns

Promise<boolean>

True on success, false otherwise

Overrides

ShaderPlugin.process


setAlpha()

setAlpha(alpha): void

Set interpolation factor

Parameters

alpha: number

Interpolation factor

Returns

void


setMirror()

setMirror(mirror): void

Set background mirror mode

Parameters

mirror: boolean

Mirror flag

Returns

void


setupCamera()

setupCamera(ratio, angle): void

Set camera parameters

Could be overridden to adjust plugin’s pipeline.

Parameters

ratio: number

Aspect ration of input video

angle: number

Vertical field of view in radians

Returns

void

Inherited from

ShaderPlugin.setupCamera


setupVideo()

setupVideo(size): void

Set video size

Adjusts shader and texture to a new size.

Parameters

size: Size

Resolution of input video

Returns

void

Overrides

ShaderPlugin.setupVideo


unload()

unload(): void

Reset plugin

Releases all resources and instances created in load().

Returns

void

Overrides

ShaderPlugin.unload


update()

update(result, stream): Promise<void>

Sealed

Update the image

Main method implementing webgl shader effect or filter. ShaderRenderer keeps track of the current iamge texture that will be be rendered. ShaderPlugin uses the current texture as input and writes results to ShaderPlugin#output. ShaderPlugin#output becomes new current texture of ShaderRenderer. This way all ShaderPlugins attached to renderer organize a chain of effects applied on top of each other. Method process() implements shader effect itself, it’s intended to be overridden by effect authors.

Parameters

result: any

Results of video processing

stream: HTMLCanvasElement

Captured video frame

Returns

Promise<void>

Promise resolving when update is finished

Inherited from

ShaderPlugin.update