@livedigital/client 3.28.1 → 3.29.0
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/dist/config/ConfigService.d.ts +6 -1
- package/dist/constants/events.d.ts +1 -0
- package/dist/constants/events.ts +1 -0
- package/dist/engine/IntegrationsService.d.ts +28 -0
- package/dist/engine/index.d.ts +7 -3
- package/dist/engine/media/index.d.ts +10 -5
- package/dist/engine/media/streamEffects/ProcessorsCache.d.ts +11 -0
- package/dist/engine/media/streamEffects/audio/AudioTrackProcessor.d.ts +6 -0
- package/dist/engine/media/streamEffects/audio/asdk/ASDKTrackProcessor.d.ts +23 -0
- package/dist/engine/media/streamEffects/audio/noiseSuppression/{TrackProcessor.d.ts → RNNoiseTrackProcessor.d.ts} +3 -1
- package/dist/engine/media/tracks/DefaultAudioTrack.d.ts +11 -2
- package/dist/helpers/loader.d.ts +3 -0
- package/dist/index.es.js +4 -4
- package/dist/index.js +19 -19
- package/dist/inversify.factories.d.ts +2 -1
- package/dist/inversify.tokens.d.ts +3 -0
- package/dist/types/client.d.ts +6 -0
- package/dist/types/container.d.ts +7 -0
- package/dist/types/engine.d.ts +1 -0
- package/dist/types/media.d.ts +5 -4
- package/package.json +2 -1
- package/src/config/ConfigService.ts +13 -2
- package/src/constants/events.ts +1 -0
- package/src/engine/IntegrationsService.ts +155 -0
- package/src/engine/index.ts +22 -56
- package/src/engine/media/index.ts +79 -27
- package/src/engine/media/streamEffects/ProcessorsCache.ts +41 -0
- package/src/engine/media/streamEffects/audio/AudioTrackProcessor.ts +6 -0
- package/src/engine/media/streamEffects/audio/asdk/ASDKTrackProcessor.ts +155 -0
- package/src/engine/media/streamEffects/audio/asdk/atsrb.d.ts +37 -0
- package/src/engine/media/streamEffects/audio/asdk/errorBus.d.ts +42 -0
- package/src/engine/media/streamEffects/audio/noiseSuppression/{TrackProcessor.ts → RNNoiseTrackProcessor.ts} +32 -6
- package/src/engine/media/streamEffects/video/esdk/TrackProcessor.ts +5 -2
- package/src/engine/media/tracks/DefaultAudioTrack.ts +39 -14
- package/src/engine/media/tracks/DefaultBaseTrack.ts +9 -0
- package/src/helpers/loader.ts +49 -0
- package/src/index.ts +4 -1
- package/src/inversify.config.ts +29 -2
- package/src/inversify.factories.ts +47 -2
- package/src/inversify.tokens.ts +3 -0
- package/src/types/client.ts +6 -0
- package/src/types/container.ts +8 -0
- package/src/types/engine.ts +1 -0
- package/src/types/media.ts +5 -4
- package/dist/helpers/config.d.ts +0 -10
- package/src/helpers/config.ts +0 -31
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { LoadBalancerApiClientParams } from '../engine/network/LoadBalancerClient';
|
|
2
2
|
import * as client from '../types/client';
|
|
3
3
|
import { InitEffectsSDKParams } from '../types/media';
|
|
4
|
-
declare type ParamsToOmit = 'clientEventEmitter' | 'internalEventEmitter' | 'network' | 'effectsSDKParams';
|
|
4
|
+
declare type ParamsToOmit = 'clientEventEmitter' | 'internalEventEmitter' | 'network' | 'effectsSDKParams' | 'asdk';
|
|
5
5
|
export declare type ProcessedParams = Required<Omit<client.ClientParams, ParamsToOmit>> & {
|
|
6
6
|
loadbalancer: LoadBalancerApiClientParams;
|
|
7
7
|
effectsSDKParams?: InitEffectsSDKParams;
|
|
8
|
+
asdk: {
|
|
9
|
+
customerId: string;
|
|
10
|
+
version: '2.3.5';
|
|
11
|
+
localDir?: string;
|
|
12
|
+
};
|
|
8
13
|
};
|
|
9
14
|
export default class ConfigService {
|
|
10
15
|
#private;
|
|
@@ -37,6 +37,7 @@ export declare const CLIENT_EVENTS: {
|
|
|
37
37
|
readonly connectionRestored: "connection-restored";
|
|
38
38
|
readonly forcedDisconnect: "forced-disconnect";
|
|
39
39
|
readonly rejectUnauthorized: "reject-unauthorized";
|
|
40
|
+
readonly denoiserInitializing: "denoiser-initializing";
|
|
40
41
|
};
|
|
41
42
|
export declare const TRACK_EVENTS: {
|
|
42
43
|
readonly volumeChanged: "volume-changed";
|
package/dist/constants/events.ts
CHANGED
|
@@ -38,6 +38,7 @@ export const CLIENT_EVENTS = {
|
|
|
38
38
|
connectionRestored: 'connection-restored',
|
|
39
39
|
forcedDisconnect: 'forced-disconnect',
|
|
40
40
|
rejectUnauthorized: 'reject-unauthorized',
|
|
41
|
+
denoiserInitializing: 'denoiser-initializing',
|
|
41
42
|
} as const;
|
|
42
43
|
|
|
43
44
|
export const TRACK_EVENTS = {
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import ConfigService from '../config/ConfigService';
|
|
2
|
+
import { AudioTrackProcessorFactory, LoggerFactory } from '../types/container';
|
|
3
|
+
import { ProcessorsCache } from './media/streamEffects/ProcessorsCache';
|
|
4
|
+
export declare type Integrations = 'asdk' | 'rnnoise';
|
|
5
|
+
export declare type IntegrationContext = {
|
|
6
|
+
integrated: boolean;
|
|
7
|
+
initPromise: Promise<void>;
|
|
8
|
+
};
|
|
9
|
+
export interface Integration {
|
|
10
|
+
type: Integrations;
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
isInitialized: boolean;
|
|
13
|
+
waitForInitialization: Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export declare class IntegrationsService {
|
|
16
|
+
#private;
|
|
17
|
+
private readonly config;
|
|
18
|
+
private readonly processorsCache;
|
|
19
|
+
private readonly audioTrackProcessorFactory;
|
|
20
|
+
constructor(config: ConfigService, processorsCache: ProcessorsCache, audioTrackProcessorFactory: AudioTrackProcessorFactory, loggerFactory: LoggerFactory);
|
|
21
|
+
init(): void;
|
|
22
|
+
private integrateASDK;
|
|
23
|
+
get audio(): Integration;
|
|
24
|
+
private getASDKState;
|
|
25
|
+
private getRNNoiseState;
|
|
26
|
+
private integrateRNNoise;
|
|
27
|
+
reset(): void;
|
|
28
|
+
}
|
package/dist/engine/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { MediaKind } from 'mediasoup-client/lib/RtpParameters';
|
|
2
2
|
import WebRTCIssueDetector from 'webrtc-issue-detector';
|
|
3
|
+
import ConfigService from '../config/ConfigService';
|
|
3
4
|
import EnhancedEventEmitter from '../EnhancedEventEmitter';
|
|
4
5
|
import { CreateCameraVideoTrackOptions, CreateMicrophoneAudioTrackOptions, CreateScreenMediaOptions, JoinChannelParams, PeerResponse, Role } from '../types/common';
|
|
5
6
|
import type { PeerTrackFactory } from '../types/container';
|
|
@@ -10,8 +11,10 @@ import ChannelStateSynchronizer from './ChannelStateSynchronizer/ChannelStateSyn
|
|
|
10
11
|
import EventsQueue from './EventsQueue';
|
|
11
12
|
import ChannelEventHandler from './handlers/ChannelEventHandler';
|
|
12
13
|
import MediaSoupEventHandler from './handlers/MediaSoupEventHandler';
|
|
14
|
+
import { IntegrationsService } from './IntegrationsService';
|
|
13
15
|
import Logger from './Logger';
|
|
14
16
|
import Media from './media';
|
|
17
|
+
import { ProcessorsCache } from './media/streamEffects/ProcessorsCache';
|
|
15
18
|
import VideoTrack from './media/tracks/DefaultVideoTrack';
|
|
16
19
|
import { MyPeer } from './MyPeer';
|
|
17
20
|
import Network from './network';
|
|
@@ -25,8 +28,11 @@ import { TransportsWebRTCStats } from './WebRTCStats/types';
|
|
|
25
28
|
import DataChannelsManager from './network/DataChannelsManager';
|
|
26
29
|
declare class Engine {
|
|
27
30
|
#private;
|
|
31
|
+
private readonly config;
|
|
28
32
|
private readonly state;
|
|
29
33
|
private readonly myPeer;
|
|
34
|
+
private readonly integrationsService;
|
|
35
|
+
private readonly processorsCache;
|
|
30
36
|
private readonly mediaSoupEventsHandler;
|
|
31
37
|
private readonly channelEventsHandler;
|
|
32
38
|
readonly channelStateSynchronizer: ChannelStateSynchronizer;
|
|
@@ -45,11 +51,10 @@ declare class Engine {
|
|
|
45
51
|
private readonly webRtcIssueDetector?;
|
|
46
52
|
private rejoinRequested;
|
|
47
53
|
private isReleasing;
|
|
48
|
-
constructor(state: CallState, myPeer: MyPeer, loggerFactory: (namespace: string) => Logger, mediaSoupEventsHandler: MediaSoupEventHandler, channelEventsHandler: ChannelEventHandler, channelStateSynchronizer: ChannelStateSynchronizer, peerTrackFactory: PeerTrackFactory, peers: IPeersService, system: System, media: Media, network: Network, loadBalancerClient: LoadBalancerApiClient, socket: SocketIO, eventsQueue: EventsQueue, clientEventEmitter: EnhancedEventEmitter, internalEventEmitter: EnhancedEventEmitter, statsHandler: StatsHandler, dataChannelsManager: DataChannelsManager, webRtcIssueDetector?: WebRTCIssueDetector | undefined);
|
|
54
|
+
constructor(config: ConfigService, state: CallState, myPeer: MyPeer, loggerFactory: (namespace: string) => Logger, integrationsService: IntegrationsService, processorsCache: ProcessorsCache, mediaSoupEventsHandler: MediaSoupEventHandler, channelEventsHandler: ChannelEventHandler, channelStateSynchronizer: ChannelStateSynchronizer, peerTrackFactory: PeerTrackFactory, peers: IPeersService, system: System, media: Media, network: Network, loadBalancerClient: LoadBalancerApiClient, socket: SocketIO, eventsQueue: EventsQueue, clientEventEmitter: EnhancedEventEmitter, internalEventEmitter: EnhancedEventEmitter, statsHandler: StatsHandler, dataChannelsManager: DataChannelsManager, webRtcIssueDetector?: WebRTCIssueDetector | undefined);
|
|
49
55
|
get isChannelJoined(): boolean;
|
|
50
56
|
private initialize;
|
|
51
57
|
release(keepTracks?: boolean): Promise<void>;
|
|
52
|
-
private releaseForRejoin;
|
|
53
58
|
private removeClientEventEmitterListeners;
|
|
54
59
|
getPeers(): Peer[];
|
|
55
60
|
get myPeerId(): string | undefined;
|
|
@@ -63,7 +68,6 @@ declare class Engine {
|
|
|
63
68
|
createMicrophoneAudioTrack(options?: CreateMicrophoneAudioTrackOptions): Promise<AudioTrack>;
|
|
64
69
|
createScreenMediaTracks(options?: CreateScreenMediaOptions): Promise<Track[]>;
|
|
65
70
|
deleteTrack(tracks: BaseTrack): Promise<void>;
|
|
66
|
-
get canUseNoiseSuppression(): boolean;
|
|
67
71
|
getNodeActiveStreamsStat(): NodeActiveStreamsStat;
|
|
68
72
|
transportsStats(): TransportsWebRTCStats | undefined;
|
|
69
73
|
private connectToSocketServerWithRetry;
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Device } from 'mediasoup-client';
|
|
2
2
|
import { RtpCapabilities, RtpCodecCapability } from 'mediasoup-client/lib/RtpParameters';
|
|
3
3
|
import ConfigService from '../../config/ConfigService';
|
|
4
|
-
import
|
|
4
|
+
import EnhancedEventEmitter from '../../EnhancedEventEmitter';
|
|
5
|
+
import { CreateCameraVideoTrackOptions, CreateMicrophoneAudioTrackOptions, CreateScreenMediaOptions, CreateVideoTrackParams, TrackLabel, TransformParams } from '../../types/common';
|
|
5
6
|
import type { AudioTrackFactory, VideoTrackFactory } from '../../types/container';
|
|
6
|
-
import { BaseTrack, InitEffectsSDKParams, TrackWithEncodings } from '../../types/media';
|
|
7
|
+
import { AudioTrack, BaseTrack, InitEffectsSDKParams, TrackWithEncodings } from '../../types/media';
|
|
8
|
+
import { IntegrationsService } from '../IntegrationsService';
|
|
7
9
|
import Logger from '../Logger';
|
|
10
|
+
import { ProcessorsCache } from './streamEffects/ProcessorsCache';
|
|
8
11
|
import EffectsSDKTrackProcessor from './streamEffects/video/esdk/TrackProcessor';
|
|
9
12
|
import MediaStreamTrackManager from './tracks/MediaStreamTrackManager';
|
|
10
13
|
declare class Media {
|
|
@@ -12,19 +15,20 @@ declare class Media {
|
|
|
12
15
|
private readonly config;
|
|
13
16
|
private readonly loggerFactory;
|
|
14
17
|
private readonly audioTrackFactory;
|
|
18
|
+
private readonly clientEventEmitter;
|
|
19
|
+
private readonly integrationsService;
|
|
20
|
+
private readonly processorsCache;
|
|
15
21
|
private readonly videoTrackFactory;
|
|
16
22
|
private readonly mediaStreamTrackManager;
|
|
17
23
|
isDeviceLoaded: boolean;
|
|
18
24
|
private device?;
|
|
19
25
|
private tracks;
|
|
20
|
-
constructor(config: ConfigService, loggerFactory: (namespace: string) => Logger, audioTrackFactory: AudioTrackFactory, videoTrackFactory: VideoTrackFactory, mediaStreamTrackManager: MediaStreamTrackManager);
|
|
26
|
+
constructor(config: ConfigService, loggerFactory: (namespace: string) => Logger, audioTrackFactory: AudioTrackFactory, clientEventEmitter: EnhancedEventEmitter, integrationsService: IntegrationsService, processorsCache: ProcessorsCache, videoTrackFactory: VideoTrackFactory, mediaStreamTrackManager: MediaStreamTrackManager);
|
|
21
27
|
get mediasoupDevice(): Device;
|
|
22
|
-
get isNoiseSuppressorLoaded(): boolean;
|
|
23
28
|
get effectsSDKInitialized(): boolean;
|
|
24
29
|
get effectsSDKParams(): InitEffectsSDKParams | null;
|
|
25
30
|
getTrack(label: TrackLabel): BaseTrack | undefined;
|
|
26
31
|
loadDevice(routerRtpCapabilities: RtpCapabilities): Promise<void>;
|
|
27
|
-
createNoiseSuppressor(): Promise<void>;
|
|
28
32
|
getTrackCodec(track: TrackWithEncodings): RtpCodecCapability | undefined;
|
|
29
33
|
private createTracks;
|
|
30
34
|
createUserMediaTracks(constraints: MediaStreamConstraints): Promise<BaseTrack[]>;
|
|
@@ -36,6 +40,7 @@ declare class Media {
|
|
|
36
40
|
unpublishTracks(): Promise<void>;
|
|
37
41
|
setTrack(track: BaseTrack): void;
|
|
38
42
|
initEffectsSDK(): Promise<boolean>;
|
|
43
|
+
initDenoiser(track: AudioTrack, options?: CreateMicrophoneAudioTrackOptions): Promise<void>;
|
|
39
44
|
createEffectsSDKTrackProcessor(trackLabel?: TrackLabel): Promise<EffectsSDKTrackProcessor>;
|
|
40
45
|
static getVideoTrackTransformParams(track: MediaStreamTrack): TransformParams;
|
|
41
46
|
static getScreenVideoTrackParams(options?: CreateScreenMediaOptions): CreateVideoTrackParams;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TrackLabel } from '../../../types/common';
|
|
2
|
+
import { AudioTrackProcessor } from './audio/AudioTrackProcessor';
|
|
3
|
+
export declare type ProcessorType = 'asdk' | 'rnnoise';
|
|
4
|
+
export declare class ProcessorsCache {
|
|
5
|
+
#private;
|
|
6
|
+
add(type: ProcessorType, label: TrackLabel, processor: AudioTrackProcessor): void;
|
|
7
|
+
get(type: ProcessorType, label: TrackLabel): AudioTrackProcessor | undefined;
|
|
8
|
+
has(type: ProcessorType, label: TrackLabel): boolean;
|
|
9
|
+
private getKey;
|
|
10
|
+
reset(): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { LoggerFactory } from '../../../../../types/container';
|
|
2
|
+
import { AudioTrackProcessor } from '../AudioTrackProcessor';
|
|
3
|
+
import type { atsvb } from './atsrb';
|
|
4
|
+
declare global {
|
|
5
|
+
interface Window {
|
|
6
|
+
atsvb: typeof atsvb;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export declare type AudioTrackProcessorParams = {
|
|
10
|
+
esdkCustomerId: string;
|
|
11
|
+
loggerFactory: LoggerFactory;
|
|
12
|
+
onModelsLoaded?: () => void;
|
|
13
|
+
};
|
|
14
|
+
export declare class ASDKTrackProcessor implements AudioTrackProcessor {
|
|
15
|
+
#private;
|
|
16
|
+
readonly type = "asdk";
|
|
17
|
+
constructor(params: AudioTrackProcessorParams);
|
|
18
|
+
init(): Promise<void>;
|
|
19
|
+
get isProcessing(): boolean;
|
|
20
|
+
processTrack(track: MediaStreamTrack): Promise<MediaStreamTrack>;
|
|
21
|
+
stopProcessing(): Promise<void>;
|
|
22
|
+
private atsvbErrorHandler;
|
|
23
|
+
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import Logger from '../../../../Logger';
|
|
2
|
+
import { AudioTrackProcessor } from '../AudioTrackProcessor';
|
|
2
3
|
interface TrackProcessorParams {
|
|
3
4
|
noiseSuppressor: WebAssembly.WebAssemblyInstantiatedSource;
|
|
4
5
|
loggerFactory: (namespace: string) => Logger;
|
|
5
6
|
}
|
|
6
|
-
export default class
|
|
7
|
+
export default class RNNoiseTrackProcessor implements AudioTrackProcessor {
|
|
7
8
|
#private;
|
|
9
|
+
readonly type = "rnnoise";
|
|
8
10
|
constructor(params: TrackProcessorParams);
|
|
9
11
|
get isProcessing(): boolean;
|
|
10
12
|
processTrack(track: MediaStreamTrack): Promise<MediaStreamTrack>;
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
import { ProducerCodecOptions } from 'mediasoup-client/lib/Producer';
|
|
2
2
|
import { RtpEncodingParameters } from 'mediasoup-client/lib/RtpParameters';
|
|
3
|
+
import EnhancedEventEmitter from '../../../EnhancedEventEmitter';
|
|
3
4
|
import { AudioCodec, AudioEncoderConfig } from '../../../types/common';
|
|
5
|
+
import { AudioTrackProcessorFactory } from '../../../types/container';
|
|
6
|
+
import { ClientObserverEvents } from '../../../types/engine';
|
|
4
7
|
import { AudioTrack, AudioTrackParams, BaseTrackDependenciesParams } from '../../../types/media';
|
|
8
|
+
import { AudioTrackProcessor } from '../streamEffects/audio/AudioTrackProcessor';
|
|
5
9
|
import DefaultBaseTrack from './DefaultBaseTrack';
|
|
6
|
-
declare type
|
|
10
|
+
export declare type AudioTrackDependenciesParams = BaseTrackDependenciesParams & {
|
|
11
|
+
processorFactory: AudioTrackProcessorFactory;
|
|
12
|
+
clientEventEmitter: EnhancedEventEmitter<ClientObserverEvents>;
|
|
13
|
+
};
|
|
14
|
+
export declare type AudioTracksConstructorParams = AudioTrackParams & AudioTrackDependenciesParams;
|
|
7
15
|
declare class DefaultAudioTrack extends DefaultBaseTrack implements AudioTrack {
|
|
8
16
|
#private;
|
|
9
|
-
|
|
17
|
+
get isDenoiserRequireActivation(): boolean;
|
|
18
|
+
prepareTrackProcessor(trackProcessor: AudioTrackProcessor): void;
|
|
10
19
|
get isEffectsProcessing(): boolean;
|
|
11
20
|
getEncoderConfig(): AudioEncoderConfig;
|
|
12
21
|
getEncodings(): RtpEncodingParameters[];
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const asyncLoadScript: (url: string) => Promise<HTMLScriptElement>;
|
|
2
|
+
export declare const loadScriptWithRetries: (url: string, maxRetries?: number, retryDelayMs?: number) => Promise<void>;
|
|
3
|
+
export declare const loadScriptWithFallback: (mainUrl: string, fallbackUrl?: string | undefined) => Promise<void>;
|