@livedigital/client 2.26.0-stop-streams.1 → 2.27.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/engine/DefaultEngineDependenciesFactory.d.ts +1 -1
- package/dist/engine/media/tracks/BaseTrack.d.ts +3 -2
- package/dist/engine/media/tracks/MediaStreamTrackManager.d.ts +14 -0
- package/dist/index.es.js +1 -1
- package/dist/index.js +2 -2
- package/dist/types/common.d.ts +1 -1
- package/dist/types/engine.d.ts +1 -2
- package/package.json +3 -2
- package/src/engine/DefaultEngineDependenciesFactory.ts +15 -14
- package/src/engine/index.ts +2 -2
- package/src/engine/media/index.ts +11 -10
- package/src/engine/media/tracks/BaseTrack.ts +14 -9
- package/src/engine/media/tracks/MediaStreamTrackManager.ts +46 -0
- package/src/types/common.ts +1 -1
- package/src/types/engine.ts +1 -2
- package/dist/engine/media/tracks/TrackMediaStreamManager.d.ts +0 -11
- package/dist/engine/wid/WebRTCIssueDetector.d.ts +0 -20
- package/dist/engine/wid/WebRTCIssueEmitter.d.ts +0 -11
- package/dist/engine/wid/detectors/AvailableOutgoingBitrateIssueDetector.d.ts +0 -6
- package/dist/engine/wid/detectors/FramesDroppedIssueDetector.d.ts +0 -7
- package/dist/engine/wid/detectors/FramesEncodedSentIssueDetector.d.ts +0 -7
- package/dist/engine/wid/detectors/InboundNetworkIssueDetector.d.ts +0 -7
- package/dist/engine/wid/detectors/NetworkMediaSyncIssueDetector.d.ts +0 -7
- package/dist/engine/wid/detectors/OutboundNetworkIssueDetector.d.ts +0 -7
- package/dist/engine/wid/detectors/QualityLimitationsIssueDetector.d.ts +0 -7
- package/dist/engine/wid/detectors/VideoCodecMismatchDetector.d.ts +0 -10
- package/dist/engine/wid/lib/NetworkScoresCalculator.d.ts +0 -9
- package/dist/engine/wid/lib/PeriodicWebRTCStatsReporter.d.ts +0 -20
- package/dist/engine/wid/lib/parser/CompositeRTCStatsParser.d.ts +0 -22
- package/dist/engine/wid/lib/parser/RTCStatsParser.d.ts +0 -20
- package/dist/engine/wid/lib/parser/utils.d.ts +0 -7
- package/dist/engine/wid/types.d.ts +0 -381
- package/src/engine/media/tracks/TrackMediaStreamManager.ts +0 -41
- package/src/engine/wid/WebRTCIssueDetector.ts +0 -136
- package/src/engine/wid/WebRTCIssueEmitter.ts +0 -16
- package/src/engine/wid/detectors/AvailableOutgoingBitrateIssueDetector.ts +0 -57
- package/src/engine/wid/detectors/FramesDroppedIssueDetector.ts +0 -65
- package/src/engine/wid/detectors/FramesEncodedSentIssueDetector.ts +0 -69
- package/src/engine/wid/detectors/InboundNetworkIssueDetector.ts +0 -120
- package/src/engine/wid/detectors/NetworkMediaSyncIssueDetector.ts +0 -60
- package/src/engine/wid/detectors/OutboundNetworkIssueDetector.ts +0 -96
- package/src/engine/wid/detectors/QualityLimitationsIssueDetector.ts +0 -63
- package/src/engine/wid/detectors/VideoCodecMismatchDetector.ts +0 -78
- package/src/engine/wid/lib/NetworkScoresCalculator.ts +0 -126
- package/src/engine/wid/lib/PeriodicWebRTCStatsReporter.ts +0 -66
- package/src/engine/wid/lib/parser/CompositeRTCStatsParser.ts +0 -82
- package/src/engine/wid/lib/parser/RTCStatsParser.ts +0 -274
- package/src/engine/wid/lib/parser/utils.ts +0 -40
- package/src/engine/wid/types.ts +0 -408
package/dist/types/common.d.ts
CHANGED
|
@@ -305,7 +305,7 @@ export declare type UpdatePeerAppDataPayload = {
|
|
|
305
305
|
appData: Record<string, unknown>;
|
|
306
306
|
};
|
|
307
307
|
export declare type CreateTracksPayload = {
|
|
308
|
-
|
|
308
|
+
mediaStreamTracks: MediaStreamTrack[];
|
|
309
309
|
constraints: MediaStreamConstraints;
|
|
310
310
|
};
|
|
311
311
|
export declare type TrackPublishParams = {
|
package/dist/types/engine.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import WebRTCIssueDetector, { IssueDetectorResult, NetworkScores } from 'webrtc-issue-detector';
|
|
1
2
|
import EnhancedEventEmitter from '../EnhancedEventEmitter';
|
|
2
3
|
import System from '../engine/system';
|
|
3
4
|
import Media from '../engine/media';
|
|
@@ -5,9 +6,7 @@ import Network from '../engine/network';
|
|
|
5
6
|
import Engine from '../engine';
|
|
6
7
|
import ChannelEventHandler from '../engine/handlers/ChannelEventHandler';
|
|
7
8
|
import MediaSoupEventHandler from '../engine/handlers/MediaSoupEventHandler';
|
|
8
|
-
import WebRTCIssueDetector from '../engine/wid/WebRTCIssueDetector';
|
|
9
9
|
import { LoadBalancerApiClientParams } from '../engine/network/LoadBalancerClient';
|
|
10
|
-
import { IssueDetectorResult, NetworkScores } from '../engine/wid/types';
|
|
11
10
|
import { Logger, LogLevel } from './common';
|
|
12
11
|
export declare type IssuesHandler = (issues: IssueDetectorResult) => void;
|
|
13
12
|
export declare type NetworkScoresUpdatedHandler = (networks: NetworkScores) => void;
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@livedigital/client",
|
|
3
3
|
"author": "vlprojects",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "2.
|
|
5
|
+
"version": "2.27.0",
|
|
6
6
|
"private": false,
|
|
7
7
|
"bugs": {
|
|
8
8
|
"url": "https://github.com/vlprojects/livedigital-sdk/issues"
|
|
@@ -47,7 +47,8 @@
|
|
|
47
47
|
"mediasoup-client": "^3.6.50",
|
|
48
48
|
"qs": "^6.9.6",
|
|
49
49
|
"serialize-error": "^7.0.1",
|
|
50
|
-
"socket.io-client": "^4.3.0"
|
|
50
|
+
"socket.io-client": "^4.3.0",
|
|
51
|
+
"webrtc-issue-detector": "^1.3.1"
|
|
51
52
|
},
|
|
52
53
|
"devDependencies": {
|
|
53
54
|
"@rollup/plugin-commonjs": "^19.0.0",
|
|
@@ -1,10 +1,24 @@
|
|
|
1
|
+
import WebRTCIssueDetector, {
|
|
2
|
+
QualityLimitationsIssueDetector,
|
|
3
|
+
FramesDroppedIssueDetector,
|
|
4
|
+
FramesEncodedSentIssueDetector,
|
|
5
|
+
InboundNetworkIssueDetector,
|
|
6
|
+
OutboundNetworkIssueDetector,
|
|
7
|
+
NetworkMediaSyncIssueDetector,
|
|
8
|
+
AvailableOutgoingBitrateIssueDetector,
|
|
9
|
+
VideoCodecMismatchDetector,
|
|
10
|
+
CompositeRTCStatsParser,
|
|
11
|
+
WebRTCIssueEmitter,
|
|
12
|
+
NetworkScoresCalculator,
|
|
13
|
+
PeriodicWebRTCStatsReporter,
|
|
14
|
+
RTCStatsParser,
|
|
15
|
+
} from 'webrtc-issue-detector';
|
|
1
16
|
import Network from './network';
|
|
2
17
|
import System from './system';
|
|
3
18
|
import Media from './media';
|
|
4
19
|
import ChannelEventHandler from './handlers/ChannelEventHandler';
|
|
5
20
|
import Engine from './index';
|
|
6
21
|
import MediaSoupEventHandler from './handlers/MediaSoupEventHandler';
|
|
7
|
-
import WebRTCIssueDetector from './wid/WebRTCIssueDetector';
|
|
8
22
|
import {
|
|
9
23
|
CreateIssueDetectorParams,
|
|
10
24
|
CreateMediaParams,
|
|
@@ -14,19 +28,6 @@ import {
|
|
|
14
28
|
} from '../types/engine';
|
|
15
29
|
import SocketIO from './network/Socket';
|
|
16
30
|
import LoadBalancerApiClient from './network/LoadBalancerClient';
|
|
17
|
-
import NetworkScoresCalculator from './wid/lib/NetworkScoresCalculator';
|
|
18
|
-
import QualityLimitationsIssueDetector from './wid/detectors/QualityLimitationsIssueDetector';
|
|
19
|
-
import FramesDroppedIssueDetector from './wid/detectors/FramesDroppedIssueDetector';
|
|
20
|
-
import FramesEncodedSentIssueDetector from './wid/detectors/FramesEncodedSentIssueDetector';
|
|
21
|
-
import InboundNetworkIssueDetector from './wid/detectors/InboundNetworkIssueDetector';
|
|
22
|
-
import OutboundNetworkIssueDetector from './wid/detectors/OutboundNetworkIssueDetector';
|
|
23
|
-
import NetworkMediaSyncIssueDetector from './wid/detectors/NetworkMediaSyncIssueDetector';
|
|
24
|
-
import AvailableOutgoingBitrateIssueDetector from './wid/detectors/AvailableOutgoingBitrateIssueDetector';
|
|
25
|
-
import VideoCodecMismatchDetector from './wid/detectors/VideoCodecMismatchDetector';
|
|
26
|
-
import CompositeRTCStatsParser from './wid/lib/parser/CompositeRTCStatsParser';
|
|
27
|
-
import RTCStatsParser from './wid/lib/parser/RTCStatsParser';
|
|
28
|
-
import PeriodicWebRTCStatsReporter from './wid/lib/PeriodicWebRTCStatsReporter';
|
|
29
|
-
import { WebRTCIssueEmitter } from './wid/WebRTCIssueEmitter';
|
|
30
31
|
|
|
31
32
|
/* eslint-disable class-methods-use-this */
|
|
32
33
|
class DefaultEngineDependenciesFactory implements EngineDependenciesFactory {
|
package/src/engine/index.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RtpCapabilities } from 'mediasoup-client/lib/RtpParameters';
|
|
2
|
+
import WebRTCIssueDetector from 'webrtc-issue-detector';
|
|
2
3
|
import {
|
|
3
4
|
CreateCameraVideoTrackOptions,
|
|
4
5
|
CreateMicrophoneAudioTrackOptions,
|
|
@@ -26,7 +27,6 @@ import {
|
|
|
26
27
|
import { GetNodeRequest } from '../types/network';
|
|
27
28
|
import VideoTrack from './media/tracks/VideoTrack';
|
|
28
29
|
import PeerTrack from './media/tracks/PeerTrack';
|
|
29
|
-
import WebRTCIssueDetector from './wid/WebRTCIssueDetector';
|
|
30
30
|
import { retryAsync } from '../helpers/retry';
|
|
31
31
|
import { EngineDependenciesFactory, IssuesHandler, NetworkScoresUpdatedHandler } from '../types/engine';
|
|
32
32
|
import { LogLevels } from '../constants/common';
|
|
@@ -161,7 +161,7 @@ class Engine {
|
|
|
161
161
|
const { state, code } = evt;
|
|
162
162
|
this.clientEventEmitter.emit(state, { code });
|
|
163
163
|
|
|
164
|
-
if (state === SocketIOEvents.
|
|
164
|
+
if (state === SocketIOEvents.Reconnected) {
|
|
165
165
|
this.network.socket.disconnect();
|
|
166
166
|
this.clientEventEmitter.emit(CLIENT_EVENTS.channelRejoinRequired);
|
|
167
167
|
}
|
|
@@ -15,7 +15,7 @@ import { SCREEN_SHARING_SIMULCAST_ENCODINGS, WEBCAM_SIMULCAST_ENCODINGS } from '
|
|
|
15
15
|
import { CreateMediaParams } from '../../types/engine';
|
|
16
16
|
import Engine from '../index';
|
|
17
17
|
import EnhancedEventEmitter from '../../EnhancedEventEmitter';
|
|
18
|
-
import
|
|
18
|
+
import MediaStreamTrackManager from './tracks/MediaStreamTrackManager';
|
|
19
19
|
|
|
20
20
|
class Media {
|
|
21
21
|
public isDeviceLoaded = false;
|
|
@@ -32,6 +32,8 @@ class Media {
|
|
|
32
32
|
|
|
33
33
|
readonly #clientEventEmitter: EnhancedEventEmitter;
|
|
34
34
|
|
|
35
|
+
readonly #mediaStreamTrackManager: MediaStreamTrackManager;
|
|
36
|
+
|
|
35
37
|
constructor(params: CreateMediaParams) {
|
|
36
38
|
this.#logLevel = params.logLevel;
|
|
37
39
|
this.#logger = new Logger({
|
|
@@ -40,6 +42,7 @@ class Media {
|
|
|
40
42
|
});
|
|
41
43
|
this.#engine = params.engine;
|
|
42
44
|
this.#clientEventEmitter = params.clientEventEmitter;
|
|
45
|
+
this.#mediaStreamTrackManager = new MediaStreamTrackManager(params.logLevel);
|
|
43
46
|
}
|
|
44
47
|
|
|
45
48
|
get mediasoupDevice(): Device {
|
|
@@ -67,21 +70,20 @@ class Media {
|
|
|
67
70
|
return codecs.find((c) => c.mimeType.toLowerCase() === `${track.kind}/${track.getPreferredCodec()}`);
|
|
68
71
|
}
|
|
69
72
|
|
|
70
|
-
private createTracks({ constraints,
|
|
71
|
-
const mediaStreamTracks = stream.getTracks();
|
|
73
|
+
private createTracks({ constraints, mediaStreamTracks }: CreateTracksPayload): Track[] {
|
|
72
74
|
return mediaStreamTracks.map((mediaStreamTrack) => {
|
|
73
75
|
const params = {
|
|
74
76
|
mediaStreamTrack,
|
|
75
77
|
logLevel: this.#logLevel,
|
|
76
78
|
engine: this.#engine,
|
|
77
79
|
clientEventEmitter: this.#clientEventEmitter,
|
|
78
|
-
|
|
80
|
+
constraints,
|
|
81
|
+
mediaStreamTrackManager: this.#mediaStreamTrackManager,
|
|
79
82
|
};
|
|
80
83
|
|
|
81
84
|
const track = mediaStreamTrack.kind === 'audio' ? new AudioTrack(params) : new VideoTrack(params);
|
|
82
85
|
this.tracks.set(track.id, track);
|
|
83
86
|
this.#logger.debug('createTrack() track created', {
|
|
84
|
-
streamId: stream.id,
|
|
85
87
|
trackId: track.id,
|
|
86
88
|
kind: track.kind,
|
|
87
89
|
});
|
|
@@ -91,14 +93,13 @@ class Media {
|
|
|
91
93
|
}
|
|
92
94
|
|
|
93
95
|
async createUserMediaTracks(constraints: MediaStreamConstraints): Promise<Track[]> {
|
|
94
|
-
const
|
|
95
|
-
this
|
|
96
|
-
return this.createTracks({ stream, constraints });
|
|
96
|
+
const mediaStreamTracks = await this.#mediaStreamTrackManager.createUserMediaTracks(constraints);
|
|
97
|
+
return this.createTracks({ constraints, mediaStreamTracks });
|
|
97
98
|
}
|
|
98
99
|
|
|
99
100
|
async createDisplayMediaTracks(constraints: MediaStreamConstraints): Promise<Track[]> {
|
|
100
|
-
const
|
|
101
|
-
return this.createTracks({
|
|
101
|
+
const mediaStreamTracks = await this.#mediaStreamTrackManager.createDisplayMediaTracks(constraints);
|
|
102
|
+
return this.createTracks({ constraints, mediaStreamTracks });
|
|
102
103
|
}
|
|
103
104
|
|
|
104
105
|
deleteTrack(track: Track) {
|
|
@@ -16,15 +16,15 @@ import { PRODUCER_CHECK_STATE_TIMEOUT } from '../../../constants/common';
|
|
|
16
16
|
import { CLIENT_EVENTS, INTERNAL_CLIENT_EVENTS, MEDIASOUP_EVENTS } from '../../../constants/events';
|
|
17
17
|
import EnhancedEventEmitter from '../../../EnhancedEventEmitter';
|
|
18
18
|
import filterStatsCodecs from '../../../helpers/filterStatsCodecs';
|
|
19
|
-
import
|
|
20
|
-
import TrackMediaStreamManager from './TrackMediaStreamManager';
|
|
19
|
+
import MediaStreamTrackManager from './MediaStreamTrackManager';
|
|
21
20
|
|
|
22
21
|
export type BaseTrackConstructorParams = {
|
|
23
22
|
mediaStreamTrack: MediaStreamTrack,
|
|
24
23
|
logLevel: LogLevel,
|
|
25
24
|
engine: Engine,
|
|
26
25
|
clientEventEmitter: EnhancedEventEmitter,
|
|
27
|
-
|
|
26
|
+
constraints: MediaStreamConstraints;
|
|
27
|
+
mediaStreamTrackManager: MediaStreamTrackManager;
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
class BaseTrack {
|
|
@@ -42,7 +42,7 @@ class BaseTrack {
|
|
|
42
42
|
|
|
43
43
|
#selfConsumer?: PeerConsumer;
|
|
44
44
|
|
|
45
|
-
#checkStateTimeout?: Timeout;
|
|
45
|
+
#checkStateTimeout?: NodeJS.Timeout;
|
|
46
46
|
|
|
47
47
|
#producerRestarted = false;
|
|
48
48
|
|
|
@@ -50,16 +50,19 @@ class BaseTrack {
|
|
|
50
50
|
|
|
51
51
|
#closed = false;
|
|
52
52
|
|
|
53
|
-
readonly #
|
|
53
|
+
readonly #constraints: MediaStreamConstraints;
|
|
54
|
+
|
|
55
|
+
readonly #mediaStreamTrackManager: MediaStreamTrackManager;
|
|
54
56
|
|
|
55
57
|
constructor(params: BaseTrackConstructorParams) {
|
|
56
58
|
const {
|
|
57
|
-
mediaStreamTrack, logLevel, engine, clientEventEmitter,
|
|
59
|
+
mediaStreamTrack, logLevel, engine, clientEventEmitter, constraints, mediaStreamTrackManager,
|
|
58
60
|
} = params;
|
|
59
61
|
this.#mediaStreamTrack = mediaStreamTrack;
|
|
60
62
|
this.#engine = engine;
|
|
61
63
|
this.#clientEventEmitter = clientEventEmitter;
|
|
62
|
-
this.#
|
|
64
|
+
this.#constraints = constraints;
|
|
65
|
+
this.#mediaStreamTrackManager = mediaStreamTrackManager;
|
|
63
66
|
this.logger = new Logger({
|
|
64
67
|
namespace: 'Track',
|
|
65
68
|
logLevel,
|
|
@@ -102,7 +105,6 @@ class BaseTrack {
|
|
|
102
105
|
|
|
103
106
|
setLabel(label: TrackLabel): void {
|
|
104
107
|
this.label = label;
|
|
105
|
-
this.#mediaStreamManager.setLabel(label);
|
|
106
108
|
}
|
|
107
109
|
|
|
108
110
|
setEncoderConfig(encoderConfig: EncoderConfig): void {
|
|
@@ -389,7 +391,10 @@ class BaseTrack {
|
|
|
389
391
|
}
|
|
390
392
|
|
|
391
393
|
try {
|
|
392
|
-
const track = await this.#
|
|
394
|
+
const track = await this.#mediaStreamTrackManager.createMediaStreamTrack({
|
|
395
|
+
label: this.label,
|
|
396
|
+
constraints: this.#constraints,
|
|
397
|
+
});
|
|
393
398
|
this.#mediaStreamTrack = track;
|
|
394
399
|
await this.producer.replaceTrack({ track });
|
|
395
400
|
await this.resumeRemoteProducer(this.producer.id);
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { LogLevel, TrackLabel } from '../../../types/common';
|
|
2
|
+
import Logger from '../../Logger';
|
|
3
|
+
|
|
4
|
+
export type GetMediaStreamTrackParams = {
|
|
5
|
+
label: TrackLabel;
|
|
6
|
+
constraints: MediaStreamConstraints;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
class MediaStreamTrackManager {
|
|
10
|
+
readonly #logger: Logger;
|
|
11
|
+
|
|
12
|
+
constructor(logLevel: LogLevel) {
|
|
13
|
+
this.#logger = new Logger({
|
|
14
|
+
namespace: 'MediaStreamTrackManager',
|
|
15
|
+
logLevel,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async createMediaStreamTrack({ label, constraints }: GetMediaStreamTrackParams): Promise<MediaStreamTrack> {
|
|
20
|
+
if (MediaStreamTrackManager.isDisplayMedia(label)) {
|
|
21
|
+
const [track] = await this.createDisplayMediaTracks(constraints);
|
|
22
|
+
return track;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const [track] = await this.createUserMediaTracks(constraints);
|
|
26
|
+
return track;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
private static isDisplayMedia(label: TrackLabel): boolean {
|
|
30
|
+
return [TrackLabel.ScreenVideo, TrackLabel.ScreenAudio].includes(label);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
async createUserMediaTracks(constraints: MediaStreamConstraints): Promise<MediaStreamTrack[]> {
|
|
34
|
+
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
35
|
+
this.#logger.debug('createUserMediaTracks() stream created', { streamId: stream.id });
|
|
36
|
+
return stream.getTracks();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async createDisplayMediaTracks(constraints: MediaStreamConstraints): Promise<MediaStreamTrack[]> {
|
|
40
|
+
const stream = await navigator.mediaDevices.getDisplayMedia(constraints);
|
|
41
|
+
this.#logger.debug('getDisplayMediaTracks() stream created', { streamId: stream.id });
|
|
42
|
+
return stream.getTracks();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export default MediaStreamTrackManager;
|
package/src/types/common.ts
CHANGED
package/src/types/engine.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import WebRTCIssueDetector, { IssueDetectorResult, NetworkScores } from 'webrtc-issue-detector';
|
|
1
2
|
import EnhancedEventEmitter from '../EnhancedEventEmitter';
|
|
2
3
|
import System from '../engine/system';
|
|
3
4
|
import Media from '../engine/media';
|
|
@@ -5,9 +6,7 @@ import Network from '../engine/network';
|
|
|
5
6
|
import Engine from '../engine';
|
|
6
7
|
import ChannelEventHandler from '../engine/handlers/ChannelEventHandler';
|
|
7
8
|
import MediaSoupEventHandler from '../engine/handlers/MediaSoupEventHandler';
|
|
8
|
-
import WebRTCIssueDetector from '../engine/wid/WebRTCIssueDetector';
|
|
9
9
|
import { LoadBalancerApiClientParams } from '../engine/network/LoadBalancerClient';
|
|
10
|
-
import { IssueDetectorResult, NetworkScores } from '../engine/wid/types';
|
|
11
10
|
import { Logger, LogLevel } from './common';
|
|
12
11
|
|
|
13
12
|
export type IssuesHandler = (issues: IssueDetectorResult) => void;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { TrackLabel } from '../../../types/common';
|
|
2
|
-
declare class TrackMediaStreamManager {
|
|
3
|
-
#private;
|
|
4
|
-
constructor(constraints: MediaStreamConstraints);
|
|
5
|
-
setLabel(label: TrackLabel): void;
|
|
6
|
-
getMediaStreamTrack(): Promise<MediaStreamTrack>;
|
|
7
|
-
private get isDisplayMedia();
|
|
8
|
-
private getUserMediaTrack;
|
|
9
|
-
private getDisplayMediaTrack;
|
|
10
|
-
}
|
|
11
|
-
export default TrackMediaStreamManager;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { WebRTCIssueEmitter } from './WebRTCIssueEmitter';
|
|
2
|
-
import { WebRTCIssueDetectorConstructorParams } from './types';
|
|
3
|
-
declare class WebRTCIssueDetector {
|
|
4
|
-
#private;
|
|
5
|
-
readonly eventEmitter: WebRTCIssueEmitter;
|
|
6
|
-
private readonly detectors;
|
|
7
|
-
private readonly networkScoresCalculator;
|
|
8
|
-
private readonly statsReporter;
|
|
9
|
-
private readonly compositeStatsParser;
|
|
10
|
-
private readonly logger;
|
|
11
|
-
constructor(params: WebRTCIssueDetectorConstructorParams);
|
|
12
|
-
watchNewPeerConnections(): void;
|
|
13
|
-
stopWatchingNewPeerConnections(): void;
|
|
14
|
-
handleNewPeerConnection(pc: RTCPeerConnection): void;
|
|
15
|
-
private emitIssues;
|
|
16
|
-
private detectIssues;
|
|
17
|
-
private calculateNetworkScores;
|
|
18
|
-
private wrapRTCPeerConnection;
|
|
19
|
-
}
|
|
20
|
-
export default WebRTCIssueDetector;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { EventEmitter } from 'events';
|
|
3
|
-
import { EventType, EventPayload, IssueDetectorResult, NetworkScores } from './types';
|
|
4
|
-
export declare interface WebRTCIssueEmitter {
|
|
5
|
-
on(event: EventType.Issue, listener: (payload: IssueDetectorResult) => void): this;
|
|
6
|
-
on(event: EventType.NetworkScoresUpdated, listener: (payload: NetworkScores) => void): this;
|
|
7
|
-
emit(event: EventType.Issue, payload: EventPayload): boolean;
|
|
8
|
-
emit(event: EventType.NetworkScoresUpdated, payload: NetworkScores): boolean;
|
|
9
|
-
}
|
|
10
|
-
export declare class WebRTCIssueEmitter extends EventEmitter {
|
|
11
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { IssueDetector, IssueDetectorResult, WebRTCStatsParsed } from '../types';
|
|
2
|
-
declare class AvailableOutgoingBitrateIssueDetector implements IssueDetector {
|
|
3
|
-
#private;
|
|
4
|
-
detect(data: WebRTCStatsParsed): IssueDetectorResult;
|
|
5
|
-
}
|
|
6
|
-
export default AvailableOutgoingBitrateIssueDetector;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { IssueDetector, IssueDetectorResult, WebRTCStatsParsed } from '../types';
|
|
2
|
-
declare class FramesDroppedIssueDetector implements IssueDetector {
|
|
3
|
-
#private;
|
|
4
|
-
detect(data: WebRTCStatsParsed): IssueDetectorResult;
|
|
5
|
-
private processData;
|
|
6
|
-
}
|
|
7
|
-
export default FramesDroppedIssueDetector;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { IssueDetector, IssueDetectorResult, WebRTCStatsParsed } from '../types';
|
|
2
|
-
declare class FramesEncodedSentIssueDetector implements IssueDetector {
|
|
3
|
-
#private;
|
|
4
|
-
detect(data: WebRTCStatsParsed): IssueDetectorResult;
|
|
5
|
-
private processData;
|
|
6
|
-
}
|
|
7
|
-
export default FramesEncodedSentIssueDetector;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { IssueDetector, IssueDetectorResult, WebRTCStatsParsed } from '../types';
|
|
2
|
-
declare class InboundNetworkIssueDetector implements IssueDetector {
|
|
3
|
-
#private;
|
|
4
|
-
detect(data: WebRTCStatsParsed): IssueDetectorResult;
|
|
5
|
-
private processData;
|
|
6
|
-
}
|
|
7
|
-
export default InboundNetworkIssueDetector;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { IssueDetector, IssueDetectorResult, WebRTCStatsParsed } from '../types';
|
|
2
|
-
declare class NetworkMediaSyncIssueDetector implements IssueDetector {
|
|
3
|
-
#private;
|
|
4
|
-
detect(data: WebRTCStatsParsed): IssueDetectorResult;
|
|
5
|
-
private processData;
|
|
6
|
-
}
|
|
7
|
-
export default NetworkMediaSyncIssueDetector;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { IssueDetector, IssueDetectorResult, WebRTCStatsParsed } from '../types';
|
|
2
|
-
declare class OutboundNetworkIssueDetector implements IssueDetector {
|
|
3
|
-
#private;
|
|
4
|
-
detect(data: WebRTCStatsParsed): IssueDetectorResult;
|
|
5
|
-
private processData;
|
|
6
|
-
}
|
|
7
|
-
export default OutboundNetworkIssueDetector;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { IssueDetector, IssueDetectorResult, WebRTCStatsParsed } from '../types';
|
|
2
|
-
declare class QualityLimitationsIssueDetector implements IssueDetector {
|
|
3
|
-
#private;
|
|
4
|
-
detect(data: WebRTCStatsParsed): IssueDetectorResult;
|
|
5
|
-
private processData;
|
|
6
|
-
}
|
|
7
|
-
export default QualityLimitationsIssueDetector;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { IssueDetector, IssueDetectorResult, WebRTCStatsParsed } from '../types';
|
|
2
|
-
declare class VideoCodecMismatchDetector implements IssueDetector {
|
|
3
|
-
#private;
|
|
4
|
-
readonly UNKNOWN_DECODER = "unknown";
|
|
5
|
-
detect(data: WebRTCStatsParsed): IssueDetectorResult;
|
|
6
|
-
private processData;
|
|
7
|
-
private setLastDecoderWithIssue;
|
|
8
|
-
private hadLastDecoderWithIssue;
|
|
9
|
-
}
|
|
10
|
-
export default VideoCodecMismatchDetector;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { NetworkScores, NetworkScoresCalculator as INetworkScoresCalculator, WebRTCStatsParsed } from '../types';
|
|
2
|
-
declare class NetworkScoresCalculator implements INetworkScoresCalculator {
|
|
3
|
-
#private;
|
|
4
|
-
calculate(data: WebRTCStatsParsed): NetworkScores;
|
|
5
|
-
private calcucateOutboundScore;
|
|
6
|
-
private calculateInboundScore;
|
|
7
|
-
private calculateMOS;
|
|
8
|
-
}
|
|
9
|
-
export default NetworkScoresCalculator;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { EventEmitter } from 'events';
|
|
3
|
-
import { CompositeStatsParser } from '../types';
|
|
4
|
-
interface PeriodicWebRTCStatsReporterParams {
|
|
5
|
-
compositeStatsParser: CompositeStatsParser;
|
|
6
|
-
getStatsInterval?: number;
|
|
7
|
-
}
|
|
8
|
-
declare class PeriodicWebRTCStatsReporter extends EventEmitter {
|
|
9
|
-
static readonly STATS_REPORT_READY_EVENT = "stats-report-ready";
|
|
10
|
-
private isStopped;
|
|
11
|
-
private reportTimer;
|
|
12
|
-
private readonly getStatsInterval;
|
|
13
|
-
private readonly compositeStatsParser;
|
|
14
|
-
constructor(params: PeriodicWebRTCStatsReporterParams);
|
|
15
|
-
get isRunning(): boolean;
|
|
16
|
-
startReporting(): void;
|
|
17
|
-
stopReporting(): void;
|
|
18
|
-
private parseReports;
|
|
19
|
-
}
|
|
20
|
-
export default PeriodicWebRTCStatsReporter;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { CompositeStatsParser, ConnectionInfo, StatsParser, StatsReportItem } from '../../types';
|
|
2
|
-
export interface AddConnectionPayload {
|
|
3
|
-
id?: string;
|
|
4
|
-
pc: RTCPeerConnection;
|
|
5
|
-
}
|
|
6
|
-
export interface RemoveConnectionPayload {
|
|
7
|
-
pc: RTCPeerConnection;
|
|
8
|
-
}
|
|
9
|
-
interface CompositeRTCStatsParserParams {
|
|
10
|
-
statsParser: StatsParser;
|
|
11
|
-
}
|
|
12
|
-
declare class CompositeRTCStatsParser implements CompositeStatsParser {
|
|
13
|
-
private readonly connections;
|
|
14
|
-
private readonly statsParser;
|
|
15
|
-
constructor(params: CompositeRTCStatsParserParams);
|
|
16
|
-
listConnections(): ConnectionInfo[];
|
|
17
|
-
addPeerConnection(payload: AddConnectionPayload): void;
|
|
18
|
-
removePeerConnection(payload: RemoveConnectionPayload): void;
|
|
19
|
-
parse(): Promise<StatsReportItem[]>;
|
|
20
|
-
private removeConnectionsByIndexes;
|
|
21
|
-
}
|
|
22
|
-
export default CompositeRTCStatsParser;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { ConnectionInfo, StatsParser, StatsReportItem } from '../../types';
|
|
2
|
-
import { Logger } from '../../../../types/common';
|
|
3
|
-
interface WebRTCStatsParserParams {
|
|
4
|
-
logger: Logger;
|
|
5
|
-
}
|
|
6
|
-
declare class RTCStatsParser implements StatsParser {
|
|
7
|
-
private readonly prevStats;
|
|
8
|
-
private readonly allowedReportTypes;
|
|
9
|
-
private readonly logger;
|
|
10
|
-
constructor(params: WebRTCStatsParserParams);
|
|
11
|
-
parse(connection: ConnectionInfo): Promise<StatsReportItem | undefined>;
|
|
12
|
-
private getConnectionStats;
|
|
13
|
-
private mapReportsStats;
|
|
14
|
-
private updateMappedStatsWithReportItemData;
|
|
15
|
-
private getMediaType;
|
|
16
|
-
private propagateStatsWithRateValues;
|
|
17
|
-
private mapConnectionStatsIfNecessary;
|
|
18
|
-
private prepareConnectionStats;
|
|
19
|
-
}
|
|
20
|
-
export default RTCStatsParser;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
interface WithTS {
|
|
2
|
-
timestamp: number;
|
|
3
|
-
}
|
|
4
|
-
export declare const checkIsConnectionClosed: (pc: RTCPeerConnection) => boolean;
|
|
5
|
-
export declare const calcValueRate: <T extends WithTS>(stats: T, prevStats: T | undefined, statPropName: keyof T) => number;
|
|
6
|
-
export declare const calcBitrate: <T extends WithTS>(stats: T, prevStats: T | undefined, statPropName: keyof T) => number;
|
|
7
|
-
export {};
|