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