@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.
Files changed (68) hide show
  1. package/README.md +8 -0
  2. package/dist/engine/index.d.ts +2 -1
  3. package/dist/engine/media/index.d.ts +3 -1
  4. package/dist/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionAudioWorkletNode.d.ts +6 -0
  5. package/dist/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionNodeProvider.d.ts +9 -0
  6. package/dist/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionScriptProcessorNode.d.ts +8 -0
  7. package/dist/engine/media/streamEffects/audio/noiseSuppression/TrackProcessor.d.ts +13 -0
  8. package/dist/engine/media/streamEffects/audio/noiseSuppression/WasmModuleCompiler.d.ts +3 -0
  9. package/dist/engine/media/streamEffects/video/virtual-background/TensorFlowLoader.d.ts +13 -0
  10. package/dist/engine/media/streamEffects/video/virtual-background/TrackProcessor.d.ts +16 -0
  11. package/dist/engine/media/streamEffects/video/virtual-background/constants.d.ts +7 -0
  12. package/dist/engine/media/streamEffects/video/virtual-background/helpers/buildTimerWorker.d.ts +5 -0
  13. package/dist/engine/media/streamEffects/video/virtual-background/pipelines/canvas2d/canvas2dPipeline.d.ts +13 -0
  14. package/dist/engine/media/streamEffects/video/virtual-background/pipelines/helpers/webglHelper.d.ts +8 -0
  15. package/dist/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/backgroundBlurStage.d.ts +6 -0
  16. package/dist/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/backgroundImageStage.d.ts +9 -0
  17. package/dist/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildJointBilateralFilterStage.d.ts +7 -0
  18. package/dist/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildLoadSegmentationStage.d.ts +5 -0
  19. package/dist/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildResizingStage.d.ts +5 -0
  20. package/dist/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildSoftmaxStage.d.ts +5 -0
  21. package/dist/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/webgl2Pipeline.d.ts +14 -0
  22. package/dist/engine/media/streamEffects/video/virtual-background/types.d.ts +81 -0
  23. package/dist/engine/media/tracks/AudioTrack.d.ts +11 -4
  24. package/dist/engine/media/tracks/BaseTrack.d.ts +1 -0
  25. package/dist/engine/media/tracks/VideoTrack.d.ts +10 -5
  26. package/dist/helpers/browser.d.ts +1 -0
  27. package/dist/helpers/media.d.ts +1 -0
  28. package/dist/index.d.ts +2 -1
  29. package/dist/index.es.js +225 -1
  30. package/dist/index.js +225 -1
  31. package/dist/types/common.d.ts +6 -0
  32. package/dist/types/streamEffects.d.ts +18 -0
  33. package/package.json +5 -2
  34. package/src/engine/DefaultEngineDependenciesFactory.ts +2 -2
  35. package/src/engine/index.ts +22 -1
  36. package/src/engine/media/index.ts +28 -3
  37. package/src/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionAudioWorkletNode.ts +30 -0
  38. package/src/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionNodeProvider.ts +44 -0
  39. package/src/engine/media/streamEffects/audio/noiseSuppression/NoiseSuppressionScriptProcessorNode.ts +54 -0
  40. package/src/engine/media/streamEffects/audio/noiseSuppression/TrackProcessor.ts +99 -0
  41. package/src/engine/media/streamEffects/audio/noiseSuppression/WasmModuleCompiler.ts +10 -0
  42. package/src/engine/media/streamEffects/video/virtual-background/TensorFlowLoader.ts +89 -0
  43. package/src/engine/media/streamEffects/video/virtual-background/TrackProcessor.ts +161 -0
  44. package/src/engine/media/streamEffects/video/virtual-background/constants.ts +62 -0
  45. package/src/engine/media/streamEffects/video/virtual-background/helpers/buildTimerWorker.ts +42 -0
  46. package/src/engine/media/streamEffects/video/virtual-background/pipelines/canvas2d/canvas2dPipeline.ts +160 -0
  47. package/src/engine/media/streamEffects/video/virtual-background/pipelines/helpers/webglHelper.ts +133 -0
  48. package/src/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/backgroundBlurStage.ts +292 -0
  49. package/src/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/backgroundImageStage.ts +221 -0
  50. package/src/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildJointBilateralFilterStage.ts +158 -0
  51. package/src/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildLoadSegmentationStage.ts +103 -0
  52. package/src/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildResizingStage.ts +111 -0
  53. package/src/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/buildSoftmaxStage.ts +106 -0
  54. package/src/engine/media/streamEffects/video/virtual-background/pipelines/webgl2/webgl2Pipeline.ts +217 -0
  55. package/src/engine/media/streamEffects/video/virtual-background/types.ts +94 -0
  56. package/src/engine/media/tracks/AudioTrack.ts +77 -4
  57. package/src/engine/media/tracks/BaseTrack.ts +10 -2
  58. package/src/engine/media/tracks/PeerTrack.ts +1 -2
  59. package/src/engine/media/tracks/VideoTrack.ts +104 -5
  60. package/src/helpers/browser.ts +2 -0
  61. package/src/helpers/media.ts +12 -0
  62. package/src/index.ts +5 -1
  63. package/src/types/common.ts +7 -0
  64. package/src/types/streamEffects.ts +23 -0
  65. package/dist/engine/media/tracks/TrackWithCodecOptions.d.ts +0 -4
  66. package/dist/engine/media/tracks/TrackWithEncodings.d.ts +0 -4
  67. package/src/engine/media/tracks/TrackWithCodecOptions.ts +0 -5
  68. 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.
@@ -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;
@@ -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
+ }
@@ -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,3 @@
1
+ export default class WasmModuleCompiler {
2
+ static compileModule(binaryFilePath: string): Promise<WebAssembly.WebAssemblyInstantiatedSource>;
3
+ }
@@ -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,5 @@
1
+ export default function buildTimerWorker(): {
2
+ setTimeout: (callback: () => void, timeoutMs: number) => number;
3
+ clearTimeout: (callbackId: number) => void;
4
+ terminate: () => void;
5
+ };
@@ -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
+ };
@@ -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
- import TrackWithCodecOptions from './TrackWithCodecOptions';
6
- declare class AudioTrack extends BaseTrack implements TrackWithCodecOptions {
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
- import TrackWithCodecOptions from './TrackWithCodecOptions';
6
- import TrackWithEncodings from './TrackWithEncodings';
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;
@@ -1,2 +1,3 @@
1
1
  import { types } from 'mediasoup-client';
2
2
  export declare const detectHandlerName: (userAgent?: string | undefined) => types.BuiltinHandlerName | undefined;
3
+ export declare const getNewAudioContext: (contextOptions?: AudioContextOptions | undefined) => AudioContext | null;
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>;