@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.
Files changed (49) hide show
  1. package/dist/engine/DefaultEngineDependenciesFactory.d.ts +1 -1
  2. package/dist/engine/media/tracks/BaseTrack.d.ts +3 -2
  3. package/dist/engine/media/tracks/MediaStreamTrackManager.d.ts +14 -0
  4. package/dist/index.es.js +1 -1
  5. package/dist/index.js +2 -2
  6. package/dist/types/common.d.ts +1 -1
  7. package/dist/types/engine.d.ts +1 -2
  8. package/package.json +3 -2
  9. package/src/engine/DefaultEngineDependenciesFactory.ts +15 -14
  10. package/src/engine/index.ts +2 -2
  11. package/src/engine/media/index.ts +11 -10
  12. package/src/engine/media/tracks/BaseTrack.ts +14 -9
  13. package/src/engine/media/tracks/MediaStreamTrackManager.ts +46 -0
  14. package/src/types/common.ts +1 -1
  15. package/src/types/engine.ts +1 -2
  16. package/dist/engine/media/tracks/TrackMediaStreamManager.d.ts +0 -11
  17. package/dist/engine/wid/WebRTCIssueDetector.d.ts +0 -20
  18. package/dist/engine/wid/WebRTCIssueEmitter.d.ts +0 -11
  19. package/dist/engine/wid/detectors/AvailableOutgoingBitrateIssueDetector.d.ts +0 -6
  20. package/dist/engine/wid/detectors/FramesDroppedIssueDetector.d.ts +0 -7
  21. package/dist/engine/wid/detectors/FramesEncodedSentIssueDetector.d.ts +0 -7
  22. package/dist/engine/wid/detectors/InboundNetworkIssueDetector.d.ts +0 -7
  23. package/dist/engine/wid/detectors/NetworkMediaSyncIssueDetector.d.ts +0 -7
  24. package/dist/engine/wid/detectors/OutboundNetworkIssueDetector.d.ts +0 -7
  25. package/dist/engine/wid/detectors/QualityLimitationsIssueDetector.d.ts +0 -7
  26. package/dist/engine/wid/detectors/VideoCodecMismatchDetector.d.ts +0 -10
  27. package/dist/engine/wid/lib/NetworkScoresCalculator.d.ts +0 -9
  28. package/dist/engine/wid/lib/PeriodicWebRTCStatsReporter.d.ts +0 -20
  29. package/dist/engine/wid/lib/parser/CompositeRTCStatsParser.d.ts +0 -22
  30. package/dist/engine/wid/lib/parser/RTCStatsParser.d.ts +0 -20
  31. package/dist/engine/wid/lib/parser/utils.d.ts +0 -7
  32. package/dist/engine/wid/types.d.ts +0 -381
  33. package/src/engine/media/tracks/TrackMediaStreamManager.ts +0 -41
  34. package/src/engine/wid/WebRTCIssueDetector.ts +0 -136
  35. package/src/engine/wid/WebRTCIssueEmitter.ts +0 -16
  36. package/src/engine/wid/detectors/AvailableOutgoingBitrateIssueDetector.ts +0 -57
  37. package/src/engine/wid/detectors/FramesDroppedIssueDetector.ts +0 -65
  38. package/src/engine/wid/detectors/FramesEncodedSentIssueDetector.ts +0 -69
  39. package/src/engine/wid/detectors/InboundNetworkIssueDetector.ts +0 -120
  40. package/src/engine/wid/detectors/NetworkMediaSyncIssueDetector.ts +0 -60
  41. package/src/engine/wid/detectors/OutboundNetworkIssueDetector.ts +0 -96
  42. package/src/engine/wid/detectors/QualityLimitationsIssueDetector.ts +0 -63
  43. package/src/engine/wid/detectors/VideoCodecMismatchDetector.ts +0 -78
  44. package/src/engine/wid/lib/NetworkScoresCalculator.ts +0 -126
  45. package/src/engine/wid/lib/PeriodicWebRTCStatsReporter.ts +0 -66
  46. package/src/engine/wid/lib/parser/CompositeRTCStatsParser.ts +0 -82
  47. package/src/engine/wid/lib/parser/RTCStatsParser.ts +0 -274
  48. package/src/engine/wid/lib/parser/utils.ts +0 -40
  49. package/src/engine/wid/types.ts +0 -408
