@livedigital/client 2.45.0-test-speaker.1 → 3.0.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/constants/common.d.ts +1 -0
- package/dist/engine/handlers/ChannelAudioObserverEventHandler.d.ts +0 -3
- package/dist/engine/index.d.ts +9 -4
- package/dist/engine/media/DefaultMediaTracksFactory.d.ts +6 -0
- package/dist/engine/media/index.d.ts +9 -8
- package/dist/engine/media/tracks/{AudioTrack.d.ts → DefaultAudioTrack.d.ts} +5 -7
- package/dist/engine/media/tracks/{BaseTrack.d.ts → DefaultBaseTrack.d.ts} +6 -14
- package/dist/engine/media/tracks/{VideoTrack.d.ts → DefaultVideoTrack.d.ts} +7 -6
- package/dist/engine/network/Socket.d.ts +2 -2
- package/dist/helpers/retry.d.ts +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.es.js +11 -11
- package/dist/index.js +11 -11
- package/dist/types/common.d.ts +2 -14
- package/dist/types/engine.d.ts +8 -1
- package/dist/types/media.d.ts +73 -0
- package/dist/types/network.d.ts +20 -0
- package/package.json +3 -1
- package/src/constants/common.ts +2 -0
- package/src/engine/handlers/ChannelAudioObserverEventHandler.ts +0 -23
- package/src/engine/handlers/MediaSoupEventHandler.ts +1 -1
- package/src/engine/index.ts +52 -33
- package/src/engine/media/DefaultMediaTracksFactory.ts +17 -0
- package/src/engine/media/index.ts +19 -16
- package/src/engine/media/tracks/{AudioTrack.ts → DefaultAudioTrack.ts} +5 -8
- package/src/engine/media/tracks/{BaseTrack.ts → DefaultBaseTrack.ts} +9 -13
- package/src/engine/media/tracks/{VideoTrack.ts → DefaultVideoTrack.ts} +7 -6
- package/src/engine/network/Socket.ts +6 -3
- package/src/helpers/media.ts +1 -1
- package/src/helpers/retry.ts +5 -0
- package/src/index.ts +8 -3
- package/src/types/common.ts +2 -17
- package/src/types/engine.ts +11 -1
- package/src/types/media.ts +96 -0
- package/src/types/network.ts +24 -0
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import { ProducerCodecOptions } from 'mediasoup-client/lib/Producer';
|
|
2
2
|
import { RtpEncodingParameters } from 'mediasoup-client/lib/RtpParameters';
|
|
3
|
-
import { AudioCodec, AudioEncoderConfig
|
|
4
|
-
import
|
|
3
|
+
import { AudioCodec, AudioEncoderConfig } from '../../../types/common';
|
|
4
|
+
import DefaultBaseTrack from './DefaultBaseTrack';
|
|
5
5
|
import { INTERNAL_CLIENT_EVENTS } from '../../../constants/events';
|
|
6
6
|
import { AUDIO_ENCODINGS } from '../../../constants/encodings';
|
|
7
7
|
import TrackProcessor from '../streamEffects/audio/noiseSuppression/TrackProcessor';
|
|
8
8
|
import Logger from '../../Logger';
|
|
9
|
+
import { AudioTrack, AudioTrackParams } from '../../../types/media';
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
noiseSuppressor?: WebAssembly.WebAssemblyInstantiatedSource;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
class AudioTrack extends BaseTrack implements TrackWithEncodings {
|
|
11
|
+
class DefaultAudioTrack extends DefaultBaseTrack implements AudioTrack {
|
|
15
12
|
readonly #trackProcessor?: TrackProcessor;
|
|
16
13
|
|
|
17
14
|
#originalTrack?: MediaStreamTrack;
|
|
@@ -115,4 +112,4 @@ class AudioTrack extends BaseTrack implements TrackWithEncodings {
|
|
|
115
112
|
}
|
|
116
113
|
}
|
|
117
114
|
|
|
118
|
-
export default
|
|
115
|
+
export default DefaultAudioTrack;
|
|
@@ -4,7 +4,6 @@ import { Mutex } from 'async-mutex';
|
|
|
4
4
|
import {
|
|
5
5
|
BaseTrackInfo,
|
|
6
6
|
EncoderConfig,
|
|
7
|
-
LogLevel,
|
|
8
7
|
SocketResponse, Timeout,
|
|
9
8
|
TrackLabel,
|
|
10
9
|
TrackOutboundStats,
|
|
@@ -18,17 +17,9 @@ import { CLIENT_EVENTS, INTERNAL_CLIENT_EVENTS, MEDIASOUP_EVENTS } from '../../.
|
|
|
18
17
|
import EnhancedEventEmitter from '../../../EnhancedEventEmitter';
|
|
19
18
|
import filterStatsCodecs from '../../../helpers/filterStatsCodecs';
|
|
20
19
|
import MediaStreamTrackManager from './MediaStreamTrackManager';
|
|
20
|
+
import { BaseTrack, BaseTrackParams } from '../../../types/media';
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
mediaStreamTrack: MediaStreamTrack,
|
|
24
|
-
logLevel: LogLevel,
|
|
25
|
-
engine: Engine,
|
|
26
|
-
clientEventEmitter: EnhancedEventEmitter,
|
|
27
|
-
constraints: MediaStreamConstraints;
|
|
28
|
-
mediaStreamTrackManager: MediaStreamTrackManager;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
class BaseTrack {
|
|
22
|
+
class DefaultBaseTrack implements BaseTrack {
|
|
32
23
|
#mediaStreamTrack: MediaStreamTrack;
|
|
33
24
|
|
|
34
25
|
protected encoderConfig: EncoderConfig = {};
|
|
@@ -59,7 +50,7 @@ class BaseTrack {
|
|
|
59
50
|
|
|
60
51
|
#mutex = new Mutex();
|
|
61
52
|
|
|
62
|
-
constructor(params:
|
|
53
|
+
constructor(params: BaseTrackParams) {
|
|
63
54
|
const {
|
|
64
55
|
mediaStreamTrack, logLevel, engine, clientEventEmitter, constraints, mediaStreamTrackManager,
|
|
65
56
|
} = params;
|
|
@@ -385,6 +376,11 @@ class BaseTrack {
|
|
|
385
376
|
}
|
|
386
377
|
}
|
|
387
378
|
|
|
379
|
+
async publish(): Promise<void> {
|
|
380
|
+
await this.produce({});
|
|
381
|
+
this.clientEventEmitter.emit(INTERNAL_CLIENT_EVENTS.trackProduced, this);
|
|
382
|
+
}
|
|
383
|
+
|
|
388
384
|
async unpublish(): Promise<void> {
|
|
389
385
|
try {
|
|
390
386
|
if (!this.producer) {
|
|
@@ -558,4 +554,4 @@ class BaseTrack {
|
|
|
558
554
|
}
|
|
559
555
|
}
|
|
560
556
|
|
|
561
|
-
export default
|
|
557
|
+
export default DefaultBaseTrack;
|
|
@@ -2,24 +2,25 @@ import { ProducerCodecOptions } from 'mediasoup-client/lib/Producer';
|
|
|
2
2
|
import { RtpEncodingParameters } from 'mediasoup-client/lib/RtpParameters';
|
|
3
3
|
import { WEBCAM_SIMULCAST_ENCODINGS } from '../../../constants/encodings';
|
|
4
4
|
import {
|
|
5
|
-
TrackLabel,
|
|
5
|
+
TrackLabel, VideoCodec, VideoEncoderConfig,
|
|
6
6
|
} from '../../../types/common';
|
|
7
|
-
import
|
|
7
|
+
import DefaultBaseTrack from './DefaultBaseTrack';
|
|
8
8
|
import { INTERNAL_CLIENT_EVENTS } from '../../../constants/events';
|
|
9
9
|
import TrackProcessor from '../streamEffects/video/virtual-background/TrackProcessor';
|
|
10
10
|
import {
|
|
11
11
|
BLUR_IN_BACKGROUND_TASK_PIPELINE_CONFIG,
|
|
12
12
|
BLUR_PIPELINE_CONFIG,
|
|
13
13
|
} from '../streamEffects/video/virtual-background/constants';
|
|
14
|
+
import { BaseTrackParams, VideoTrack, VideoTrackPublishParams } from '../../../types/media';
|
|
14
15
|
|
|
15
|
-
class
|
|
16
|
+
class DefaultVideoTrack extends DefaultBaseTrack implements VideoTrack {
|
|
16
17
|
readonly #trackProcessor: TrackProcessor;
|
|
17
18
|
|
|
18
19
|
#originalTrack?: MediaStreamTrack;
|
|
19
20
|
|
|
20
21
|
public transformParams = {};
|
|
21
22
|
|
|
22
|
-
constructor(params:
|
|
23
|
+
constructor(params: BaseTrackParams) {
|
|
23
24
|
super(params);
|
|
24
25
|
this.#trackProcessor = new TrackProcessor({
|
|
25
26
|
logLevel: params.logLevel,
|
|
@@ -124,7 +125,7 @@ class VideoTrack extends BaseTrack implements TrackWithEncodings {
|
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
127
|
|
|
127
|
-
async publish(params:
|
|
128
|
+
async publish(params: VideoTrackPublishParams = {}): Promise<void> {
|
|
128
129
|
await this.produce({
|
|
129
130
|
encodings: this.getEncodings(),
|
|
130
131
|
preferredCodec: this.getPreferredCodec(),
|
|
@@ -184,4 +185,4 @@ class VideoTrack extends BaseTrack implements TrackWithEncodings {
|
|
|
184
185
|
}
|
|
185
186
|
}
|
|
186
187
|
|
|
187
|
-
export default
|
|
188
|
+
export default DefaultVideoTrack;
|
|
@@ -50,11 +50,14 @@ class SocketIO {
|
|
|
50
50
|
return this.connection?.id;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
connect(serverUrl: string): void {
|
|
53
|
+
connect(serverUrl: string, token: string): void {
|
|
54
54
|
const connection = io(serverUrl, {
|
|
55
55
|
transports: ['polling', 'websocket'],
|
|
56
56
|
upgrade: true,
|
|
57
57
|
rememberUpgrade: false,
|
|
58
|
+
auth: {
|
|
59
|
+
token,
|
|
60
|
+
},
|
|
58
61
|
});
|
|
59
62
|
|
|
60
63
|
this.connection = connection;
|
|
@@ -114,7 +117,7 @@ class SocketIO {
|
|
|
114
117
|
}
|
|
115
118
|
}
|
|
116
119
|
|
|
117
|
-
request(event: string, payload = {}): Promise<SocketResponse
|
|
120
|
+
request<T>(event: string, payload = {}): Promise<SocketResponse<T>> {
|
|
118
121
|
return new Promise((resolve, reject) => {
|
|
119
122
|
if (!this.connection) {
|
|
120
123
|
this.logger.error('request()', { type: event, data: payload });
|
|
@@ -122,7 +125,7 @@ class SocketIO {
|
|
|
122
125
|
return;
|
|
123
126
|
}
|
|
124
127
|
|
|
125
|
-
this.connection.emit(event, payload, (response: SocketResponse) => {
|
|
128
|
+
this.connection.emit(event, payload, (response: SocketResponse<T>) => {
|
|
126
129
|
if (response.error) {
|
|
127
130
|
this.logger.error('request()', { event, payload, response });
|
|
128
131
|
reject(response.error);
|
package/src/helpers/media.ts
CHANGED
|
@@ -26,7 +26,7 @@ export const detectHandlerName = (userAgent?: string): types.BuiltinHandlerName
|
|
|
26
26
|
|
|
27
27
|
export const getNewAudioContext = (contextOptions?: AudioContextOptions): AudioContext | null => {
|
|
28
28
|
const Context = window.AudioContext // Default
|
|
29
|
-
|| window.webkitAudioContext // Safari and old versions of Chrome
|
|
29
|
+
|| (window as unknown as { webkitAudioContext : any }).webkitAudioContext // Safari and old versions of Chrome
|
|
30
30
|
|| false;
|
|
31
31
|
|
|
32
32
|
if (Context) {
|
package/src/helpers/retry.ts
CHANGED
|
@@ -7,6 +7,7 @@ export type RetryOpts = {
|
|
|
7
7
|
maxBackoffDelayMs?: number;
|
|
8
8
|
actionName?: string; // human-readable action name for debug purposes
|
|
9
9
|
logger?: Logger;
|
|
10
|
+
abortOnError?: (error: any) => boolean;
|
|
10
11
|
};
|
|
11
12
|
|
|
12
13
|
const timeProvider = new DefaultTimeProvider();
|
|
@@ -36,6 +37,10 @@ const retryAsync = async <ReturnType>(
|
|
|
36
37
|
});
|
|
37
38
|
}
|
|
38
39
|
|
|
40
|
+
if (opts.abortOnError && opts.abortOnError(err)) {
|
|
41
|
+
throw lastError;
|
|
42
|
+
}
|
|
43
|
+
|
|
39
44
|
if (currentAttempt < maxRetries) {
|
|
40
45
|
const delay = 2 ** (currentAttempt - 1) * minBackoffDelayMs;
|
|
41
46
|
// eslint-disable-next-line no-await-in-loop
|
package/src/index.ts
CHANGED
|
@@ -7,7 +7,6 @@ import {
|
|
|
7
7
|
LogLevel,
|
|
8
8
|
LogMessageHandler,
|
|
9
9
|
Role,
|
|
10
|
-
Track,
|
|
11
10
|
TransportsStateInfo,
|
|
12
11
|
} from './types/common';
|
|
13
12
|
import EnhancedEventEmitter from './EnhancedEventEmitter';
|
|
@@ -16,6 +15,8 @@ import Peer from './engine/Peer';
|
|
|
16
15
|
import { LoadBalancerApiClientParams } from './engine/network/LoadBalancerClient';
|
|
17
16
|
import DefaultEngineDependenciesFactory from './engine/DefaultEngineDependenciesFactory';
|
|
18
17
|
import { IssuesHandler, NetworkScoresUpdatedHandler } from './types/engine';
|
|
18
|
+
import DefaultMediaTracksFactory from './engine/media/DefaultMediaTracksFactory';
|
|
19
|
+
import { AudioTrack, Track, VideoTrack } from './types/media';
|
|
19
20
|
|
|
20
21
|
type ClientParams = {
|
|
21
22
|
observer?: EnhancedEventEmitter;
|
|
@@ -47,9 +48,13 @@ class Client {
|
|
|
47
48
|
|
|
48
49
|
this._observer = observer ?? new EnhancedEventEmitter();
|
|
49
50
|
const dependenciesFactory = new DefaultEngineDependenciesFactory();
|
|
51
|
+
const mediaTracksFactory = new DefaultMediaTracksFactory();
|
|
50
52
|
this.engine = new Engine({
|
|
51
53
|
dependenciesFactory,
|
|
52
54
|
clientEventEmitter: this.observer,
|
|
55
|
+
media: {
|
|
56
|
+
mediaTracksFactory,
|
|
57
|
+
},
|
|
53
58
|
network: {
|
|
54
59
|
loadbalancer: {
|
|
55
60
|
baseURL: network?.loadbalancer?.baseURL,
|
|
@@ -108,11 +113,11 @@ class Client {
|
|
|
108
113
|
return this.engine.confirmActivity();
|
|
109
114
|
}
|
|
110
115
|
|
|
111
|
-
createCameraVideoTrack(options?: CreateCameraVideoTrackOptions): Promise<
|
|
116
|
+
createCameraVideoTrack(options?: CreateCameraVideoTrackOptions): Promise<VideoTrack> {
|
|
112
117
|
return this.engine.createCameraVideoTrack(options);
|
|
113
118
|
}
|
|
114
119
|
|
|
115
|
-
createMicrophoneAudioTrack(options?: CreateMicrophoneAudioTrackOptions): Promise<
|
|
120
|
+
createMicrophoneAudioTrack(options?: CreateMicrophoneAudioTrackOptions): Promise<AudioTrack> {
|
|
116
121
|
return this.engine.createMicrophoneAudioTrack(options);
|
|
117
122
|
}
|
|
118
123
|
|
package/src/types/common.ts
CHANGED
|
@@ -8,13 +8,11 @@ import { RtpCapabilities } from 'mediasoup-client/src/RtpParameters';
|
|
|
8
8
|
import { ProducerCodecOptions } from 'mediasoup-client/lib/Producer';
|
|
9
9
|
import { ConnectionState } from 'mediasoup-client/src/Transport';
|
|
10
10
|
import { DtlsRole } from 'mediasoup-client/lib/Transport';
|
|
11
|
-
import AudioTrack from '../engine/media/tracks/AudioTrack';
|
|
12
|
-
import VideoTrack from '../engine/media/tracks/VideoTrack';
|
|
13
11
|
import NodeJSTimeout = NodeJS.Timeout;
|
|
14
12
|
|
|
15
13
|
export type Timeout = NodeJSTimeout | number;
|
|
16
14
|
|
|
17
|
-
export type SocketResponse = {
|
|
15
|
+
export type SocketResponse<T = Record<string, any>> = T & {
|
|
18
16
|
success?: boolean;
|
|
19
17
|
error?: string;
|
|
20
18
|
errorCode?: string;
|
|
@@ -77,10 +75,8 @@ export type AvailableMediaDevices = {
|
|
|
77
75
|
|
|
78
76
|
export type JoinChannelParams = {
|
|
79
77
|
channelId: string,
|
|
80
|
-
|
|
81
|
-
sdkSecret: string,
|
|
78
|
+
token: string,
|
|
82
79
|
role: Role,
|
|
83
|
-
uid?: string,
|
|
84
80
|
appData?: Record<string, unknown>,
|
|
85
81
|
};
|
|
86
82
|
|
|
@@ -176,8 +172,6 @@ export type CreateScreenMediaOptions = BaseVideoTrackOptions & BaseAudioTrackOpt
|
|
|
176
172
|
audioEncoderConfig?: AudioEncoderConfig,
|
|
177
173
|
};
|
|
178
174
|
|
|
179
|
-
export type Track = VideoTrack | AudioTrack;
|
|
180
|
-
|
|
181
175
|
export enum TrackLabel {
|
|
182
176
|
Camera = 'camera',
|
|
183
177
|
Microphone = 'microphone',
|
|
@@ -378,10 +372,6 @@ export type CreateTracksPayload = {
|
|
|
378
372
|
constraints: MediaStreamConstraints,
|
|
379
373
|
};
|
|
380
374
|
|
|
381
|
-
export type TrackPublishParams = {
|
|
382
|
-
keyFrameRequestDelay?: number;
|
|
383
|
-
};
|
|
384
|
-
|
|
385
375
|
export type ChangeProducerStatePayload = {
|
|
386
376
|
peerId: string,
|
|
387
377
|
producerId: string,
|
|
@@ -392,11 +382,6 @@ export type ForceCloseProducerPayload = {
|
|
|
392
382
|
label: TrackLabel,
|
|
393
383
|
};
|
|
394
384
|
|
|
395
|
-
export interface TrackWithEncodings {
|
|
396
|
-
getCodecOptions(): ProducerCodecOptions;
|
|
397
|
-
getEncodings(): RtpEncodingParameters[];
|
|
398
|
-
}
|
|
399
|
-
|
|
400
385
|
export type ActivityConfirmationRequiredPayload = {
|
|
401
386
|
channelId: string;
|
|
402
387
|
time: number;
|
package/src/types/engine.ts
CHANGED
|
@@ -7,8 +7,11 @@ import Engine from '../engine';
|
|
|
7
7
|
import ChannelEventHandler from '../engine/handlers/ChannelEventHandler';
|
|
8
8
|
import MediaSoupEventHandler from '../engine/handlers/MediaSoupEventHandler';
|
|
9
9
|
import { LoadBalancerApiClientParams } from '../engine/network/LoadBalancerClient';
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
Logger, LogLevel, LogMessageHandler, Role,
|
|
12
|
+
} from './common';
|
|
11
13
|
import ChannelAudioObserverEventHandler from '../engine/handlers/ChannelAudioObserverEventHandler';
|
|
14
|
+
import { MediaTracksFactory } from './media';
|
|
12
15
|
|
|
13
16
|
export type IssuesHandler = (issues: IssueDetectorResult) => void;
|
|
14
17
|
|
|
@@ -25,6 +28,7 @@ export interface CreateMediaParams {
|
|
|
25
28
|
logLevel: LogLevel;
|
|
26
29
|
engine: Engine;
|
|
27
30
|
clientEventEmitter: EnhancedEventEmitter;
|
|
31
|
+
mediaTracksFactory: MediaTracksFactory;
|
|
28
32
|
onLogMessage?: LogMessageHandler;
|
|
29
33
|
}
|
|
30
34
|
|
|
@@ -60,6 +64,12 @@ export interface CreateAudioObserverEventHandlerParams {
|
|
|
60
64
|
onLogMessage?: LogMessageHandler;
|
|
61
65
|
}
|
|
62
66
|
|
|
67
|
+
export interface ConnectParams {
|
|
68
|
+
channelId: string,
|
|
69
|
+
role: Role,
|
|
70
|
+
token: string,
|
|
71
|
+
}
|
|
72
|
+
|
|
63
73
|
export interface EngineDependenciesFactory {
|
|
64
74
|
createSystem: (params: CreateSystemParams) => System;
|
|
65
75
|
createMedia: (params: CreateMediaParams) => Media;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Producer, ProducerCodecOptions } from 'mediasoup-client/lib/Producer';
|
|
2
|
+
import { RtpEncodingParameters } from 'mediasoup-client/lib/types';
|
|
3
|
+
import { MediaKind } from 'mediasoup-client/lib/RtpParameters';
|
|
4
|
+
import Engine from '../engine';
|
|
5
|
+
import {
|
|
6
|
+
BaseTrackInfo,
|
|
7
|
+
EncoderConfig,
|
|
8
|
+
LogLevel,
|
|
9
|
+
TrackLabel,
|
|
10
|
+
TrackOutboundStats,
|
|
11
|
+
TrackProduceParams,
|
|
12
|
+
} from './common';
|
|
13
|
+
import EnhancedEventEmitter from '../EnhancedEventEmitter';
|
|
14
|
+
import MediaStreamTrackManager from '../engine/media/tracks/MediaStreamTrackManager';
|
|
15
|
+
|
|
16
|
+
export interface BaseTrackParams {
|
|
17
|
+
mediaStreamTrack: MediaStreamTrack;
|
|
18
|
+
logLevel: LogLevel;
|
|
19
|
+
engine: Engine;
|
|
20
|
+
clientEventEmitter: EnhancedEventEmitter;
|
|
21
|
+
constraints: MediaStreamConstraints;
|
|
22
|
+
mediaStreamTrackManager: MediaStreamTrackManager;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface BaseTrack {
|
|
26
|
+
mediaStreamTrack: MediaStreamTrack;
|
|
27
|
+
id: string;
|
|
28
|
+
kind: MediaKind;
|
|
29
|
+
isPublished: boolean;
|
|
30
|
+
isPaused: boolean;
|
|
31
|
+
clientEventEmitter: EnhancedEventEmitter;
|
|
32
|
+
producerId?: string;
|
|
33
|
+
getLabel(): TrackLabel;
|
|
34
|
+
setLabel(label: TrackLabel): void;
|
|
35
|
+
setEncoderConfig(encoderConfig: EncoderConfig): void;
|
|
36
|
+
getEncoderConfig(): EncoderConfig;
|
|
37
|
+
setProducer(producer: Producer): void;
|
|
38
|
+
setStopTrackOnPause(value: boolean): void;
|
|
39
|
+
getProducer(): Producer | undefined;
|
|
40
|
+
stopMediaStreamTrack(): void;
|
|
41
|
+
closeProducer(stopTrack?: boolean): Promise<void>;
|
|
42
|
+
setPriority(priority: RTCPriorityType): Promise<void>;
|
|
43
|
+
produce({
|
|
44
|
+
encodings,
|
|
45
|
+
codecOptions,
|
|
46
|
+
preferredCodec,
|
|
47
|
+
transformParams,
|
|
48
|
+
keyFrameRequestDelay,
|
|
49
|
+
}: TrackProduceParams): Promise<void>;
|
|
50
|
+
publish(): Promise<void>;
|
|
51
|
+
unpublish(): Promise<void>;
|
|
52
|
+
pause(): Promise<void>;
|
|
53
|
+
resume(): Promise<void>;
|
|
54
|
+
getInfo(): Promise<BaseTrackInfo>;
|
|
55
|
+
getStats(): Promise<TrackOutboundStats | undefined>;
|
|
56
|
+
replaceTrack(track: MediaStreamTrack): Promise<void>
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface TrackWithEncodings extends BaseTrack {
|
|
60
|
+
getCodecOptions(): ProducerCodecOptions;
|
|
61
|
+
getEncodings(): RtpEncodingParameters[];
|
|
62
|
+
getPreferredCodec(): string;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface TrackWithEffects extends BaseTrack {
|
|
66
|
+
isEffectsProcessing: boolean;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export interface AudioTrack extends BaseTrack, TrackWithEncodings, TrackWithEffects {
|
|
70
|
+
enableNoiseSuppression(): Promise<void>;
|
|
71
|
+
disableNoiseSuppression(): Promise<void>;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export type VideoTrackPublishParams = {
|
|
75
|
+
keyFrameRequestDelay?: number;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export interface VideoTrack extends BaseTrack, TrackWithEncodings, TrackWithEffects {
|
|
79
|
+
publish(params?: VideoTrackPublishParams): Promise<void>;
|
|
80
|
+
setTransformParams(transformParams: {}): void;
|
|
81
|
+
setMaxSpatialLayer(spatialLayer: number): Promise<void>;
|
|
82
|
+
getMaxSpatialLayer(): number | undefined;
|
|
83
|
+
enableBlur(): Promise<void>;
|
|
84
|
+
disableBlur(): Promise<void>;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export type Track = AudioTrack | VideoTrack;
|
|
88
|
+
|
|
89
|
+
export interface AudioTrackParams extends BaseTrackParams {
|
|
90
|
+
noiseSuppressor?: WebAssembly.WebAssemblyInstantiatedSource;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface MediaTracksFactory {
|
|
94
|
+
createAudioTrack: (params: AudioTrackParams) => BaseTrack;
|
|
95
|
+
createVideoTrack: (params: BaseTrackParams) => BaseTrack;
|
|
96
|
+
}
|
package/src/types/network.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SocketIOEvents } from '../constants/events';
|
|
1
2
|
import { Role } from './common';
|
|
2
3
|
|
|
3
4
|
export type GetNodeRequest = {
|
|
@@ -8,3 +9,26 @@ export type GetNodeRequest = {
|
|
|
8
9
|
export type GetNodeResponse = {
|
|
9
10
|
webSocketUrl: string;
|
|
10
11
|
};
|
|
12
|
+
|
|
13
|
+
export type JoinChannelRequest = {
|
|
14
|
+
appData?: Record<string, unknown>,
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export type JoinChannelSuccessResponse = {
|
|
18
|
+
channelId: string;
|
|
19
|
+
appId: string;
|
|
20
|
+
role: string;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export type SocketConnectionError = {
|
|
24
|
+
message: string;
|
|
25
|
+
data?: {
|
|
26
|
+
errorCode: string;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export type SocketObserverEvent = {
|
|
31
|
+
state: SocketIOEvents;
|
|
32
|
+
code?: string;
|
|
33
|
+
error?: SocketConnectionError;
|
|
34
|
+
};
|