@livedigital/client 2.39.0 → 2.40.0-video-effects.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/README.md +8 -0
- package/dist/engine/index.d.ts +2 -1
- package/dist/engine/media/index.d.ts +3 -1
- package/dist/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionAudioWorkletNode.d.ts +6 -0
- package/dist/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionNodeProvider.d.ts +9 -0
- package/dist/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionScriptProcessorNode.d.ts +8 -0
- package/dist/engine/media/streamEffects/audio/noiseSuppression/TrackProcessor.d.ts +13 -0
- package/dist/engine/media/streamEffects/audio/noiseSuppression/WasmModuleCompiler.d.ts +3 -0
- package/dist/engine/media/streamEffects/video/virtual-background/TensorFlowLoader.d.ts +13 -0
- package/dist/engine/media/streamEffects/video/virtual-background/TrackProcessor.d.ts +16 -0
- package/dist/engine/media/streamEffects/video/virtual-background/constants.d.ts +7 -0
- package/dist/engine/media/streamEffects/video/virtual-background/helpers/buildTimerWorker.d.ts +5 -0
- package/dist/engine/media/streamEffects/video/virtual-background/pipelines/canvas2d/canvas2dPipeline.d.ts +13 -0
- package/dist/engine/media/streamEffects/video/virtual-background/pipelines/helpers/webglHelper.d.ts +8 -0
- package/dist/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/backgroundBlurStage.d.ts +6 -0
- package/dist/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/backgroundImageStage.d.ts +9 -0
- package/dist/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildJointBilateralFilterStage.d.ts +7 -0
- package/dist/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildLoadSegmentationStage.d.ts +5 -0
- package/dist/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildResizingStage.d.ts +5 -0
- package/dist/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildSoftmaxStage.d.ts +5 -0
- package/dist/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/webgl2Pipeline.d.ts +14 -0
- package/dist/engine/media/streamEffects/video/virtual-background/types.d.ts +81 -0
- package/dist/engine/media/tracks/AudioTrack.d.ts +11 -4
- package/dist/engine/media/tracks/BaseTrack.d.ts +1 -0
- package/dist/engine/media/tracks/VideoTrack.d.ts +10 -5
- package/dist/helpers/browser.d.ts +1 -0
- package/dist/helpers/media.d.ts +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.es.js +225 -1
- package/dist/index.js +225 -1
- package/dist/types/common.d.ts +6 -0
- package/dist/types/streamEffects.d.ts +18 -0
- package/package.json +5 -2
- package/src/engine/DefaultEngineDependenciesFactory.ts +2 -2
- package/src/engine/index.ts +22 -1
- package/src/engine/media/index.ts +28 -3
- package/src/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionAudioWorkletNode.ts +30 -0
- package/src/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionNodeProvider.ts +44 -0
- package/src/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionScriptProcessorNode.ts +54 -0
- package/src/engine/media/streamEffects/audio/noiseSuppression/TrackProcessor.ts +99 -0
- package/src/engine/media/streamEffects/audio/noiseSuppression/WasmModuleCompiler.ts +10 -0
- package/src/engine/media/streamEffects/video/virtual-background/TensorFlowLoader.ts +89 -0
- package/src/engine/media/streamEffects/video/virtual-background/TrackProcessor.ts +161 -0
- package/src/engine/media/streamEffects/video/virtual-background/constants.ts +62 -0
- package/src/engine/media/streamEffects/video/virtual-background/helpers/buildTimerWorker.ts +42 -0
- package/src/engine/media/streamEffects/video/virtual-background/pipelines/canvas2d/canvas2dPipeline.ts +160 -0
- package/src/engine/media/streamEffects/video/virtual-background/pipelines/helpers/webglHelper.ts +133 -0
- package/src/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/backgroundBlurStage.ts +292 -0
- package/src/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/backgroundImageStage.ts +221 -0
- package/src/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildJointBilateralFilterStage.ts +158 -0
- package/src/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildLoadSegmentationStage.ts +103 -0
- package/src/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildResizingStage.ts +111 -0
- package/src/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildSoftmaxStage.ts +106 -0
- package/src/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/webgl2Pipeline.ts +217 -0
- package/src/engine/media/streamEffects/video/virtual-background/types.ts +94 -0
- package/src/engine/media/tracks/AudioTrack.ts +77 -4
- package/src/engine/media/tracks/BaseTrack.ts +10 -2
- package/src/engine/media/tracks/PeerTrack.ts +1 -2
- package/src/engine/media/tracks/VideoTrack.ts +104 -5
- package/src/helpers/browser.ts +2 -0
- package/src/helpers/media.ts +12 -0
- package/src/index.ts +5 -1
- package/src/types/common.ts +7 -0
- package/src/types/streamEffects.ts +23 -0
- package/dist/engine/media/tracks/TrackWithCodecOptions.d.ts +0 -4
- package/dist/engine/media/tracks/TrackWithEncodings.d.ts +0 -4
- package/src/engine/media/tracks/TrackWithCodecOptions.ts +0 -5
- package/src/engine/media/tracks/TrackWithEncodings.ts +0 -5
package/README.md
CHANGED
|
@@ -17,6 +17,14 @@ import Client from '@livedigital/client';
|
|
|
17
17
|
const client = new Client();
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
+
## Plugins
|
|
21
|
+
Now you can use the noise reduction and virtual backgrounds functionality. To do this, copy all the files from the
|
|
22
|
+
/files directory to the root directory of your project, and add tflite loader scripts to your index.html
|
|
23
|
+
```
|
|
24
|
+
<script src="%PUBLIC_URL%/tflite/tflite.js"></script>
|
|
25
|
+
<script src="%PUBLIC_URL%/tflite/tflite-simd.js"></script>
|
|
26
|
+
```
|
|
27
|
+
|
|
20
28
|
## Debugging
|
|
21
29
|
### Log Levels
|
|
22
30
|
LiveDigital client uses the [debug](https://www.npmjs.com/package/debug) module to log to the browser console.
|
package/dist/engine/index.d.ts
CHANGED
|
@@ -50,9 +50,10 @@ declare class Engine {
|
|
|
50
50
|
createCameraVideoTrack(options?: CreateCameraVideoTrackOptions): Promise<Track>;
|
|
51
51
|
createMicrophoneAudioTrack(options?: CreateMicrophoneAudioTrackOptions): Promise<Track>;
|
|
52
52
|
createScreenMediaTracks(options?: CreateScreenMediaOptions): Promise<Track[]>;
|
|
53
|
-
deleteTrack(tracks: Track): void
|
|
53
|
+
deleteTrack(tracks: Track): Promise<void>;
|
|
54
54
|
get channelId(): string | undefined;
|
|
55
55
|
get appId(): string | undefined;
|
|
56
|
+
get canUseNoiseSuppression(): boolean;
|
|
56
57
|
private connectToSocketServerWithRetry;
|
|
57
58
|
private connectToSocketServer;
|
|
58
59
|
private getAvailableNode;
|
|
@@ -9,12 +9,14 @@ declare class Media {
|
|
|
9
9
|
private tracks;
|
|
10
10
|
constructor(params: CreateMediaParams);
|
|
11
11
|
get mediasoupDevice(): Device;
|
|
12
|
+
get isNoiseSuppressorLoaded(): boolean;
|
|
12
13
|
loadDevice(routerRtpCapabilities: RtpCapabilities): Promise<void>;
|
|
14
|
+
createNoiseSuppressor(): Promise<void>;
|
|
13
15
|
getTrackCodec(track: Track): RtpCodecCapability | undefined;
|
|
14
16
|
private createTracks;
|
|
15
17
|
createUserMediaTracks(constraints: MediaStreamConstraints): Promise<Track[]>;
|
|
16
18
|
createDisplayMediaTracks(constraints: MediaStreamConstraints): Promise<Track[]>;
|
|
17
|
-
deleteTrack(track: Track): void
|
|
19
|
+
deleteTrack(track: Track): Promise<void>;
|
|
18
20
|
getAllTracks(): Track[];
|
|
19
21
|
clearTracks(): Promise<void>;
|
|
20
22
|
static getVideoTrackTransformParams(track: MediaStreamTrack): TransformParams;
|
package/dist/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionAudioWorkletNode.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NoiseSuppressorParams } from '../../../../../types/streamEffects';
|
|
2
|
+
export default class NoiseSuppressionAudioWorkletNode extends AudioWorkletNode {
|
|
3
|
+
constructor(params: NoiseSuppressorParams);
|
|
4
|
+
update(keepalive: boolean): void;
|
|
5
|
+
static register(context: AudioContext): Promise<void>;
|
|
6
|
+
}
|
package/dist/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionNodeProvider.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { NoiseSuppressionNode, NoiseSuppressorParams } from '../../../../../types/streamEffects';
|
|
2
|
+
export default class NoiseSuppressionNodeProvider {
|
|
3
|
+
#private;
|
|
4
|
+
constructor({ context, noiseSuppressor }: NoiseSuppressorParams);
|
|
5
|
+
createNoiseSuppressionNode(): Promise<NoiseSuppressionNode>;
|
|
6
|
+
stop(): void;
|
|
7
|
+
private createAudioWorkletNode;
|
|
8
|
+
private createScriptProcessorNode;
|
|
9
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { NoiseSuppressorParams } from '../../../../../types/streamEffects';
|
|
2
|
+
export default class NoiseSuppressionScriptProcessor {
|
|
3
|
+
#private;
|
|
4
|
+
constructor(params: NoiseSuppressorParams);
|
|
5
|
+
get noiseSuppressionScriptProcessorNode(): ScriptProcessorNode;
|
|
6
|
+
update(keepalive: boolean): void;
|
|
7
|
+
private setOnAudioProcess;
|
|
8
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { LogLevel } from '../../../../../types/common';
|
|
2
|
+
interface TrackProcessorParams {
|
|
3
|
+
noiseSuppressor: WebAssembly.WebAssemblyInstantiatedSource;
|
|
4
|
+
logLevel: LogLevel;
|
|
5
|
+
}
|
|
6
|
+
export default class TrackProcessor {
|
|
7
|
+
#private;
|
|
8
|
+
constructor(params: TrackProcessorParams);
|
|
9
|
+
get isProcessing(): boolean;
|
|
10
|
+
processTrack(track: MediaStreamTrack): Promise<MediaStreamTrack>;
|
|
11
|
+
stopProcessing(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { LogLevel } from '../../../../../types/common';
|
|
2
|
+
import { SegmentationConfig, TFLite } from './types';
|
|
3
|
+
export default class TensorFlowLoader {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(logLevel: LogLevel);
|
|
6
|
+
get isLoaded(): boolean;
|
|
7
|
+
get tfliteModule(): TFLite | undefined;
|
|
8
|
+
loadTFLite(): Promise<void>;
|
|
9
|
+
loadTFLiteModel(segmentationConfig: SegmentationConfig): Promise<void>;
|
|
10
|
+
private loadTFLiteRegular;
|
|
11
|
+
private loadTFLiteSIMD;
|
|
12
|
+
private static getTFLiteModelFileName;
|
|
13
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { GetProcessedTrackParams } from './types';
|
|
2
|
+
import { LogLevel } from '../../../../../types/common';
|
|
3
|
+
interface VideoTrackProcessorParams {
|
|
4
|
+
logLevel: LogLevel;
|
|
5
|
+
}
|
|
6
|
+
export default class TrackProcessor {
|
|
7
|
+
#private;
|
|
8
|
+
constructor(params: VideoTrackProcessorParams);
|
|
9
|
+
get isProcessing(): boolean;
|
|
10
|
+
processTrack(params: GetProcessedTrackParams): Promise<MediaStreamTrack>;
|
|
11
|
+
stopProcessing(): void;
|
|
12
|
+
private static buildWebGL2Pipeline;
|
|
13
|
+
private static buildCanvas2dPipeline;
|
|
14
|
+
private static buildSourcePlayback;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { InputResolution, PipeLineConfig } from './types';
|
|
2
|
+
export declare const INPUT_RESOLUTIONS: {
|
|
3
|
+
[resolution in InputResolution]: [number, number];
|
|
4
|
+
};
|
|
5
|
+
export declare const BLUR_PIPELINE_CONFIG: PipeLineConfig;
|
|
6
|
+
export declare const BLUR_IN_BACKGROUND_TASK_PIPELINE_CONFIG: PipeLineConfig;
|
|
7
|
+
export declare const SAFARI_BLUR_PIPELINE_CONFIG: PipeLineConfig;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BackgroundConfig, SourcePlayback, PostProcessingConfig, SegmentationConfig, TFLite } from '../../types';
|
|
2
|
+
export interface BuildCanvas2dPipeLineParams {
|
|
3
|
+
sourcePlayback: SourcePlayback;
|
|
4
|
+
backgroundConfig: BackgroundConfig;
|
|
5
|
+
segmentationConfig: SegmentationConfig;
|
|
6
|
+
canvas: HTMLCanvasElement;
|
|
7
|
+
tflite: TFLite;
|
|
8
|
+
}
|
|
9
|
+
export default function buildCanvas2dPipeline({ sourcePlayback, backgroundConfig, segmentationConfig, canvas, tflite, }: BuildCanvas2dPipeLineParams): {
|
|
10
|
+
render: () => Promise<void>;
|
|
11
|
+
updatePostProcessingConfig: (newPostProcessingConfig: PostProcessingConfig) => void;
|
|
12
|
+
cleanUp: () => void;
|
|
13
|
+
};
|
package/dist/engine/media/streamEffects/video/virtual-background/pipelines/helpers/webglHelper.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const glsl: (template: {
|
|
2
|
+
raw: readonly string[] | ArrayLike<string>;
|
|
3
|
+
}, ...substitutions: any[]) => string;
|
|
4
|
+
export declare function createProgram(gl: WebGL2RenderingContext, vertexShader: WebGLShader, fragmentShader: WebGLShader): WebGLProgram;
|
|
5
|
+
export declare function compileShader(gl: WebGL2RenderingContext, shaderType: number, shaderSource: string): WebGLShader;
|
|
6
|
+
export declare function createTexture(gl: WebGL2RenderingContext, internalformat: number, width: number, height: number, minFilter?: number, magFilter?: number): WebGLTexture | null;
|
|
7
|
+
export declare function readPixelsAsync(gl: WebGL2RenderingContext, x: number, y: number, width: number, height: number, format: number, type: number, dest: ArrayBufferView): Promise<ArrayBufferView>;
|
|
8
|
+
export declare function createPiplelineStageProgram(gl: WebGL2RenderingContext, vertexShader: WebGLShader, fragmentShader: WebGLShader, positionBuffer: WebGLBuffer, texCoordBuffer: WebGLBuffer): WebGLProgram;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare type BackgroundBlurStage = {
|
|
2
|
+
render(): void;
|
|
3
|
+
updateCoverage(coverage: [number, number]): void;
|
|
4
|
+
cleanUp(): void;
|
|
5
|
+
};
|
|
6
|
+
export declare function buildBackgroundBlurStage(gl: WebGL2RenderingContext, vertexShader: WebGLShader, positionBuffer: WebGLBuffer, texCoordBuffer: WebGLBuffer, personMaskTexture: WebGLTexture, canvas: HTMLCanvasElement): BackgroundBlurStage;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BlendMode } from '../../types';
|
|
2
|
+
export declare type BackgroundImageStage = {
|
|
3
|
+
render(): void;
|
|
4
|
+
updateCoverage(coverage: [number, number]): void;
|
|
5
|
+
updateLightWrapping(lightWrapping: number): void;
|
|
6
|
+
updateBlendMode(blendMode: BlendMode): void;
|
|
7
|
+
cleanUp(): void;
|
|
8
|
+
};
|
|
9
|
+
export declare function buildBackgroundImageStage(gl: WebGL2RenderingContext, positionBuffer: WebGLBuffer, texCoordBuffer: WebGLBuffer, personMaskTexture: WebGLTexture, backgroundImage: HTMLImageElement | null, canvas: HTMLCanvasElement): BackgroundImageStage;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SegmentationConfig } from '../../types';
|
|
2
|
+
export default function buildJointBilateralFilterStage(gl: WebGL2RenderingContext, vertexShader: WebGLShader, positionBuffer: WebGLBuffer, texCoordBuffer: WebGLBuffer, inputTexture: WebGLTexture, segmentationConfig: SegmentationConfig, outputTexture: WebGLTexture, canvas: HTMLCanvasElement): {
|
|
3
|
+
render: () => void;
|
|
4
|
+
updateSigmaSpace: (sigmaSpace: number) => void;
|
|
5
|
+
updateSigmaColor: (sigmaColor: number) => void;
|
|
6
|
+
cleanUp: () => void;
|
|
7
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { SegmentationConfig, TFLite } from '../../types';
|
|
2
|
+
export default function buildLoadSegmentationStage(gl: WebGL2RenderingContext, vertexShader: WebGLShader, positionBuffer: WebGLBuffer, texCoordBuffer: WebGLBuffer, segmentationConfig: SegmentationConfig, tflite: TFLite, outputTexture: WebGLTexture): {
|
|
3
|
+
render: () => void;
|
|
4
|
+
cleanUp: () => void;
|
|
5
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { SegmentationConfig, TFLite } from '../../types';
|
|
2
|
+
export default function buildResizingStage(gl: WebGL2RenderingContext, vertexShader: WebGLShader, positionBuffer: WebGLBuffer, texCoordBuffer: WebGLBuffer, segmentationConfig: SegmentationConfig, tflite: TFLite): {
|
|
3
|
+
render: () => Promise<void>;
|
|
4
|
+
cleanUp: () => void;
|
|
5
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { SegmentationConfig, TFLite } from '../../types';
|
|
2
|
+
export default function buildSoftmaxStage(gl: WebGL2RenderingContext, vertexShader: WebGLShader, positionBuffer: WebGLBuffer, texCoordBuffer: WebGLBuffer, segmentationConfig: SegmentationConfig, tflite: TFLite, outputTexture: WebGLTexture): {
|
|
3
|
+
render: () => void;
|
|
4
|
+
cleanUp: () => void;
|
|
5
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SourcePlayback, BackgroundConfig, PostProcessingConfig, SegmentationConfig, TFLite } from '../../types';
|
|
2
|
+
export interface BuildWebGL2PipeLineParams {
|
|
3
|
+
sourcePlayback: SourcePlayback;
|
|
4
|
+
backgroundImage: HTMLImageElement | null;
|
|
5
|
+
backgroundConfig: BackgroundConfig;
|
|
6
|
+
segmentationConfig: SegmentationConfig;
|
|
7
|
+
canvas: HTMLCanvasElement;
|
|
8
|
+
tflite: TFLite;
|
|
9
|
+
}
|
|
10
|
+
export default function buildWebGL2Pipeline({ sourcePlayback, backgroundImage, backgroundConfig, segmentationConfig, canvas, tflite, }: BuildWebGL2PipeLineParams): {
|
|
11
|
+
render: () => Promise<void>;
|
|
12
|
+
updatePostProcessingConfig: (postProcessingConfig: PostProcessingConfig) => void;
|
|
13
|
+
cleanUp: () => void;
|
|
14
|
+
};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/// <reference types="emscripten" />
|
|
2
|
+
export interface TFLite extends EmscriptenModule {
|
|
3
|
+
_getModelBufferMemoryOffset(): number;
|
|
4
|
+
_getInputMemoryOffset(): number;
|
|
5
|
+
_getInputHeight(): number;
|
|
6
|
+
_getInputWidth(): number;
|
|
7
|
+
_getInputChannelCount(): number;
|
|
8
|
+
_getOutputMemoryOffset(): number;
|
|
9
|
+
_getOutputHeight(): number;
|
|
10
|
+
_getOutputWidth(): number;
|
|
11
|
+
_getOutputChannelCount(): number;
|
|
12
|
+
_loadModel(bufferSize: number): number;
|
|
13
|
+
_runInference(): number;
|
|
14
|
+
}
|
|
15
|
+
export declare type BlendMode = 'screen' | 'linearDodge';
|
|
16
|
+
export interface TimerWorker {
|
|
17
|
+
setTimeout: (callback: () => void, timeoutMs: number) => number;
|
|
18
|
+
clearTimeout: (callbackId: number) => void;
|
|
19
|
+
terminate: () => void;
|
|
20
|
+
}
|
|
21
|
+
export declare type PostProcessingConfig = {
|
|
22
|
+
smoothSegmentationMask: boolean;
|
|
23
|
+
jointBilateralFilter: JointBilateralFilterConfig;
|
|
24
|
+
coverage: [number, number];
|
|
25
|
+
lightWrapping: number;
|
|
26
|
+
blendMode: BlendMode;
|
|
27
|
+
};
|
|
28
|
+
export declare type JointBilateralFilterConfig = {
|
|
29
|
+
sigmaSpace: number;
|
|
30
|
+
sigmaColor: number;
|
|
31
|
+
};
|
|
32
|
+
export declare type SourcePlayback = {
|
|
33
|
+
htmlElement: HTMLImageElement | HTMLVideoElement;
|
|
34
|
+
width: number;
|
|
35
|
+
height: number;
|
|
36
|
+
};
|
|
37
|
+
export declare type BackgroundConfig = {
|
|
38
|
+
type: 'none' | 'blur' | 'image';
|
|
39
|
+
url?: string;
|
|
40
|
+
imageSource: HTMLImageElement | null;
|
|
41
|
+
};
|
|
42
|
+
export declare type PipelineType = 'canvas2dCpu' | 'webgl2';
|
|
43
|
+
export declare type SegmentationModel = 'meet' | 'mlkit';
|
|
44
|
+
export declare type SegmentationBackend = 'webgl' | 'wasm' | 'wasmSimd';
|
|
45
|
+
export declare type InputResolution = '640x360' | '256x256' | '256x144' | '160x96';
|
|
46
|
+
export declare type SegmentationConfig = {
|
|
47
|
+
model: SegmentationModel;
|
|
48
|
+
backend: SegmentationBackend;
|
|
49
|
+
inputResolution: InputResolution;
|
|
50
|
+
pipeline: PipelineType;
|
|
51
|
+
targetFps: number;
|
|
52
|
+
deferInputResizing: boolean;
|
|
53
|
+
};
|
|
54
|
+
export interface PipeLine {
|
|
55
|
+
render: () => Promise<void>;
|
|
56
|
+
updatePostProcessingConfig: (postProcessingConfig: PostProcessingConfig) => void;
|
|
57
|
+
cleanUp: () => void;
|
|
58
|
+
}
|
|
59
|
+
export interface PipeLineConfig {
|
|
60
|
+
backgroundConfig: BackgroundConfig;
|
|
61
|
+
segmentationConfig: SegmentationConfig;
|
|
62
|
+
postprocessingConfig: PostProcessingConfig;
|
|
63
|
+
}
|
|
64
|
+
export interface BuildPipeLineConfig {
|
|
65
|
+
config: PipeLineConfig;
|
|
66
|
+
sourcePlayback: SourcePlayback;
|
|
67
|
+
destinationPlayback: HTMLCanvasElement;
|
|
68
|
+
tflite: TFLite;
|
|
69
|
+
}
|
|
70
|
+
export interface TrackProcessingContext {
|
|
71
|
+
pipeline: PipeLine;
|
|
72
|
+
source: HTMLVideoElement | HTMLImageElement;
|
|
73
|
+
destination: HTMLCanvasElement;
|
|
74
|
+
track: MediaStreamTrack;
|
|
75
|
+
timerWorker: TimerWorker;
|
|
76
|
+
timerId: number;
|
|
77
|
+
}
|
|
78
|
+
export declare type GetProcessedTrackParams = {
|
|
79
|
+
track: MediaStreamTrack;
|
|
80
|
+
pipelineConfig: PipeLineConfig;
|
|
81
|
+
};
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import { ProducerCodecOptions } from 'mediasoup-client/lib/Producer';
|
|
2
2
|
import { RtpEncodingParameters } from 'mediasoup-client/lib/RtpParameters';
|
|
3
|
-
import { AudioCodec, AudioEncoderConfig } from '../../../types/common';
|
|
4
|
-
import BaseTrack from './BaseTrack';
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
import { AudioCodec, AudioEncoderConfig, TrackWithEncodings } from '../../../types/common';
|
|
4
|
+
import BaseTrack, { BaseTrackConstructorParams } from './BaseTrack';
|
|
5
|
+
interface AudioTrackParams extends BaseTrackConstructorParams {
|
|
6
|
+
noiseSuppressor?: WebAssembly.WebAssemblyInstantiatedSource;
|
|
7
|
+
}
|
|
8
|
+
declare class AudioTrack extends BaseTrack implements TrackWithEncodings {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(params: AudioTrackParams);
|
|
11
|
+
get isEffectsProcessing(): boolean;
|
|
7
12
|
getEncoderConfig(): AudioEncoderConfig;
|
|
8
13
|
getEncodings(): RtpEncodingParameters[];
|
|
9
14
|
getCodecOptions(): ProducerCodecOptions;
|
|
10
15
|
getPreferredCodec(): AudioCodec;
|
|
16
|
+
enableNoiseSuppression(): Promise<void>;
|
|
17
|
+
disableNoiseSuppression(): Promise<void>;
|
|
11
18
|
publish(): Promise<void>;
|
|
12
19
|
}
|
|
13
20
|
export default AudioTrack;
|
|
@@ -51,6 +51,7 @@ declare class BaseTrack {
|
|
|
51
51
|
resume(): Promise<void>;
|
|
52
52
|
getInfo(): Promise<BaseTrackInfo>;
|
|
53
53
|
getStats(): Promise<TrackOutboundStats | undefined>;
|
|
54
|
+
replaceTrack(track: MediaStreamTrack): Promise<void>;
|
|
54
55
|
private resumeProducer;
|
|
55
56
|
private reopenMediaStreamTrack;
|
|
56
57
|
private getOutboundRTPStreamStats;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { ProducerCodecOptions } from 'mediasoup-client/lib/Producer';
|
|
2
2
|
import { RtpEncodingParameters } from 'mediasoup-client/lib/RtpParameters';
|
|
3
|
-
import { TrackPublishParams, VideoCodec, VideoEncoderConfig } from '../../../types/common';
|
|
4
|
-
import BaseTrack from './BaseTrack';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
declare class VideoTrack extends BaseTrack implements TrackWithCodecOptions, TrackWithEncodings {
|
|
3
|
+
import { TrackPublishParams, TrackWithEncodings, VideoCodec, VideoEncoderConfig } from '../../../types/common';
|
|
4
|
+
import BaseTrack, { BaseTrackConstructorParams } from './BaseTrack';
|
|
5
|
+
declare class VideoTrack extends BaseTrack implements TrackWithEncodings {
|
|
6
|
+
#private;
|
|
8
7
|
transformParams: {};
|
|
8
|
+
constructor(params: BaseTrackConstructorParams);
|
|
9
|
+
get isEffectsProcessing(): boolean;
|
|
9
10
|
getEncoderConfig(): VideoEncoderConfig;
|
|
10
11
|
getCodecOptions(): ProducerCodecOptions;
|
|
11
12
|
getPreferredCodec(): VideoCodec;
|
|
@@ -13,6 +14,10 @@ declare class VideoTrack extends BaseTrack implements TrackWithCodecOptions, Tra
|
|
|
13
14
|
setTransformParams(transformParams: {}): void;
|
|
14
15
|
setMaxSpatialLayer(spatialLayer: number): Promise<void>;
|
|
15
16
|
getMaxSpatialLayer(): number | undefined;
|
|
17
|
+
enableBlur(): Promise<void>;
|
|
18
|
+
disableBlur(): Promise<void>;
|
|
16
19
|
publish(params?: TrackPublishParams): Promise<void>;
|
|
20
|
+
private watchOrientation;
|
|
21
|
+
private watchDocumentVisibility;
|
|
17
22
|
}
|
|
18
23
|
export default VideoTrack;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isSafari: () => boolean;
|
package/dist/helpers/media.d.ts
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -23,13 +23,14 @@ declare class Client {
|
|
|
23
23
|
get peers(): Peer[];
|
|
24
24
|
get availableVideoDevices(): MediaDeviceInfo[];
|
|
25
25
|
get availableAudioDevices(): MediaDeviceInfo[];
|
|
26
|
+
get canUseNoiseSuppression(): boolean;
|
|
26
27
|
detectDevices(): Promise<AvailableMediaDevices>;
|
|
27
28
|
join(params: JoinChannelParams): Promise<void>;
|
|
28
29
|
leave(): Promise<void>;
|
|
29
30
|
createCameraVideoTrack(options?: CreateCameraVideoTrackOptions): Promise<Track>;
|
|
30
31
|
createMicrophoneAudioTrack(options?: CreateMicrophoneAudioTrackOptions): Promise<Track>;
|
|
31
32
|
createScreenMediaTracks(options?: CreateScreenMediaOptions): Promise<Track[]>;
|
|
32
|
-
deleteTrack(track: Track): void
|
|
33
|
+
deleteTrack(track: Track): Promise<void>;
|
|
33
34
|
loadPeers(role?: Role): Promise<void>;
|
|
34
35
|
updateAppData(appData: Record<string, unknown>): Promise<void>;
|
|
35
36
|
getTransportsInfo(): Promise<TransportsStateInfo>;
|