@webex/ladon-ts 4.0.0 → 4.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -4
- package/LICENSE +5 -5
- package/README.md +36 -36
- package/build/module/index.d.ts +6 -6
- package/build/module/index.js +6 -6
- package/build/module/lib/config.d.ts +69 -61
- package/build/module/lib/config.js +125 -109
- package/build/module/lib/generator.d.ts +52 -52
- package/build/module/lib/generator.js +212 -202
- package/build/module/lib/pipeline.d.ts +21 -21
- package/build/module/lib/pipeline.js +92 -83
- package/build/module/lib/renderer/blur-renderer.d.ts +21 -0
- package/build/module/lib/renderer/blur-renderer.js +190 -0
- package/build/module/lib/renderer/ladon-renderer.d.ts +6 -0
- package/build/module/lib/renderer/ladon-renderer.js +2 -0
- package/build/module/lib/renderer/passthrough-renderer.d.ts +14 -0
- package/build/module/lib/renderer/passthrough-renderer.js +57 -0
- package/build/module/lib/renderer/replacement-renderer.d.ts +16 -0
- package/build/module/lib/renderer/replacement-renderer.js +103 -0
- package/build/module/lib/renderer/webgl-renderer.d.ts +17 -0
- package/build/module/lib/renderer/webgl-renderer.js +113 -0
- package/build/module/lib/renderer.d.ts +5 -63
- package/build/module/lib/renderer.js +6 -463
- package/build/module/lib/util.d.ts +4 -1
- package/build/module/lib/util.js +57 -10
- package/build/module/lib/version.d.ts +1 -1
- package/build/module/lib/version.js +1 -1
- package/package.json +77 -81
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { PipelineConfig } from '../config';
|
|
2
|
+
export declare abstract class WebGLRenderer {
|
|
3
|
+
output_canvas: HTMLCanvasElement;
|
|
4
|
+
readonly config: PipelineConfig;
|
|
5
|
+
protected intermediate_canvas?: HTMLCanvasElement;
|
|
6
|
+
protected output_canvas_2d?: CanvasRenderingContext2D;
|
|
7
|
+
protected gl: WebGL2RenderingContext;
|
|
8
|
+
protected image_texture: WebGLTexture;
|
|
9
|
+
protected mask_texture: WebGLTexture;
|
|
10
|
+
protected verts: Float32Array;
|
|
11
|
+
protected vertex_shader_src: string;
|
|
12
|
+
constructor(output_canvas: HTMLCanvasElement, config: PipelineConfig);
|
|
13
|
+
protected getUVCalculation(): "vec2 st = -(gl_FragCoord.xy / u_resolution) + 1.0;" | "vec2 st = vec2((gl_FragCoord.x / u_resolution.x), -(gl_FragCoord.y / u_resolution.y) + 1.0);";
|
|
14
|
+
protected setSharedUniforms(program: WebGLProgram): void;
|
|
15
|
+
protected uploadVideoStream(input: Uint8ClampedArray): void;
|
|
16
|
+
protected postDraw(): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
export class WebGLRenderer {
|
|
2
|
+
constructor(output_canvas, config) {
|
|
3
|
+
this.output_canvas = output_canvas;
|
|
4
|
+
this.config = config;
|
|
5
|
+
this.verts = new Float32Array([
|
|
6
|
+
-1.0, -1.0, 0.0, -1.0, 1.0, 0.0, 1.0, 1.0, 0.0,
|
|
7
|
+
1.0, 1.0, 0.0, 1.0, -1.0, 0.0, -1.0, -1.0, 0.0,
|
|
8
|
+
]);
|
|
9
|
+
this.vertex_shader_src = `#version 300 es
|
|
10
|
+
|
|
11
|
+
in vec4 position;
|
|
12
|
+
|
|
13
|
+
void main() {
|
|
14
|
+
gl_Position = position;
|
|
15
|
+
}
|
|
16
|
+
`;
|
|
17
|
+
const gl = this.output_canvas.getContext('webgl2');
|
|
18
|
+
if (!gl) {
|
|
19
|
+
const output_2d = this.output_canvas.getContext('2d');
|
|
20
|
+
if (!output_2d) {
|
|
21
|
+
throw new Error('[ladon-ts] - output canvas context must be webgl2 or 2d');
|
|
22
|
+
}
|
|
23
|
+
this.output_canvas_2d = output_2d;
|
|
24
|
+
this.intermediate_canvas = document.createElement('canvas');
|
|
25
|
+
this.intermediate_canvas.height = this.config.input.height;
|
|
26
|
+
this.intermediate_canvas.width = this.config.input.width;
|
|
27
|
+
const gl_intermediate = this.intermediate_canvas.getContext('webgl2');
|
|
28
|
+
if (!gl_intermediate) {
|
|
29
|
+
throw new Error('[ladon-ts] - error getting output context webgl');
|
|
30
|
+
}
|
|
31
|
+
this.gl = gl_intermediate;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.gl = gl;
|
|
35
|
+
}
|
|
36
|
+
// Input image texture.
|
|
37
|
+
const image_texture = this.gl.createTexture();
|
|
38
|
+
if (!image_texture) {
|
|
39
|
+
throw new Error('[ladon-ts] - error creating input texture');
|
|
40
|
+
}
|
|
41
|
+
this.image_texture = image_texture;
|
|
42
|
+
this.gl.bindTexture(this.gl.TEXTURE_2D, this.image_texture);
|
|
43
|
+
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);
|
|
44
|
+
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, this.gl.CLAMP_TO_EDGE);
|
|
45
|
+
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, this.gl.CLAMP_TO_EDGE);
|
|
46
|
+
this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.config.input.width, this.config.input.height, 0, this.gl.RGBA, this.gl.UNSIGNED_BYTE, null);
|
|
47
|
+
this.gl.bindTexture(this.gl.TEXTURE_2D, null);
|
|
48
|
+
const mask_texture = this.gl.createTexture();
|
|
49
|
+
if (!mask_texture) {
|
|
50
|
+
throw new Error('[ladon-ts] - error creating mask texture');
|
|
51
|
+
}
|
|
52
|
+
// Mask texture.
|
|
53
|
+
this.mask_texture = mask_texture;
|
|
54
|
+
this.gl.bindTexture(this.gl.TEXTURE_2D, this.mask_texture);
|
|
55
|
+
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.NEAREST);
|
|
56
|
+
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.NEAREST);
|
|
57
|
+
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, this.gl.CLAMP_TO_EDGE);
|
|
58
|
+
this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, this.gl.CLAMP_TO_EDGE);
|
|
59
|
+
this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.R32F, this.config.mask.output_size.width, this.config.mask.output_size.height, 0, this.gl.RED, this.gl.FLOAT, null);
|
|
60
|
+
this.gl.bindTexture(this.gl.TEXTURE_2D, null);
|
|
61
|
+
const vertex_array = this.gl.createVertexArray();
|
|
62
|
+
if (!vertex_array) {
|
|
63
|
+
throw new Error('[ladon-ts] - error creating vertex array');
|
|
64
|
+
}
|
|
65
|
+
this.gl.bindVertexArray(vertex_array);
|
|
66
|
+
const buffer = this.gl.createBuffer();
|
|
67
|
+
if (!buffer) {
|
|
68
|
+
throw new Error('[ladon-ts] - error creating buffer');
|
|
69
|
+
}
|
|
70
|
+
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
|
|
71
|
+
this.gl.bufferData(this.gl.ARRAY_BUFFER, this.verts, this.gl.STATIC_DRAW);
|
|
72
|
+
this.gl.vertexAttribPointer(0, 3, this.gl.FLOAT, false, 0, 0);
|
|
73
|
+
this.gl.enableVertexAttribArray(0);
|
|
74
|
+
this.gl.viewport(0, 0, this.config.input.width, this.config.input.height);
|
|
75
|
+
}
|
|
76
|
+
getUVCalculation() {
|
|
77
|
+
if (this.config.render.horizontal_mirror) {
|
|
78
|
+
return `vec2 st = -(gl_FragCoord.xy / u_resolution) + 1.0;`;
|
|
79
|
+
}
|
|
80
|
+
return `vec2 st = vec2((gl_FragCoord.x / u_resolution.x), -(gl_FragCoord.y / u_resolution.y) + 1.0);`;
|
|
81
|
+
}
|
|
82
|
+
setSharedUniforms(program) {
|
|
83
|
+
const u_resolution = this.gl.getUniformLocation(program, 'u_resolution');
|
|
84
|
+
if (!u_resolution) {
|
|
85
|
+
throw new Error('[ladon-ts] - error finding "u_resolution" uniform');
|
|
86
|
+
}
|
|
87
|
+
this.gl.uniform2f(u_resolution, this.config.input.width, this.config.input.height);
|
|
88
|
+
const u_image = this.gl.getUniformLocation(program, 'u_image');
|
|
89
|
+
if (!u_image) {
|
|
90
|
+
throw new Error('[ladon-ts] - error finding "u_image" uniform');
|
|
91
|
+
}
|
|
92
|
+
this.gl.activeTexture(this.gl.TEXTURE0);
|
|
93
|
+
this.gl.bindTexture(this.gl.TEXTURE_2D, this.image_texture);
|
|
94
|
+
this.gl.uniform1i(u_image, 0);
|
|
95
|
+
const u_mask = this.gl.getUniformLocation(program, 'u_mask');
|
|
96
|
+
if (u_mask) {
|
|
97
|
+
this.gl.activeTexture(this.gl.TEXTURE1);
|
|
98
|
+
this.gl.bindTexture(this.gl.TEXTURE_2D, this.mask_texture);
|
|
99
|
+
this.gl.uniform1i(u_mask, 1);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
uploadVideoStream(input) {
|
|
103
|
+
this.gl.activeTexture(this.gl.TEXTURE0);
|
|
104
|
+
this.gl.bindTexture(this.gl.TEXTURE_2D, this.image_texture);
|
|
105
|
+
this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.config.input.width, this.config.input.height, 0, this.gl.RGBA, this.gl.UNSIGNED_BYTE, input);
|
|
106
|
+
}
|
|
107
|
+
postDraw() {
|
|
108
|
+
if (this.output_canvas_2d && this.intermediate_canvas) {
|
|
109
|
+
this.output_canvas_2d.drawImage(this.intermediate_canvas, 0, 0, this.config.input.width, this.config.input.height);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViZ2wtcmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JlbmRlcmVyL3dlYmdsLXJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBZ0IsYUFBYTtJQXdCL0IsWUFDVyxhQUFnQyxFQUN2QixNQUFzQjtRQUQvQixrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDdkIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFqQmhDLFVBQUssR0FBRyxJQUFJLFlBQVksQ0FBQztZQUMvQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7WUFFOUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHO1NBQ2pELENBQUMsQ0FBQztRQUVPLHNCQUFpQixHQUFHOzs7Ozs7O0NBT2pDLENBQUM7UUFNTSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ0wsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdEQsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDWixNQUFNLElBQUksS0FBSyxDQUNYLHlEQUF5RCxDQUM1RCxDQUFDO2FBQ0w7WUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1lBRWxDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRTVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxN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
|
|
@@ -1,63 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
destroy(): void;
|
|
7
|
-
}
|
|
8
|
-
declare abstract class WebGLRenderer {
|
|
9
|
-
output_canvas: HTMLCanvasElement;
|
|
10
|
-
readonly config: PipelineConfig;
|
|
11
|
-
protected intermediate_canvas?: HTMLCanvasElement;
|
|
12
|
-
protected output_canvas_2d?: CanvasRenderingContext2D;
|
|
13
|
-
protected gl: WebGL2RenderingContext;
|
|
14
|
-
protected image_texture: WebGLTexture;
|
|
15
|
-
protected mask_texture: WebGLTexture;
|
|
16
|
-
protected verts: Float32Array;
|
|
17
|
-
protected vertex_shader_src: string;
|
|
18
|
-
constructor(output_canvas: HTMLCanvasElement, config: PipelineConfig);
|
|
19
|
-
protected getUVCalculation(): "vec2 st = -(gl_FragCoord.xy / u_resolution) + 1.0;" | "vec2 st = vec2((gl_FragCoord.x / u_resolution.x), -(gl_FragCoord.y / u_resolution.y) + 1.0);";
|
|
20
|
-
protected setSharedUniforms(program: WebGLProgram): void;
|
|
21
|
-
protected uploadVideoStream(input: Uint8ClampedArray): void;
|
|
22
|
-
protected postDraw(): void;
|
|
23
|
-
}
|
|
24
|
-
export declare class PassthroughRenderer extends WebGLRenderer implements LadonRenderer {
|
|
25
|
-
output_canvas: HTMLCanvasElement;
|
|
26
|
-
readonly config: PipelineConfig;
|
|
27
|
-
private program;
|
|
28
|
-
private fragment_shader;
|
|
29
|
-
constructor(output_canvas: HTMLCanvasElement, config: PipelineConfig);
|
|
30
|
-
render(input: Uint8ClampedArray, _: MaskResult): Promise<void>;
|
|
31
|
-
load(): Promise<void>;
|
|
32
|
-
destroy(): void;
|
|
33
|
-
}
|
|
34
|
-
export declare class ReplacementRenderer extends WebGLRenderer implements LadonRenderer {
|
|
35
|
-
output_canvas: HTMLCanvasElement;
|
|
36
|
-
readonly config: PipelineConfig;
|
|
37
|
-
private program;
|
|
38
|
-
private background_canvas_ctx;
|
|
39
|
-
protected background_texture: WebGLTexture;
|
|
40
|
-
private fragment_shader;
|
|
41
|
-
constructor(output_canvas: HTMLCanvasElement, config: PipelineConfig);
|
|
42
|
-
render(input: Uint8ClampedArray, mask: MaskResult): Promise<void>;
|
|
43
|
-
load(): Promise<void>;
|
|
44
|
-
destroy(): void;
|
|
45
|
-
}
|
|
46
|
-
export declare class BlurRenderer extends WebGLRenderer implements LadonRenderer {
|
|
47
|
-
output_canvas: HTMLCanvasElement;
|
|
48
|
-
readonly config: PipelineConfig;
|
|
49
|
-
private program_1;
|
|
50
|
-
private program_2;
|
|
51
|
-
private framebuffer;
|
|
52
|
-
private transfer_texture;
|
|
53
|
-
private u_blur;
|
|
54
|
-
private fragment_shader_common;
|
|
55
|
-
private fragment_shader_pass_1_src;
|
|
56
|
-
fragment_shader_pass_2_src: string;
|
|
57
|
-
constructor(output_canvas: HTMLCanvasElement, config: PipelineConfig);
|
|
58
|
-
render(input: Uint8ClampedArray, mask: MaskResult): Promise<void>;
|
|
59
|
-
load(): Promise<void>;
|
|
60
|
-
destroy(): void;
|
|
61
|
-
private getBlurKernel;
|
|
62
|
-
}
|
|
63
|
-
export {};
|
|
1
|
+
export * from './renderer/blur-renderer';
|
|
2
|
+
export * from './renderer/ladon-renderer';
|
|
3
|
+
export * from './renderer/passthrough-renderer';
|
|
4
|
+
export * from './renderer/replacement-renderer';
|
|
5
|
+
export * from './renderer/webgl-renderer';
|