@@ -1,408 +0,0 @@
1
- import { Logger } from '../../types/common';
2
- import PeriodicWebRTCStatsReporter from './lib/PeriodicWebRTCStatsReporter';
3
- import { AddConnectionPayload } from './lib/parser/CompositeRTCStatsParser';
4
- import { WebRTCIssueEmitter } from './WebRTCIssueEmitter';
5
-
6
- export interface WIDWindow {
7
- wid: {
8
- handleNewPeerConnection(pc: RTCPeerConnection): void;
9
- },
10
- }
11
-
12
- export type IssueDetectorResult = IssuePayload[];
13
-
14
- export interface IssueDetector {
15
- detect(data: WebRTCStatsParsed): IssueDetectorResult;
16
- }
17
-
18
- export interface NetworkScoresCalculator {
19
- calculate(data: WebRTCStatsParsed): NetworkScores;
20
- }
21
-
22
- export enum EventType {
23
- Issue = 'issue',
24
- NetworkScoresUpdated = 'network-scores-updated',
25
- }
26
-
27
- export type EventPayload = IssueDetectorResult;
28
-
29
- export interface StatsReportItem {
30
- id: string;
31
- stats: WebRTCStatsParsed;
32
- timeTaken: number;
33
- }
34
-
35
- export interface ConnectionInfo {
36
- id: string;
37
- pc: RTCPeerConnection;
38
- }
39
-
40
- export interface CompositeStatsParser {
41
- addPeerConnection: (payload: AddConnectionPayload) => void;
42
- parse: () => Promise<StatsReportItem[]>;
43
- }
44
-
45
- export interface StatsParser {
46
- parse: (info: ConnectionInfo) => Promise<StatsReportItem | undefined>;
47
- }
48
-
49
- export type WebRTCIssueDetectorConstructorParams = {
50
- issueEmitter: WebRTCIssueEmitter;
51
- networkScoresCalculator: NetworkScoresCalculator,
52
- detectors: IssueDetector[],
53
- compositeStatsParser: CompositeStatsParser,
54
- statsReporter: PeriodicWebRTCStatsReporter,
55
- logger: Logger,
56
- onIssues?: (payload: IssueDetectorResult) => void,
57
- onNetworkScoresUpdated?: (payload: NetworkScores) => void,
58
- ignoreSSRCList?: number[],
59
- getStatsInterval?: number,
60
- };
61
-
62
- export enum IssueType {
63
- Network = 'network',
64
- CPU = 'cpu',
65
- Server = 'server',
66
- Stream = 'stream',
67
- }
68
-
69
- export enum IssueReason {
70
- OutboundNetworkQuality = 'outbound-network-quality',
71
- InboundNetworkQuality = 'inbound-network-quality',
72
- OutboundNetworkMediaLatency = 'outbound-network-media-latency',
73
- InboundNetworkMediaLatency = 'inbound-network-media-latency',
74
- NetworkMediaSyncFailure = 'network-media-sync-failure',
75
- OutboundNetworkThroughput = 'outbound-network-throughput',
76
- InboundNetworkThroughput = 'inbound-network-throughput',
77
- EncoderCPUThrottling = 'encoder-cpu-throttling',
78
- DecoderCPUThrottling = 'decoder-cpu-throttling',
79
- ServerIssue = 'server-issue',
80
- VideoCodecMismatchIssue = 'codec-mismatch',
81
- LowInboundMOS = 'low-inbound-mean-opinion-score',
82
- LowOutboundMOS = 'low-outbound-mean-opinion-score',
83
- }
84
-
85
- export type IssuePayload = {
86
- type: IssueType,
87
- reason: IssueReason,
88
- ssrc?: number,
89
- iceCandidate?: string,
90
- data?: number;
91
- debug?: string,
92
- trackIdentifier?: string,
93
- };
94
-
95
- export type DetectIssuesPayload = {
96
- data: WebRTCStatsParsed,
97
- ignoreSSRCList?: number[],
98
- };
99
-
100
- export type NetworkScore = number;
101
-
102
- export type NetworkScores = {
103
- outbound?: NetworkScore,
104
- inbound?: NetworkScore,
105
- };
106
-
107
- export type ParsedInboundAudioStreamStats = {
108
- audioLevel: number,
109
- bitrate: number,
110
- bytesReceived: number,
111
- clockRate: number,
112
- codecId: string,
113
- concealedSamples: number,
114
- concealmentEvents: number,
115
- fecPacketsDiscarded: number,
116
- fecPacketsReceived: number,
117
- headerBytesReceived: number,
118
- id: string,
119
- insertedSamplesForDeceleration: number,
120
- jitter: number,
121
- jitterBufferDelay: number,
122
- jitterBufferEmittedCount: number,
123
- kind: 'audio',
124
- lastPacketReceivedTimestamp: number,
125
- mediaType: string,
126
- mimeType: string,
127
- packetRate: number,
128
- packetsDiscarded: number,
129
- packetsLost: number,
130
- packetsReceived: number,
131
- payloadType: number,
132
- remoteId: string,
133
- removedSamplesForAcceleration: number,
134
- silentConcealedSamples: number,
135
- ssrc: number,
136
- timestamp: number,
137
- totalAudioEnergy: number,
138
- totalSamplesDuration: number,
139
- totalSamplesReceived: number,
140
- track: {
141
- audioLevel: number,
142
- concealedSamples: number,
143
- concealmentEvents: number,
144
- detached: boolean,
145
- ended: boolean,
146
- id: string,
147
- insertedSamplesForDeceleration: number,
148
- jitterBufferDelay: number,
149
- jitterBufferEmittedCount: number,
150
- kind: 'audio',
151
- remoteSource: boolean,
152
- removedSamplesForAcceleration: number,
153
- silentConcealedSamples: number,
154
- timestamp: number,
155
- totalAudioEnergy: number,
156
- totalSamplesDuration: number,
157
- totalSamplesReceived: number,
158
- trackIdentifier: string,
159
- type: string,
160
- },
161
- trackId: string,
162
- transportId: string,
163
- };
164
-
165
- export type ParsedOutboundAudioStreamStats = {
166
- bitrate: number,
167
- bytesSent: number,
168
- clockRate: number,
169
- codecId: string,
170
- headerBytesSent: number,
171
- id: string,
172
- kind: string,
173
- mediaSourceId: string,
174
- mediaType: string,
175
- mimeType: string,
176
- nackCount: number,
177
- packetRate: number,
178
- packetsSent: number,
179
- payloadType: number,
180
- remoteId: string,
181
- retransmittedBytesSent: number,
182
- retransmittedPacketsSent: number,
183
- ssrc: number,
184
- timestamp: number,
185
- targetBitrate: number,
186
- track: {
187
- audioLevel: number,
188
- echoReturnLoss: number,
189
- echoReturnLossEnhancement: number,
190
- id: string,
191
- kind: string,
192
- timestamp: number,
193
- totalAudioEnergy: number,
194
- totalSamplesDuration: number,
195
- trackIdentifier: string,
196
- type: string,
197
- }
198
- trackId: string,
199
- transportId: string,
200
- };
201
-
202
- export type ParsedInboundVideoStreamStats = {
203
- bitrate: number,
204
- bytesReceived: number,
205
- clockRate: number,
206
- codecId: string,
207
- decoderImplementation: string,
208
- firCount: number,
209
- frameHeight: number,
210
- frameWidth: number,
211
- framesDecoded: number,
212
- framesDropped: number,
213
- framesPerSecond: number,
214
- framesReceived: number,
215
- headerBytesReceived: number,
216
- id: string,
217
- jitter: number,
218
- jitterBufferDelay: number,
219
- jitterBufferEmittedCount: number,
220
- keyFramesDecoded: number,
221
- kind: 'video',
222
- mediaType: string,
223
- mimeType: string,
224
- nackCount: number,
225
- packetRate: number,
226
- packetsLost: number,
227
- packetsReceived: number,
228
- payloadType: number,
229
- pliCount: number,
230
- ssrc: number,
231
- timestamp: number,
232
- totalDecodeTime: number,
233
- totalInterFrameDelay: number,
234
- totalSquaredInterFrameDelay: number,
235
- track: {
236
- detached: boolean,
237
- ended: boolean,
238
- frameHeight: number,
239
- frameWidth: number,
240
- framesDecoded: number,
241
- framesDropped: number,
242
- framesReceived: number,
243
- id: string,
244
- jitterBufferDelay: number,
245
- jitterBufferEmittedCount: number,
246
- kind: 'video',
247
- remoteSource: boolean,
248
- timestamp: number,
249
- trackIdentifier: string,
250
- type: string,
251
- }
252
- trackId: string,
253
- transportId: string,
254
- };
255
-
256
- export type ParsedOutboundVideoStreamStats = {
257
- bitrate: number,
258
- bytesSent: number,
259
- clockRate: number,
260
- codecId: string,
261
- encoderImplementation: string,
262
- firCount: number,
263
- frameHeight: number,
264
- frameWidth: number,
265
- framesEncoded: number,
266
- framesPerSecond: number,
267
- framesSent: number,
268
- headerBytesSent: number,
269
- hugeFramesSent: number,
270
- id: string,
271
- keyFramesEncoded: number,
272
- kind: string,
273
- mediaSourceId: string,
274
- mediaType: string,
275
- mimeType: string,
276
- nackCount: number,
277
- packetRate: number,
278
- packetsSent: number,
279
- payloadType: number,
280
- pliCount: number,
281
- qpSum: number,
282
- qualityLimitationDurations: {
283
- other: number,
284
- cpu: number,
285
- bandwidth: number,
286
- none: number,
287
- },
288
- qualityLimitationReason: 'none' | 'bandwidth' | 'cpu' | 'other',
289
- qualityLimitationResolutionChanges: number,
290
- remoteId: string,
291
- retransmittedBytesSent: number,
292
- retransmittedPacketsSent: number,
293
- rid: string,
294
- ssrc: number,
295
- timestamp: number,
296
- totalEncodeTime: number,
297
- totalEncodedBytesTarget: number,
298
- totalPacketSendDelay: number,
299
- track: {
300
- id: string,
301
- frames: number,
302
- framesPerSecond: number,
303
- height: number,
304
- timestamp: number,
305
- type: string,
306
- trackIdentifier: string,
307
- kind: string,
308
- width: number,
309
- }
310
- trackId: string,
311
- transportId: string,
312
- type: string,
313
- };
314
-
315
- export type ParsedConnectionStats = {
316
- availableOutgoingBitrate: number,
317
- bytesReceived: number,
318
- bytesSent: number,
319
- currentRoundTripTime: number,
320
- id: string,
321
- transportId: string,
322
- packetsReceived: number,
323
- packetsSent: number,
324
- state: string,
325
- totalRoundTripTime: number,
326
- type: string,
327
- local: IceCandidateConnectionStats,
328
- remote: IceCandidateConnectionStats,
329
- };
330
-
331
- export type IceCandidateConnectionStats = {
332
- address: string,
333
- candidateType: string,
334
- id: string,
335
- ip: string,
336
- isRemote: boolean
337
- networkType?: string,
338
- port: number,
339
- priority: number
340
- protocol: 'udp' | 'tcp'
341
- timestamp: number,
342
- transportId: string,
343
- type: 'local-candidate' | 'remote-candidate',
344
- };
345
-
346
- export type ParsedRemoteInboundStreamStats = {
347
- clockRate: number,
348
- codecId: string,
349
- fractionLost: number,
350
- id: string,
351
- jitter: number,
352
- kind: string,
353
- localId: string,
354
- mimeType: string,
355
- packetsLost: number,
356
- payloadType: number,
357
- roundTripTime: number,
358
- roundTripTimeMeasurements: number,
359
- ssrc: number,
360
- timestamp: number,
361
- totalRoundTripTime: number,
362
- transportId: string,
363
- type: string,
364
- };
365
-
366
- export type ParsedRemoteOutboundStreamStats = {
367
- bytesSent: number,
368
- clockRate: number,
369
- codecId: string,
370
- id: string,
371
- kind: string,
372
- localId: string,
373
- mimeType: string,
374
- packetsSent: number,
375
- payloadType: number,
376
- remoteTimestamp: number,
377
- reportsSent: number,
378
- roundTripTimeMeasurements: number,
379
- ssrc: number,
380
- timestamp: number,
381
- totalRoundTripTime: number,
382
- transportId: string,
383
- type: string,
384
- };
385
-
386
- export type RemoteParsedStats = {
387
- video: {
388
- inbound: ParsedRemoteInboundStreamStats[],
389
- outbound: ParsedRemoteOutboundStreamStats[],
390
- },
391
- audio: {
392
- inbound: ParsedRemoteInboundStreamStats[],
393
- outbound: ParsedRemoteOutboundStreamStats[],
394
- },
395
- };
396
-
397
- export type WebRTCStatsParsed = {
398
- audio: {
399
- inbound: ParsedInboundAudioStreamStats[],
400
- outbound: ParsedOutboundAudioStreamStats[],
401
- },
402
- video: {
403
- inbound: ParsedInboundVideoStreamStats[],
404
- outbound: ParsedOutboundVideoStreamStats[],
405
- },
406
- connection: ParsedConnectionStats,
407
- remote: RemoteParsedStats,
408
- };