@livedigital/client 3.50.0 → 3.51.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/WebRTCStats/BaseTrackStatsManager.d.ts +9 -0
- package/dist/engine/WebRTCStats/InboundTrackStatsManager.d.ts +12 -2
- package/dist/engine/WebRTCStats/OutboundTrackStatsManager.d.ts +25 -0
- package/dist/engine/WebRTCStats/StatsHandler.d.ts +6 -5
- package/dist/engine/WebRTCStats/TransportsStatsProvider.d.ts +5 -1
- package/dist/engine/WebRTCStats/types.d.ts +25 -2
- package/dist/engine/analyticsApiClient/types.d.ts +3 -0
- package/dist/engine/index.d.ts +4 -1
- package/dist/engine/media/tracks/DefaultBaseTrack.d.ts +2 -0
- package/dist/engine/media/tracks/PeerTrack.d.ts +6 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.es.js +2 -2
- package/dist/index.js +2 -2
- package/dist/inversify.tokens.d.ts +5 -0
- package/dist/qoe/ScoresCalculator.d.ts +11 -0
- package/dist/qoe/WIDStatsAdapter.d.ts +10 -0
- package/dist/qoe/constants.d.ts +5 -0
- package/dist/qoe/helpers.d.ts +7 -0
- package/dist/qoe/types.d.ts +112 -0
- package/dist/types/media.d.ts +6 -0
- package/package.json +2 -2
- package/dist/engine/WebRTCStats/OutboudTrackStatsManager.d.ts +0 -16
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export default abstract class BaseTrackStatsManager {
|
|
2
|
+
#private;
|
|
3
|
+
protected constructor({ track }: {
|
|
4
|
+
track: MediaStreamTrack;
|
|
5
|
+
});
|
|
6
|
+
protected abstract cleanupStats(): void;
|
|
7
|
+
protected touchLastReceivedStatsTimestamp(): void;
|
|
8
|
+
private startCleanupTimer;
|
|
9
|
+
}
|
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
import type { ParsedInboundVideoStreamStats, ParsedInboundAudioStreamStats } from 'webrtc-issue-detector';
|
|
2
2
|
import type StatsHandler from './StatsHandler';
|
|
3
|
+
import type { ExpectedVideoParams, MOSScores } from '../../qoe/types';
|
|
4
|
+
import type { ScoresCalculator } from '../../qoe/ScoresCalculator';
|
|
5
|
+
import type { WIDStatsAdapter } from '../../qoe/WIDStatsAdapter';
|
|
6
|
+
import BaseTrackStatsManager from './BaseTrackStatsManager';
|
|
3
7
|
interface InboundTrackStatsManagerParams {
|
|
4
8
|
track: MediaStreamTrack;
|
|
5
9
|
statsHandler: StatsHandler;
|
|
10
|
+
widStatsAdapter: WIDStatsAdapter;
|
|
11
|
+
scoresCalculator: ScoresCalculator;
|
|
12
|
+
getExpectedVideoParams?: () => ExpectedVideoParams | undefined;
|
|
13
|
+
isStaticContent?: boolean;
|
|
6
14
|
}
|
|
7
|
-
export default class InboundTrackStatsManager {
|
|
15
|
+
export default class InboundTrackStatsManager extends BaseTrackStatsManager {
|
|
8
16
|
#private;
|
|
9
|
-
constructor({ track, statsHandler }: InboundTrackStatsManagerParams);
|
|
17
|
+
constructor({ track, statsHandler, widStatsAdapter, scoresCalculator, getExpectedVideoParams, isStaticContent, }: InboundTrackStatsManagerParams);
|
|
10
18
|
get videoWebRTCStats(): ParsedInboundVideoStreamStats | undefined;
|
|
11
19
|
get audioWebRTCStats(): ParsedInboundAudioStreamStats | undefined;
|
|
20
|
+
get scores(): MOSScores;
|
|
12
21
|
private handleWebRTCStats;
|
|
13
22
|
private setVideoWebRTCStats;
|
|
14
23
|
private setAudioWebRTCStats;
|
|
24
|
+
protected cleanupStats(): void;
|
|
15
25
|
}
|
|
16
26
|
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ParsedOutboundVideoStreamStats, ParsedOutboundAudioStreamStats } from 'webrtc-issue-detector';
|
|
2
|
+
import type StatsHandler from './StatsHandler';
|
|
3
|
+
import type { MOSScores } from '../../qoe/types';
|
|
4
|
+
import type { ScoresCalculator } from '../../qoe/ScoresCalculator';
|
|
5
|
+
import type { WIDStatsAdapter } from '../../qoe/WIDStatsAdapter';
|
|
6
|
+
import BaseTrackStatsManager from './BaseTrackStatsManager';
|
|
7
|
+
interface OutboundTrackStatsManagerParams {
|
|
8
|
+
track: MediaStreamTrack;
|
|
9
|
+
statsHandler: StatsHandler;
|
|
10
|
+
widStatsAdapter: WIDStatsAdapter;
|
|
11
|
+
scoresCalculator: ScoresCalculator;
|
|
12
|
+
isStaticContent?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export default class OutboundTrackStatsManager extends BaseTrackStatsManager {
|
|
15
|
+
#private;
|
|
16
|
+
constructor({ track, statsHandler, widStatsAdapter, scoresCalculator, isStaticContent, }: OutboundTrackStatsManagerParams);
|
|
17
|
+
get videoWebRTCStats(): ParsedOutboundVideoStreamStats | undefined;
|
|
18
|
+
get audioWebRTCStats(): ParsedOutboundAudioStreamStats | undefined;
|
|
19
|
+
get scores(): MOSScores;
|
|
20
|
+
private handleWebRTCStats;
|
|
21
|
+
private setVideoWebRTCStats;
|
|
22
|
+
private setAudioWebRTCStats;
|
|
23
|
+
protected cleanupStats(): void;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { ParsedConnectionStats,
|
|
1
|
+
import { ParsedConnectionStats, StatsReportItem } from 'webrtc-issue-detector/dist/types';
|
|
2
|
+
import type { ParsedInboundAudioStreamCompositeStats, ParsedInboundVideoStreamCompositeStats, ParsedOutboundAudioStreamCompositeStats, ParsedOutboundVideoStreamCompositeStats } from './types';
|
|
2
3
|
export default class StatsHandler {
|
|
3
4
|
#private;
|
|
4
5
|
handle(payload: StatsReportItem[]): void;
|
|
5
6
|
addConnectionHandler(id: string, handler: (stats: ParsedConnectionStats) => void): void;
|
|
6
|
-
addInboundVideoHandler(id: string, handler: (stats:
|
|
7
|
-
addInboundAudioHandler(id: string, handler: (stats:
|
|
8
|
-
addOutboundVideoHandler(id: string, handler: (stats:
|
|
9
|
-
addOutboundAudioHandler(id: string, handler: (stats:
|
|
7
|
+
addInboundVideoHandler(id: string, handler: (stats: ParsedInboundVideoStreamCompositeStats) => void): void;
|
|
8
|
+
addInboundAudioHandler(id: string, handler: (stats: ParsedInboundAudioStreamCompositeStats) => void): void;
|
|
9
|
+
addOutboundVideoHandler(id: string, handler: (stats: ParsedOutboundVideoStreamCompositeStats[]) => void): void;
|
|
10
|
+
addOutboundAudioHandler(id: string, handler: (stats: ParsedOutboundAudioStreamCompositeStats) => void): void;
|
|
10
11
|
removeConnectionHandler(id: string): void;
|
|
11
12
|
removeInboundVideoHandler(id: string): void;
|
|
12
13
|
removeInboundAudioHandler(id: string): void;
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { TransportsStatsProviderParams, TransportsWebRTCStats } from './types';
|
|
2
2
|
import type { LoggerFactory } from '../../types/container';
|
|
3
|
+
import type { ScoresCalculator } from '../../qoe/ScoresCalculator';
|
|
3
4
|
export default class TransportsStatsProvider {
|
|
4
5
|
#private;
|
|
5
|
-
constructor(loggerFactory: LoggerFactory);
|
|
6
|
+
constructor(loggerFactory: LoggerFactory, scoresCalculator: ScoresCalculator);
|
|
6
7
|
init({ sendTransportConnectionManager, receiveTransportConnectionManager, media, peers, }: TransportsStatsProviderParams): void;
|
|
7
8
|
getStats(): TransportsWebRTCStats;
|
|
8
9
|
clear(): void;
|
|
9
10
|
private doGetStats;
|
|
10
11
|
private calculateInboundTracksBitrate;
|
|
12
|
+
private calculateInboundTracksResultQValues;
|
|
13
|
+
private calculateOutboundTracksResultQValues;
|
|
11
14
|
private calculateOutboundTracksBitrate;
|
|
15
|
+
private getWorstQValues;
|
|
12
16
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ParsedConnectionStats } from 'webrtc-issue-detector';
|
|
1
|
+
import type { ParsedConnectionStats, ParsedInboundAudioStreamStats, ParsedInboundVideoStreamStats, ParsedOutboundAudioStreamStats, ParsedOutboundVideoStreamStats, ParsedRemoteInboundStreamStats } from 'webrtc-issue-detector';
|
|
2
2
|
import type Media from '../media';
|
|
3
3
|
import type { IPeersService } from '../Peers';
|
|
4
4
|
import type ConnectionStatManager from './ConnectionStatsManager';
|
|
@@ -8,10 +8,33 @@ export interface TransportsStatsProviderParams {
|
|
|
8
8
|
media: Media;
|
|
9
9
|
peers: IPeersService;
|
|
10
10
|
}
|
|
11
|
-
export interface
|
|
11
|
+
export interface ResultQValues {
|
|
12
|
+
Qav?: number;
|
|
13
|
+
Qa?: number;
|
|
14
|
+
Qv?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface LDTransportWebRTCStats extends ParsedConnectionStats, ResultQValues {
|
|
12
17
|
bitrate: number;
|
|
13
18
|
}
|
|
14
19
|
export interface TransportsWebRTCStats {
|
|
15
20
|
outbound?: LDTransportWebRTCStats;
|
|
16
21
|
inbound?: LDTransportWebRTCStats;
|
|
17
22
|
}
|
|
23
|
+
export interface ParsedInboundVideoStreamCompositeStats {
|
|
24
|
+
inbound: ParsedInboundVideoStreamStats;
|
|
25
|
+
connection: ParsedConnectionStats;
|
|
26
|
+
}
|
|
27
|
+
export interface ParsedInboundAudioStreamCompositeStats {
|
|
28
|
+
inbound: ParsedInboundAudioStreamStats;
|
|
29
|
+
connection: ParsedConnectionStats;
|
|
30
|
+
}
|
|
31
|
+
export interface ParsedOutboundVideoStreamCompositeStats {
|
|
32
|
+
remoteInbound: ParsedRemoteInboundStreamStats;
|
|
33
|
+
outbound: ParsedOutboundVideoStreamStats;
|
|
34
|
+
connection: ParsedConnectionStats;
|
|
35
|
+
}
|
|
36
|
+
export interface ParsedOutboundAudioStreamCompositeStats {
|
|
37
|
+
remoteInbound: ParsedRemoteInboundStreamStats;
|
|
38
|
+
outbound: ParsedOutboundAudioStreamStats;
|
|
39
|
+
connection: ParsedConnectionStats;
|
|
40
|
+
}
|
package/dist/engine/index.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ import StatsHandler from './WebRTCStats/StatsHandler';
|
|
|
26
26
|
import TransportsStatsProvider from './WebRTCStats/TransportsStatsProvider';
|
|
27
27
|
import { TransportsWebRTCStats } from './WebRTCStats/types';
|
|
28
28
|
import PeersStorage from './PeersStorage';
|
|
29
|
+
import { ScoresCalculator } from '../qoe/ScoresCalculator';
|
|
29
30
|
declare class Engine {
|
|
30
31
|
#private;
|
|
31
32
|
private readonly state;
|
|
@@ -49,13 +50,15 @@ declare class Engine {
|
|
|
49
50
|
private readonly statsHandler;
|
|
50
51
|
private readonly transportsStatsProvider;
|
|
51
52
|
private readonly localMutex;
|
|
53
|
+
private readonly scoresCalculatorInstance;
|
|
52
54
|
private readonly webRtcIssueDetector?;
|
|
53
55
|
private rejoinRequested;
|
|
54
56
|
private isReleasing;
|
|
55
57
|
private readonly mark;
|
|
56
58
|
private readonly handleSignalingError;
|
|
57
|
-
constructor(state: CallState, myPeer: MyPeer, loggerFactory: (namespace: string) => Logger, integrationsService: IntegrationsService, processorsCache: ProcessorsCache, mediaEventHandler: MediaEventHandler, channelEventsHandler: ChannelEventHandler, peerTrackFactory: PeerTrackFactory, peers: IPeersService, peersStorage: PeersStorage, system: System, media: Media, network: Network, networkTransportPolicyManager: NetworkTransportPolicyManager, producerCloseManager: ProducerCloseManager, signalingApiClient: SignalingApiClient, eventsQueue: EventsQueue, clientEventEmitter: EnhancedEventEmitter<ClientObserverEvents>, internalEventEmitter: EnhancedEventEmitter<InternalObserverEvents>, statsHandler: StatsHandler, transportsStatsProvider: TransportsStatsProvider, localMutex: LocalMutex, webRtcIssueDetector?: WebRTCIssueDetector | undefined);
|
|
59
|
+
constructor(state: CallState, myPeer: MyPeer, loggerFactory: (namespace: string) => Logger, integrationsService: IntegrationsService, processorsCache: ProcessorsCache, mediaEventHandler: MediaEventHandler, channelEventsHandler: ChannelEventHandler, peerTrackFactory: PeerTrackFactory, peers: IPeersService, peersStorage: PeersStorage, system: System, media: Media, network: Network, networkTransportPolicyManager: NetworkTransportPolicyManager, producerCloseManager: ProducerCloseManager, signalingApiClient: SignalingApiClient, eventsQueue: EventsQueue, clientEventEmitter: EnhancedEventEmitter<ClientObserverEvents>, internalEventEmitter: EnhancedEventEmitter<InternalObserverEvents>, statsHandler: StatsHandler, transportsStatsProvider: TransportsStatsProvider, localMutex: LocalMutex, scoresCalculatorInstance: ScoresCalculator, webRtcIssueDetector?: WebRTCIssueDetector | undefined);
|
|
58
60
|
get isChannelJoined(): boolean;
|
|
61
|
+
get scoresCalculator(): ScoresCalculator;
|
|
59
62
|
private initialize;
|
|
60
63
|
release(keepTracks?: boolean): Promise<void>;
|
|
61
64
|
getPeers(): Peer[];
|
|
@@ -5,6 +5,7 @@ import { type BaseTrackInfo, type EncoderConfig, TrackLabel, type TrackOutboundS
|
|
|
5
5
|
import type { InternalObserverEvents } from '../../../types/engine';
|
|
6
6
|
import type { BaseTrack, BaseTrackDependenciesParams, BaseTrackParams } from '../../../types/media';
|
|
7
7
|
import type Logger from '../../Logger';
|
|
8
|
+
import type { MOSScores } from '../../../qoe/types';
|
|
8
9
|
type BaseTrackConstructorParams = BaseTrackParams & BaseTrackDependenciesParams;
|
|
9
10
|
export interface LoggerContext {
|
|
10
11
|
label: TrackLabel;
|
|
@@ -23,6 +24,7 @@ declare class DefaultBaseTrack implements BaseTrack {
|
|
|
23
24
|
constructor(params: BaseTrackConstructorParams);
|
|
24
25
|
get videoWebRTCStats(): ParsedOutboundVideoStreamStats | undefined;
|
|
25
26
|
get audioWebRTCStats(): ParsedOutboundAudioStreamStats | undefined;
|
|
27
|
+
get connectionScores(): MOSScores;
|
|
26
28
|
get logCtx(): LoggerContext;
|
|
27
29
|
get observer(): EnhancedEventEmitter;
|
|
28
30
|
get mediaStreamTrack(): MediaStreamTrack;
|
|
@@ -10,12 +10,17 @@ import type Network from '../../network';
|
|
|
10
10
|
import type PeerConsumer from '../../PeerConsumer';
|
|
11
11
|
import type StatsHandler from '../../WebRTCStats/StatsHandler';
|
|
12
12
|
import type Media from '../index';
|
|
13
|
+
import type { MOSScores } from '../../../qoe/types';
|
|
14
|
+
import type { WIDStatsAdapter } from '../../../qoe/WIDStatsAdapter';
|
|
15
|
+
import type { ScoresCalculator } from '../../../qoe/ScoresCalculator';
|
|
13
16
|
export interface PeerTrackDependencies {
|
|
14
17
|
callState: CallState;
|
|
15
18
|
loggerFactory: (namespace: string) => Logger;
|
|
16
19
|
media: Media;
|
|
17
20
|
network: Network;
|
|
18
21
|
peerConsumerFactory: PeerConsumerFactory;
|
|
22
|
+
widStatsAdapter: WIDStatsAdapter;
|
|
23
|
+
scoresCalculator: ScoresCalculator;
|
|
19
24
|
}
|
|
20
25
|
interface PeerTrackConstructor extends PeerTrackDependencies {
|
|
21
26
|
mediaStreamTrack: MediaStreamTrack;
|
|
@@ -48,6 +53,7 @@ declare class PeerTrack {
|
|
|
48
53
|
constructor(payload: PeerTrackConstructor);
|
|
49
54
|
get videoWebRTCStats(): ParsedInboundVideoStreamStats | undefined;
|
|
50
55
|
get audioWebRTCStats(): ParsedInboundAudioStreamStats | undefined;
|
|
56
|
+
get connectionScores(): MOSScores;
|
|
51
57
|
get logCtx(): Record<string, unknown>;
|
|
52
58
|
get volume(): number;
|
|
53
59
|
get isRemote(): boolean;
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import type { AvailableMediaDevices, CreateCameraVideoTrackOptions, CreateCustom
|
|
|
7
7
|
import type { ClientObserverEvents } from './types/engine';
|
|
8
8
|
import type { AudioTrack, Track, VideoTrack } from './types/media';
|
|
9
9
|
import type { IceTransportPolicy } from './engine/signalingApiClient/api';
|
|
10
|
+
import type { ScoresCalculator } from './qoe/ScoresCalculator';
|
|
10
11
|
declare class Client {
|
|
11
12
|
#private;
|
|
12
13
|
private readonly clientEventEmitter;
|
|
@@ -18,6 +19,7 @@ declare class Client {
|
|
|
18
19
|
get availableVideoDevices(): MediaDeviceInfo[];
|
|
19
20
|
get availableAudioDevices(): MediaDeviceInfo[];
|
|
20
21
|
get effectsSDKInitialized(): boolean;
|
|
22
|
+
get scoresCalculator(): ScoresCalculator;
|
|
21
23
|
detectDevices(force?: boolean): Promise<AvailableMediaDevices>;
|
|
22
24
|
initEffectsSDK(): Promise<boolean>;
|
|
23
25
|
join(params: JoinChannelParams): Promise<void>;
|
|
@@ -36,6 +38,7 @@ declare class Client {
|
|
|
36
38
|
setPreferRelay(value: boolean): void;
|
|
37
39
|
getPreferRelay(): boolean;
|
|
38
40
|
changeIceTransportPolicy(policy: IceTransportPolicy): Promise<void>;
|
|
41
|
+
restartIce(): Promise<void>;
|
|
39
42
|
transportsStats(): TransportsWebRTCStats | undefined;
|
|
40
43
|
setSignalingServerUrl(url: string): void;
|
|
41
44
|
}
|