@vkontakte/calls-sdk 2.8.11-dev.0d771d48.0 → 2.8.11-dev.0e6b88ca.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/CallsSDK.d.ts +60 -35
- package/abstract/BaseApi.d.ts +4 -7
- package/abstract/BaseSignaling.d.ts +5 -7
- package/calls-sdk.cjs.js +11 -11
- package/calls-sdk.esm.js +6338 -5320
- package/classes/AudioFix.d.ts +5 -1
- package/classes/AudioOutput.d.ts +5 -1
- package/classes/CallRegistry.d.ts +26 -0
- package/classes/Conversation.d.ts +48 -12
- package/classes/ConversationResponseValidator.d.ts +3 -0
- package/classes/DebugInfo.d.ts +3 -0
- package/classes/DisplayLayoutRequester.d.ts +39 -0
- package/classes/ExternalIdCache.d.ts +19 -0
- package/classes/MediaSource.d.ts +12 -1
- package/classes/ParticipantIdRegistry.d.ts +3 -0
- package/classes/ProducerCommandSerializationService.d.ts +3 -0
- package/classes/SignalingActor.d.ts +3 -1
- package/classes/SpeakerDetector.d.ts +2 -1
- package/classes/SpecListener.d.ts +10 -1
- package/classes/{Logger.d.ts → StatsLogger.d.ts} +3 -13
- package/classes/VideoEffectsFpsLimiter.d.ts +3 -0
- package/classes/asr/AsrReceiver.d.ts +3 -1
- package/classes/codec/LibVPxDecoder.d.ts +3 -0
- package/classes/codec/LibVPxEncoder.d.ts +3 -1
- package/classes/codec/WebCodecsDecoder.d.ts +3 -0
- package/classes/codec/WebCodecsEncoder.d.ts +3 -1
- package/classes/codec/WorkerBase.d.ts +7 -0
- package/classes/screenshare/BaseStreamBuilder.d.ts +4 -1
- package/classes/screenshare/CanvasRenderer.d.ts +3 -1
- package/classes/screenshare/ScreenCaptureReceiver.d.ts +7 -1
- package/classes/screenshare/ScreenCaptureSender.d.ts +5 -1
- package/classes/screenshare/ScreenCongestionControl.d.ts +3 -1
- package/classes/screenshare/StreamBuilder.d.ts +5 -1
- package/classes/screenshare/TrackGeneratorRenderer.d.ts +3 -1
- package/classes/screenshare/WebmBuilder.d.ts +3 -1
- package/classes/stat/CodecStatsAggregator.d.ts +7 -7
- package/classes/stat/ConversationStats.d.ts +21 -0
- package/classes/stat/StatAggregator.d.ts +6 -6
- package/classes/stat/StatFirstMediaReceived.d.ts +6 -2
- package/classes/stat/StatPings.d.ts +9 -9
- package/classes/stat/StatScreenShareFirstFrame.d.ts +3 -1
- package/classes/stat/StatSignalingCommands.d.ts +8 -8
- package/classes/transport/BaseTransport.d.ts +1 -1
- package/classes/transport/DirectStatReporter.d.ts +3 -1
- package/classes/transport/DirectTransport.d.ts +12 -1
- package/classes/transport/PerfStatReporter.d.ts +5 -1
- package/classes/transport/ServerTransport.d.ts +10 -2
- package/classes/transport/Transport.d.ts +13 -14
- package/default/Api.d.ts +11 -13
- package/default/Signaling.d.ts +39 -45
- package/default/SignalingTransport.d.ts +68 -0
- package/enums/HangupType.d.ts +1 -0
- package/enums/SignalingNotification.d.ts +3 -1
- package/enums/TransportState.d.ts +10 -0
- package/enums/TransportTopology.d.ts +5 -0
- package/package.json +1 -1
- package/static/Capabilities.d.ts +5 -0
- package/static/Debug.d.ts +27 -8
- package/static/External.d.ts +146 -75
- package/static/Params.d.ts +113 -82
- package/static/ParticipantConnectionStatusUtils.d.ts +16 -0
- package/static/Utils.d.ts +3 -2
- package/static/WebRTCUtils.d.ts +6 -4
- package/types/Capabilities.d.ts +24 -0
- package/types/Conversation.d.ts +1 -1
- package/types/FastStart.d.ts +1 -0
- package/types/Participant.d.ts +12 -1
- package/types/ParticipantLayout.d.ts +33 -0
- package/types/PushData.d.ts +3 -0
- package/types/SignalingMessage.d.ts +19 -2
- package/types/Statistics.d.ts +1 -1
- package/types/WebTransport.d.ts +4 -0
- package/utils/DebugStorage.d.ts +100 -1
- package/classes/stat/EventMetricsService.d.ts +0 -9
- package/static/ConversationDebugLogger.d.ts +0 -13
package/classes/AudioFix.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type DebugLogger } from '../static/Debug';
|
|
2
|
+
import StatsLogger from './StatsLogger';
|
|
1
3
|
import { MediaSource } from './MediaSource';
|
|
2
4
|
export default class AudioFix {
|
|
3
5
|
private _fixNoPacketsApplied;
|
|
@@ -7,11 +9,13 @@ export default class AudioFix {
|
|
|
7
9
|
private _fixTooManyPacketsFailed;
|
|
8
10
|
private _fixTooManyPacketsTime;
|
|
9
11
|
private _mediaSource;
|
|
12
|
+
private readonly _debug;
|
|
13
|
+
private readonly _logger;
|
|
10
14
|
private _lastPacketsSent;
|
|
11
15
|
private _lastPacketsSentTime;
|
|
12
16
|
private _toggleAudioPromise;
|
|
13
17
|
private _fixNoPacketsAppliedVideo;
|
|
14
|
-
constructor(mediaSource: MediaSource);
|
|
18
|
+
constructor(mediaSource: MediaSource, debug?: DebugLogger, logger?: StatsLogger | null);
|
|
15
19
|
private _fixAudioDeviceNoPackets;
|
|
16
20
|
private _fixAudioDeviceTooManyPackets;
|
|
17
21
|
fix(rtps: any[]): void;
|
package/classes/AudioOutput.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { type DebugLogger } from '../static/Debug';
|
|
1
2
|
import { ParticipantId } from '../types/Participant';
|
|
3
|
+
import StatsLogger from './StatsLogger';
|
|
2
4
|
import { StatFirstMediaReceived } from './stat/StatFirstMediaReceived';
|
|
3
5
|
/**
|
|
4
6
|
* Единый AudioOutput поддерживающий p2p, audioMix и transparent-audio
|
|
@@ -10,7 +12,9 @@ export default class AudioOutput {
|
|
|
10
12
|
private _volume;
|
|
11
13
|
private readonly _features;
|
|
12
14
|
private readonly _statFirstMediaReceived;
|
|
13
|
-
|
|
15
|
+
protected readonly _debug: DebugLogger;
|
|
16
|
+
private readonly _logger;
|
|
17
|
+
constructor(statFirstMediaReceived: StatFirstMediaReceived, allowMultipleTracks?: boolean, debug?: DebugLogger, logger?: StatsLogger | null);
|
|
14
18
|
add(participantId: ParticipantId, track: MediaStreamTrack): void;
|
|
15
19
|
remove(participantId: ParticipantId, track: MediaStreamTrack): void;
|
|
16
20
|
get volume(): number;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import Conversation from './Conversation';
|
|
2
|
+
import MediaSettings from '../types/MediaSettings';
|
|
3
|
+
export interface HoldableConversation extends Conversation {
|
|
4
|
+
id: string;
|
|
5
|
+
hold(hold: boolean, lastActiveMediaSettings?: MediaSettings): Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
export declare class CallRegistry {
|
|
8
|
+
private _conversations;
|
|
9
|
+
private _activeId;
|
|
10
|
+
private _mutex;
|
|
11
|
+
add(conversation: HoldableConversation): void;
|
|
12
|
+
remove(id: string | null): void;
|
|
13
|
+
get(id: string): HoldableConversation | undefined;
|
|
14
|
+
getActive(): HoldableConversation | null;
|
|
15
|
+
getFirst(): HoldableConversation | null;
|
|
16
|
+
getActiveId(): string | null;
|
|
17
|
+
has(id: string): boolean;
|
|
18
|
+
getAll(): HoldableConversation[];
|
|
19
|
+
get callsLength(): number;
|
|
20
|
+
setActive(id: string): Promise<void>;
|
|
21
|
+
setHold(id: string): Promise<void>;
|
|
22
|
+
switchCall(id: string): Promise<void>;
|
|
23
|
+
clear(): void;
|
|
24
|
+
}
|
|
25
|
+
declare const callRegistry: CallRegistry;
|
|
26
|
+
export { callRegistry };
|
|
@@ -16,11 +16,11 @@ import { ConversationData, ConversationOnStartParams } from '../types/Conversati
|
|
|
16
16
|
import { ExternalId, ExternalParticipant, ExternalParticipantId, ExternalParticipantListChunk, ExternalUserId } from '../types/ExternalId';
|
|
17
17
|
import type { FastJoinHandler } from '../types/FastJoin';
|
|
18
18
|
import MediaModifiers from '../types/MediaModifiers';
|
|
19
|
-
import { IVideoDimentions } from '../types/MediaSettings';
|
|
19
|
+
import MediaSettings, { IVideoDimentions } from '../types/MediaSettings';
|
|
20
20
|
import { IAddMovieParams, IUpdateMovieData } from '../types/MovieShare';
|
|
21
21
|
import MuteStates from '../types/MuteStates';
|
|
22
22
|
import { CompositeUserId, IGetParticipantsParameters, ParticipantId, ParticipantStateData } from '../types/Participant';
|
|
23
|
-
import { ParticipantLayout } from '../types/ParticipantLayout';
|
|
23
|
+
import { DisplayLayoutRequest, ParticipantLayout } from '../types/ParticipantLayout';
|
|
24
24
|
import { ParticipantListChunkParameters } from '../types/ParticipantListChunk';
|
|
25
25
|
import ParticipantPriority from '../types/ParticipantPriority';
|
|
26
26
|
import { ParticipantStreamDescription } from '../types/ParticipantStreamDescription';
|
|
@@ -32,15 +32,20 @@ export default class Conversation extends EventEmitter {
|
|
|
32
32
|
private readonly _api;
|
|
33
33
|
private readonly _signaling;
|
|
34
34
|
private readonly _signalingActor;
|
|
35
|
+
private readonly _displayLayoutRequester;
|
|
35
36
|
private _mediaSource;
|
|
36
37
|
private _conversation;
|
|
37
38
|
private _myLastRequestedLayouts;
|
|
38
39
|
private _state;
|
|
40
|
+
private _previousState;
|
|
41
|
+
/** Если пользователь в зале ожидания, холд должен вызываться после промоута */
|
|
42
|
+
private _waitingHallHoldPending;
|
|
39
43
|
private _participantState;
|
|
40
44
|
private _participants;
|
|
41
45
|
private _pendingParticipants;
|
|
42
46
|
private _transport;
|
|
43
47
|
private _debugInfo;
|
|
48
|
+
private readonly _debug;
|
|
44
49
|
private _volumesDetector;
|
|
45
50
|
private _speakerDetector;
|
|
46
51
|
private _localVolumeDetector;
|
|
@@ -49,12 +54,14 @@ export default class Conversation extends EventEmitter {
|
|
|
49
54
|
private _lastSignalledActiveSpeakerId;
|
|
50
55
|
private _isRealTimeAsrRequested;
|
|
51
56
|
private _serverSettings;
|
|
52
|
-
private
|
|
53
|
-
private
|
|
54
|
-
private
|
|
55
|
-
private
|
|
57
|
+
private _serverTimeOffset;
|
|
58
|
+
private _delayedHangup;
|
|
59
|
+
private _abortController;
|
|
60
|
+
private _calleeUnavailableDeadline;
|
|
61
|
+
private _calleeUnavailableTimer;
|
|
56
62
|
private readonly _onUnload;
|
|
57
63
|
private readonly _audioOutput;
|
|
64
|
+
private readonly _stats;
|
|
58
65
|
private _lastStalled;
|
|
59
66
|
private _audioMixStalled;
|
|
60
67
|
private _audioFix;
|
|
@@ -69,6 +76,13 @@ export default class Conversation extends EventEmitter {
|
|
|
69
76
|
static current(): Conversation | null;
|
|
70
77
|
static hangupAfterInit(): void;
|
|
71
78
|
static id(): string | null;
|
|
79
|
+
get id(): string;
|
|
80
|
+
get externalId(): ExternalParticipantId | undefined;
|
|
81
|
+
get mediaSettings(): MediaSettings | undefined;
|
|
82
|
+
get isCallHeld(): boolean;
|
|
83
|
+
static debugSessionId(): string | null;
|
|
84
|
+
static getSyncedTime(): number;
|
|
85
|
+
get debugSessionId(): string | null;
|
|
72
86
|
onStart({ opponentIds, opponentType, mediaOptions, payload, joiningAllowed, requireAuthToJoin, onlyAdminCanShareMovie, externalIds, onFastStart, conversationId, }: ConversationOnStartParams): Promise<ConversationData>;
|
|
73
87
|
onJoin(joinArgs: {
|
|
74
88
|
conversationId?: string;
|
|
@@ -105,7 +119,9 @@ export default class Conversation extends EventEmitter {
|
|
|
105
119
|
destroy(): Promise<void>;
|
|
106
120
|
private _getConversationParams;
|
|
107
121
|
private _setConversationParams;
|
|
108
|
-
private
|
|
122
|
+
private _buildSignalingEndpoint;
|
|
123
|
+
private _finishCalleeUnavailableWatchdog;
|
|
124
|
+
private _clearCalleeUnavailableWatchdog;
|
|
109
125
|
/**
|
|
110
126
|
* @throws ErrorEvent
|
|
111
127
|
*/
|
|
@@ -132,7 +148,12 @@ export default class Conversation extends EventEmitter {
|
|
|
132
148
|
private _registerParticipants;
|
|
133
149
|
/** Установим состояние локальных мьютов */
|
|
134
150
|
private _registerParticipantLocalMuteState;
|
|
135
|
-
private
|
|
151
|
+
private _remoteParticipantSessionState;
|
|
152
|
+
private _buildConnectionStatus;
|
|
153
|
+
private _isParticipantSessionStateApplicable;
|
|
154
|
+
private _setTransportStatus;
|
|
155
|
+
private _setSessionState;
|
|
156
|
+
private _emitParticipantTransition;
|
|
136
157
|
private _registerParticipantInCache;
|
|
137
158
|
private _getExistedParticipantByIdOrCreate;
|
|
138
159
|
private _getExternalIdByParticipantId;
|
|
@@ -172,6 +193,7 @@ export default class Conversation extends EventEmitter {
|
|
|
172
193
|
private _cleanupParticipants;
|
|
173
194
|
private _cleanupParticipantAgnosticStreams;
|
|
174
195
|
private _cleanupTransport;
|
|
196
|
+
private _cleanupTransportForHold;
|
|
175
197
|
private _cleanupSpeakerDetector;
|
|
176
198
|
private _cleanupSpecListener;
|
|
177
199
|
private _cleanupSignaling;
|
|
@@ -199,14 +221,18 @@ export default class Conversation extends EventEmitter {
|
|
|
199
221
|
*/
|
|
200
222
|
changePriorities(priorities: ParticipantPriority[]): Promise<void>;
|
|
201
223
|
changeParticipantState(state: ParticipantStateData, compositeUserId?: CompositeUserId): Promise<void>;
|
|
202
|
-
hold(hold: boolean): Promise<void>;
|
|
224
|
+
hold(hold: boolean, lastActiveMediaSettings?: MediaSettings): Promise<void>;
|
|
225
|
+
private _holdLocally;
|
|
226
|
+
private _resumeLocalMedia;
|
|
227
|
+
private _restoreStateAfterHold;
|
|
228
|
+
private _isWaitingForPromotion;
|
|
229
|
+
private _getWaitingForPromotionStatus;
|
|
203
230
|
putHandsDown(): Promise<void>;
|
|
204
231
|
requestKeyFrame(participantStreamDescription: ParticipantStreamDescription): Promise<void | SignalingMessage>;
|
|
205
232
|
requestTestMode(consumerCommand: string, producerCommand: string): Promise<void>;
|
|
206
233
|
updateDisplayLayout(layouts: ParticipantLayout[]): Promise<void>;
|
|
234
|
+
requestDisplayLayout(requests: DisplayLayoutRequest[]): Promise<void>;
|
|
207
235
|
feedback(key: string): Promise<SignalingMessage>;
|
|
208
|
-
userFeedbackStats(userResponse: number, reason?: string, groupCallUsersCount?: number): void;
|
|
209
|
-
sendClientEvent(eventType: string, eventData?: Record<string, string | number | boolean>, immediately?: boolean): void;
|
|
210
236
|
private _changeMediaSettings;
|
|
211
237
|
private _stopStreaming;
|
|
212
238
|
/**
|
|
@@ -279,7 +305,6 @@ export default class Conversation extends EventEmitter {
|
|
|
279
305
|
startStream(isRecord?: boolean, name?: string | null, movieId?: string | null, privacy?: 'PUBLIC' | 'FRIENDS' | 'DIRECT_LINK', groupId?: string | null, roomId?: number | null): Promise<undefined>;
|
|
280
306
|
stopStream(roomId?: number | null, remove?: boolean): Promise<undefined>;
|
|
281
307
|
publishStream(roomId?: number | null): Promise<undefined>;
|
|
282
|
-
recordSetConf(king?: ParticipantId, pawns?: ParticipantId[], hideParticipantCount?: boolean, roomId?: number | null): Promise<void>;
|
|
283
308
|
getStreamInfo(): Promise<{
|
|
284
309
|
movieId: any;
|
|
285
310
|
preview: any;
|
|
@@ -303,11 +328,17 @@ export default class Conversation extends EventEmitter {
|
|
|
303
328
|
private _changeMultipleParticipantState;
|
|
304
329
|
private _invokeRolesChangedCallbackIfNeeded;
|
|
305
330
|
private _onSignalingNotification;
|
|
331
|
+
private _onSignalingTopologyChanged;
|
|
306
332
|
private _onPromotionApproved;
|
|
307
333
|
private _onSignalingReconnect;
|
|
308
334
|
private _onSignalingFailed;
|
|
309
335
|
private _onAcceptedCall;
|
|
310
336
|
private _onHungup;
|
|
337
|
+
private _onSessionState;
|
|
338
|
+
private _reconcileParticipantSessionStates;
|
|
339
|
+
private _updateParticipantExternalId;
|
|
340
|
+
private _updateParticipantSessionState;
|
|
341
|
+
private _emitParticipantEffectiveStatusIfSessionOverridesTransport;
|
|
311
342
|
private _onAddedParticipant;
|
|
312
343
|
private _onJoinedParticipant;
|
|
313
344
|
private _onClosedConversation;
|
|
@@ -344,6 +375,7 @@ export default class Conversation extends EventEmitter {
|
|
|
344
375
|
private _onPinParticipant;
|
|
345
376
|
private _onOptionsChanged;
|
|
346
377
|
private _onNetworkStatus;
|
|
378
|
+
private _emitHeldParticipantsStatus;
|
|
347
379
|
private _onRemoteStreamSecond;
|
|
348
380
|
/**
|
|
349
381
|
* Коллбек, вызывающийся при получении/остановке стрима от AnimojiReceiver
|
|
@@ -364,6 +396,7 @@ export default class Conversation extends EventEmitter {
|
|
|
364
396
|
private _onSpeakerChanged;
|
|
365
397
|
private _onTransportStateChanged;
|
|
366
398
|
private _onTransportLocalStateChanged;
|
|
399
|
+
private _areTransportParticipantsOnHold;
|
|
367
400
|
private _onRemoteTrackAdded;
|
|
368
401
|
private _onRemoteTrackRemoved;
|
|
369
402
|
private _removeAudioTrack;
|
|
@@ -393,6 +426,7 @@ export default class Conversation extends EventEmitter {
|
|
|
393
426
|
private _onFeedback;
|
|
394
427
|
private _onDecorativeParticipantIdChanged;
|
|
395
428
|
private _onVideoSuspendSuggest;
|
|
429
|
+
private _onParticipantHold;
|
|
396
430
|
private _isMe;
|
|
397
431
|
private _getMuteStatesForRoomId;
|
|
398
432
|
private _getMuteStatesForCurrentRoom;
|
|
@@ -402,6 +436,8 @@ export default class Conversation extends EventEmitter {
|
|
|
402
436
|
private _getParticipants;
|
|
403
437
|
private _getParticipant;
|
|
404
438
|
}
|
|
439
|
+
declare function _resetPendingInstance(): void;
|
|
440
|
+
export { _resetPendingInstance };
|
|
405
441
|
export declare class UpdateDisplayLayoutError extends Error {
|
|
406
442
|
readonly participantErrors: {
|
|
407
443
|
externalId: ExternalParticipantId;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import ConversationResponse from '../types/ConversationResponse';
|
|
2
|
+
export type ConversationResponseSource = 'startConversation' | 'joinConversation' | 'joinConversationByLink' | 'fastStart' | 'fastJoin';
|
|
3
|
+
export declare function assertValidConversationResponse(response: ConversationResponse | null | undefined, source: ConversationResponseSource): void;
|
package/classes/DebugInfo.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { type DebugLogger } from '../static/Debug';
|
|
1
2
|
import { Participant, ParticipantId } from '../types/Participant';
|
|
2
3
|
import { StatResult } from '../types/Statistics';
|
|
3
4
|
import EventEmitter from './EventEmitter';
|
|
4
5
|
export default class DebugInfo extends EventEmitter {
|
|
5
6
|
private _lastMemoryStat;
|
|
7
|
+
private readonly _debug;
|
|
8
|
+
constructor(debug?: DebugLogger);
|
|
6
9
|
onRemoteDataStats(stats: StatResult, participants: Record<ParticipantId, Participant>): void;
|
|
7
10
|
_calcMemory(): void;
|
|
8
11
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import BaseApi from '../abstract/BaseApi';
|
|
2
|
+
import type { DebugLogger } from '../static/Debug';
|
|
3
|
+
import { DisplayLayoutRequest, ParticipantLayout } from '../types/ParticipantLayout';
|
|
4
|
+
import { Participant, ParticipantId } from '../types/Participant';
|
|
5
|
+
type DisplayLayoutRequesterParams = {
|
|
6
|
+
api: BaseApi;
|
|
7
|
+
debug: DebugLogger;
|
|
8
|
+
getParticipants: () => Promise<Record<ParticipantId, Participant>>;
|
|
9
|
+
isMe: (participantId: ParticipantId) => boolean;
|
|
10
|
+
updateDisplayLayout: (layouts: ParticipantLayout[]) => Promise<void>;
|
|
11
|
+
};
|
|
12
|
+
export default class DisplayLayoutRequester {
|
|
13
|
+
private readonly _api;
|
|
14
|
+
private readonly _debug;
|
|
15
|
+
private readonly _getParticipants;
|
|
16
|
+
private readonly _isMe;
|
|
17
|
+
private readonly _updateDisplayLayout;
|
|
18
|
+
private _requestedLayouts;
|
|
19
|
+
private _uncertainLayouts;
|
|
20
|
+
private _pendingRequests;
|
|
21
|
+
private _pendingPromises;
|
|
22
|
+
private _lastRequests;
|
|
23
|
+
private _timer;
|
|
24
|
+
private _inFlight;
|
|
25
|
+
private _lastFlushAt;
|
|
26
|
+
private _generation;
|
|
27
|
+
private _forceNextFlush;
|
|
28
|
+
constructor({ api, debug, getParticipants, isMe, updateDisplayLayout }: DisplayLayoutRequesterParams);
|
|
29
|
+
request(requests: DisplayLayoutRequest[]): Promise<void>;
|
|
30
|
+
resend(): void;
|
|
31
|
+
cleanupParticipant(participantId: ParticipantId): void;
|
|
32
|
+
clear(): void;
|
|
33
|
+
private _schedule;
|
|
34
|
+
private _flush;
|
|
35
|
+
private _getRequestLayouts;
|
|
36
|
+
private _getDiff;
|
|
37
|
+
private _isChanged;
|
|
38
|
+
}
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ExternalId, ExternalParticipantId } from '../types/ExternalId';
|
|
2
|
+
import { CompositeUserId, OkUserId, ParticipantId } from '../types/Participant';
|
|
3
|
+
export declare class ExternalIdCache {
|
|
4
|
+
private _okIdToExternalId;
|
|
5
|
+
private _externalIdToOkId;
|
|
6
|
+
private _decorativeIdToInitialId;
|
|
7
|
+
private _initialIdToDecorativeId;
|
|
8
|
+
getOkId(externalId: ExternalId): OkUserId | null;
|
|
9
|
+
getExternalId(okId: OkUserId): ExternalParticipantId | null;
|
|
10
|
+
hasByExternalId(externalId: ExternalId): boolean;
|
|
11
|
+
hasByOkId(okId: OkUserId): boolean;
|
|
12
|
+
cache(participantId: OkUserId | CompositeUserId | ParticipantId, externalId: ExternalParticipantId): void;
|
|
13
|
+
mapDecorativeId(decorativeId: OkUserId | CompositeUserId | ParticipantId, initialId: OkUserId | CompositeUserId | ParticipantId): void;
|
|
14
|
+
unmapDecorativeId(initialId: OkUserId | CompositeUserId | ParticipantId): void;
|
|
15
|
+
getDecorativeIdByInitialId(initialId: OkUserId | CompositeUserId | ParticipantId): OkUserId | undefined;
|
|
16
|
+
replaceByInitialIdIdIfExists(id: OkUserId | CompositeUserId | ParticipantId): OkUserId;
|
|
17
|
+
getParticipantIdByExternalId(externalId: ExternalId): ParticipantId | null;
|
|
18
|
+
clear(): void;
|
|
19
|
+
}
|
package/classes/MediaSource.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { IEffect } from '@vkontakte/calls-video-effects';
|
|
2
2
|
import EventEmitter from '../classes/EventEmitter';
|
|
3
3
|
import MediaOption from '../enums/MediaOption';
|
|
4
|
+
import { type DebugLogger } from '../static/Debug';
|
|
4
5
|
import MediaSettings, { IVideoDimentions } from '../types/MediaSettings';
|
|
5
6
|
import { ScreenCaptureSettings } from '../types/ScreenCaptureSettings';
|
|
7
|
+
import StatsLogger from './StatsLogger';
|
|
6
8
|
export declare const enum MediaSourceEvent {
|
|
7
9
|
SOURCE_CHANGED = "SOURCE_CHANGED",
|
|
8
10
|
SOURCE_READY = "SOURCE_READY",
|
|
@@ -45,6 +47,7 @@ export declare class MediaSource extends EventEmitter {
|
|
|
45
47
|
/** Трек аудио эффектов. Не изменяется на протяжении всего времени */
|
|
46
48
|
private _audioEffectsTrack;
|
|
47
49
|
private _mediaSettings;
|
|
50
|
+
private _lastMediaSettings;
|
|
48
51
|
private _videoStatusOnScreenCapturingEnabled;
|
|
49
52
|
private _effect;
|
|
50
53
|
private _audioEffectParams;
|
|
@@ -53,7 +56,9 @@ export declare class MediaSource extends EventEmitter {
|
|
|
53
56
|
private _animojiEnabled;
|
|
54
57
|
/** вычисляем низкую производительность видео эффектов */
|
|
55
58
|
private readonly _videoEffectsFpsLimiter?;
|
|
56
|
-
|
|
59
|
+
private readonly _debug;
|
|
60
|
+
private readonly _logger;
|
|
61
|
+
constructor(debug?: DebugLogger, logger?: StatsLogger | null);
|
|
57
62
|
get cameraVideoTrack(): MediaStreamTrack | null;
|
|
58
63
|
set cameraVideoTrack(track: MediaStreamTrack | null);
|
|
59
64
|
request(mediaOptions?: MediaOption[], needEmptyTracks?: boolean): Promise<void>;
|
|
@@ -63,7 +68,11 @@ export declare class MediaSource extends EventEmitter {
|
|
|
63
68
|
getSendAudioTrack(): MediaStreamTrack | null;
|
|
64
69
|
get isAnimojiRequested(): boolean;
|
|
65
70
|
addTrackToPeerConnection(pc: RTCPeerConnection, observer: boolean, noDataChannel: boolean): void;
|
|
71
|
+
/**
|
|
72
|
+
* @deprecated Используйте гетер mediaSettings
|
|
73
|
+
*/
|
|
66
74
|
getMediaSettings(): MediaSettings;
|
|
75
|
+
get mediaSettings(): MediaSettings;
|
|
67
76
|
changeDevice(kind: MediaDeviceKind): Promise<void>;
|
|
68
77
|
/**
|
|
69
78
|
* Установка кастомного стрима для видео, например внешний шаринг экрана
|
|
@@ -91,6 +100,8 @@ export declare class MediaSource extends EventEmitter {
|
|
|
91
100
|
private _setEffect;
|
|
92
101
|
private _stopEffect;
|
|
93
102
|
destroy(): void;
|
|
103
|
+
stopLocalMedia(): Promise<void>;
|
|
104
|
+
resumeLocalMedia(lastActiveMediaSettings?: MediaSettings): Promise<void>;
|
|
94
105
|
toggleScreenCapturing(settings: ScreenCaptureSettings): Promise<void>;
|
|
95
106
|
disableScreenCapturing(): Promise<void>;
|
|
96
107
|
private videoTrackMuteHandler;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { type DebugLogger } from '../static/Debug';
|
|
1
2
|
import { ParticipantStreamDescription } from '../types/ParticipantStreamDescription';
|
|
2
3
|
import SignalingMessage from '../types/SignalingMessage';
|
|
3
4
|
export declare class ParticipantIdRegistry {
|
|
4
5
|
private streamDescriptionByCompactId;
|
|
5
6
|
private compactIdByStreamDescription;
|
|
7
|
+
private readonly _debug;
|
|
8
|
+
constructor(debug?: DebugLogger);
|
|
6
9
|
getStreamDescription(compactedId: number): ParticipantStreamDescription | undefined;
|
|
7
10
|
getCompactId(streamDescription: string): number | undefined;
|
|
8
11
|
handleMessage(data: ArrayBuffer): SignalingMessage | null;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type DebugLogger } from '../static/Debug';
|
|
1
2
|
import { NetworkStatReport } from '../types/NetworkStatReport';
|
|
2
3
|
import ParticipantLayout, { RequestKeyFrame, StopStream } from '../types/ParticipantLayout';
|
|
3
4
|
import { RequestAsr } from '../types/RequestAsr';
|
|
@@ -10,6 +11,8 @@ import { SharingStatReport } from './screenshare/SharingStatReport';
|
|
|
10
11
|
import { ParticipantIdRegistry } from './ParticipantIdRegistry';
|
|
11
12
|
export declare class ProducerCommandSerializationService {
|
|
12
13
|
private participantIdRegistry;
|
|
14
|
+
private readonly _debug;
|
|
15
|
+
constructor(debug?: DebugLogger);
|
|
13
16
|
setParticipantIdRegistry(participantIdRegistry: ParticipantIdRegistry): void;
|
|
14
17
|
serializeUpdateDisplayLayout(sequenceNumber: number, layouts: {
|
|
15
18
|
[key: string]: ParticipantLayout | StopStream | RequestKeyFrame;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { type DebugLogger } from '../static/Debug';
|
|
1
2
|
import SignalingMessage from '../types/SignalingMessage';
|
|
2
3
|
export declare class SignalingActor {
|
|
3
4
|
private processor;
|
|
4
5
|
private queue;
|
|
5
6
|
private isProcessing;
|
|
6
|
-
|
|
7
|
+
private readonly _debug;
|
|
8
|
+
constructor(processor: (message: SignalingMessage) => Promise<unknown> | unknown, debug?: DebugLogger);
|
|
7
9
|
add(message: SignalingMessage): void;
|
|
8
10
|
private processQueue;
|
|
9
11
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ParticipantId } from '../types/Participant';
|
|
2
2
|
import EventEmitter from './EventEmitter';
|
|
3
|
-
import
|
|
3
|
+
import TransportTopology from '../enums/TransportTopology';
|
|
4
|
+
import { Transport } from './transport/Transport';
|
|
4
5
|
import { VolumeLevel } from './VolumeDetector';
|
|
5
6
|
import { VolumesDetector } from './VolumesDetector';
|
|
6
7
|
export declare const enum SpeakerDetectorEvent {
|
|
@@ -1,19 +1,28 @@
|
|
|
1
|
+
import { type DebugLogger } from '../static/Debug';
|
|
1
2
|
import MediaSettings from '../types/MediaSettings';
|
|
2
3
|
import { Participant, ParticipantId } from '../types/Participant';
|
|
3
4
|
import EventEmitter from './EventEmitter';
|
|
5
|
+
import StatsLogger from './StatsLogger';
|
|
4
6
|
import { Transport } from './transport/Transport';
|
|
5
7
|
import { VolumesDetector } from './VolumesDetector';
|
|
6
8
|
export default class SpecListener extends EventEmitter {
|
|
7
9
|
private _transport;
|
|
8
10
|
private _volumes;
|
|
9
11
|
private readonly _participants;
|
|
12
|
+
private readonly _debug;
|
|
13
|
+
private readonly _logger;
|
|
10
14
|
private _connectionTimeout;
|
|
15
|
+
private _connectionTimeoutSuppressed;
|
|
11
16
|
private _volumeTimeout;
|
|
12
|
-
constructor(transport: Transport, volumesDetector: VolumesDetector, participants: Record<ParticipantId, Participant
|
|
17
|
+
constructor(transport: Transport, volumesDetector: VolumesDetector, participants: Record<ParticipantId, Participant>, debug?: DebugLogger, logger?: StatsLogger | null);
|
|
13
18
|
destroy(): void;
|
|
14
19
|
onChangeRemoteMediaSettings(participantId: ParticipantId, mediaSettings: MediaSettings): void;
|
|
20
|
+
onParticipantHoldChanged(): void;
|
|
21
|
+
private _getConnectionTimeout;
|
|
22
|
+
private _getVolumeTimeout;
|
|
15
23
|
private _onTransportStateChanged;
|
|
16
24
|
private _onVolumesDetected;
|
|
17
25
|
private _onConnectionTimeout;
|
|
26
|
+
private _reportConnectionTimeout;
|
|
18
27
|
private _onVolumeTimeout;
|
|
19
28
|
}
|
|
@@ -4,33 +4,23 @@ import StatLog from '../enums/StatLog';
|
|
|
4
4
|
/**
|
|
5
5
|
* Класс отвечает за отправку различной информации в сервис статистики (события, статистика и подобное)
|
|
6
6
|
*/
|
|
7
|
-
export default class
|
|
8
|
-
private static _instance;
|
|
9
|
-
private static _conversationIdProvider;
|
|
10
|
-
static setConversationIdProvider(provider: () => string | null): void;
|
|
11
|
-
static create(api: BaseApi, externalLogger: BaseLogger | null): void;
|
|
12
|
-
static log(name: StatLog, value?: string, immediately?: boolean): void;
|
|
13
|
-
static logClientStats(params: Record<string, string | number | boolean | undefined | null>, immediately?: boolean): void;
|
|
14
|
-
static logClientEvent(params: Record<string, string | number | boolean | undefined | null>, immediately?: boolean): void;
|
|
15
|
-
static destroy(): void;
|
|
7
|
+
export default class StatsLogger extends BaseLogger {
|
|
16
8
|
private readonly _externalLogger;
|
|
17
9
|
private readonly _api;
|
|
10
|
+
private readonly _conversationIdProvider;
|
|
18
11
|
private readonly _batchInterval;
|
|
19
12
|
private _batchedClientStats;
|
|
20
|
-
private _batchedClientEvents;
|
|
21
13
|
private _batchTimeout;
|
|
22
14
|
private _serverTimeDelta;
|
|
23
|
-
constructor(api: BaseApi, externalLogger: BaseLogger | null);
|
|
15
|
+
constructor(api: BaseApi, externalLogger: BaseLogger | null, conversationIdProvider: () => string | null);
|
|
24
16
|
log(name: StatLog, value?: string, immediately?: boolean): void;
|
|
25
17
|
logClientStats(data: Record<string, string | number | boolean | undefined | null>, immediately?: boolean): void;
|
|
26
|
-
logClientEvent(data: Record<string, string | number | boolean | undefined | null>, immediately?: boolean): void;
|
|
27
18
|
destroy(): void;
|
|
28
19
|
private _getConversationId;
|
|
29
20
|
private _sendBatch;
|
|
30
21
|
private _startTimeout;
|
|
31
22
|
private _stopTimeout;
|
|
32
23
|
private _sendClientStats;
|
|
33
|
-
private _sendClientEvents;
|
|
34
24
|
private _calculateServerTimeDelta;
|
|
35
25
|
private _now;
|
|
36
26
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { VideoEffects } from '@vkontakte/calls-video-effects';
|
|
2
|
+
import { type DebugLogger } from '../static/Debug';
|
|
2
3
|
import EventEmitter from './EventEmitter';
|
|
3
4
|
export declare enum VideoEffectsFpsLimiterEvent {
|
|
4
5
|
FpsLimit = "fps-limit"
|
|
@@ -10,6 +11,8 @@ export declare class VideoEffectsFpsLimiter extends EventEmitter {
|
|
|
10
11
|
private _fpsMeterUnsubscribe;
|
|
11
12
|
private readonly _fpsHistory;
|
|
12
13
|
private _fpsLimitCursor;
|
|
14
|
+
private readonly _debug;
|
|
15
|
+
constructor(debug?: DebugLogger);
|
|
13
16
|
get fpsLimit(): number;
|
|
14
17
|
watch(videoEffect: VideoEffects | null): void;
|
|
15
18
|
private _handleFpsMeter;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type DebugLogger } from '../../static/Debug';
|
|
1
2
|
import { AsrTranscription } from '../../types/Asr';
|
|
2
3
|
import { ParticipantIdRegistry } from '../ParticipantIdRegistry';
|
|
3
4
|
export declare class AsrReceiver {
|
|
@@ -5,7 +6,8 @@ export declare class AsrReceiver {
|
|
|
5
6
|
private readonly _participantIdRegistry;
|
|
6
7
|
private readonly _asrCallback;
|
|
7
8
|
private readonly _textDecoder;
|
|
8
|
-
|
|
9
|
+
private readonly _debug;
|
|
10
|
+
constructor(datachannel: RTCDataChannel, participantIdRegistry: ParticipantIdRegistry, callback: (asr: AsrTranscription) => void, debug?: DebugLogger);
|
|
9
11
|
private static parse;
|
|
10
12
|
private _onDataChannelMessage;
|
|
11
13
|
destroy(): void;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { type DebugLogger } from '../../static/Debug';
|
|
2
|
+
import StatsLogger from '../StatsLogger';
|
|
1
3
|
import IDecoder from './IDecoder';
|
|
2
4
|
import WorkerBase from './WorkerBase';
|
|
3
5
|
export default class LibVPxDecoder extends WorkerBase implements IDecoder {
|
|
6
|
+
constructor(debug?: DebugLogger, logger?: StatsLogger | null);
|
|
4
7
|
init(onFrameImage: (image: ImageData) => void, onFrameError: (error: unknown) => void, onKeyFrameRequested: () => void): Promise<void>;
|
|
5
8
|
decodeFrame(timestamp: number, data: Uint8Array, isVP9: boolean, keyFrame?: boolean): void;
|
|
6
9
|
destroy(): void;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type DebugLogger } from '../../static/Debug';
|
|
2
|
+
import StatsLogger from '../StatsLogger';
|
|
1
3
|
import IEncoder from './IEncoder';
|
|
2
4
|
import { OnFrameCallback } from './Types';
|
|
3
5
|
import WorkerBase from './WorkerBase';
|
|
@@ -13,7 +15,7 @@ export default class LibVPxEncoder extends WorkerBase implements IEncoder {
|
|
|
13
15
|
private _canvasCtx;
|
|
14
16
|
private _frameReadTimeout;
|
|
15
17
|
private _lastFrame;
|
|
16
|
-
constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number);
|
|
18
|
+
constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number, debug?: DebugLogger, logger?: StatsLogger | null);
|
|
17
19
|
private _createDom;
|
|
18
20
|
private _removeDom;
|
|
19
21
|
private _createStream;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { type DebugLogger } from '../../static/Debug';
|
|
2
|
+
import StatsLogger from '../StatsLogger';
|
|
1
3
|
import IDecoder from './IDecoder';
|
|
2
4
|
import WorkerBase from './WorkerBase';
|
|
3
5
|
export default class WebCodecsDecoder extends WorkerBase implements IDecoder {
|
|
6
|
+
constructor(debug?: DebugLogger, logger?: StatsLogger | null);
|
|
4
7
|
init(onFrameImage: (frame: VideoFrame) => void, onFrameError: (error: unknown) => void, onKeyFrameRequested: () => void): Promise<void>;
|
|
5
8
|
decodeFrame(timestamp: number, data: Uint8Array, isVP9: boolean, keyFrame?: boolean): void;
|
|
6
9
|
destroy(): void;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type DebugLogger } from '../../static/Debug';
|
|
2
|
+
import StatsLogger from '../StatsLogger';
|
|
1
3
|
import IEncoder from './IEncoder';
|
|
2
4
|
import { OnFrameCallback } from './Types';
|
|
3
5
|
import WorkerBase from './WorkerBase';
|
|
@@ -9,7 +11,7 @@ export default class WebCodecsEncoder extends WorkerBase implements IEncoder {
|
|
|
9
11
|
private readonly _maxBitrate;
|
|
10
12
|
private readonly _useCbr;
|
|
11
13
|
private readonly _frameRate;
|
|
12
|
-
constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number, useCbr: boolean, frameRate: number);
|
|
14
|
+
constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number, useCbr: boolean, frameRate: number, debug?: DebugLogger, logger?: StatsLogger | null);
|
|
13
15
|
init(): Promise<void>;
|
|
14
16
|
requestFrame(keyFrame?: boolean): void;
|
|
15
17
|
setBitrate(bitrate: number, useCbr: boolean, fps: number): void;
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
import { type DebugLogger } from '../../static/Debug';
|
|
2
|
+
import StatsLogger from '../StatsLogger';
|
|
1
3
|
export default abstract class WorkerBase {
|
|
2
4
|
protected _worker: Worker | null;
|
|
5
|
+
protected readonly _debug: DebugLogger;
|
|
6
|
+
protected readonly _logger: StatsLogger | null;
|
|
7
|
+
protected constructor(debug?: DebugLogger, logger?: StatsLogger | null);
|
|
3
8
|
protected _createWorker(workerFunctionData: string, onFrame: (data: any) => void, workerArgs?: any[], initArgs?: {
|
|
4
9
|
[key: string]: any;
|
|
5
10
|
}, transfer?: any[]): Promise<void>;
|
|
@@ -7,5 +12,7 @@ export default abstract class WorkerBase {
|
|
|
7
12
|
protected _sendToWorker(type: string, data?: {
|
|
8
13
|
[key: string]: any;
|
|
9
14
|
}, transfer?: any[]): void;
|
|
15
|
+
private _formatWorkerError;
|
|
16
|
+
private _formatWorkerMessageError;
|
|
10
17
|
static isBrowserSupported(): boolean;
|
|
11
18
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { type DebugLogger } from '../../static/Debug';
|
|
1
2
|
import { ParticipantId } from '../../types/Participant';
|
|
2
3
|
import { IScreenShareStat } from '../../types/ScreenSharingStat';
|
|
3
4
|
import { StatScreenShareFirstFrame } from '../stat/StatScreenShareFirstFrame';
|
|
5
|
+
import { StatAggregator } from '../stat/StatAggregator';
|
|
4
6
|
import { FrameChunk } from './Utils';
|
|
5
7
|
export type IOnStat = (stat: IScreenShareStat) => void;
|
|
6
8
|
export type IOnStream = (stream: MediaStream) => void;
|
|
@@ -10,8 +12,9 @@ export declare abstract class BaseStreamBuilder {
|
|
|
10
12
|
protected readonly _onStat: IOnStat;
|
|
11
13
|
protected readonly _onKeyFrameRequested?: VoidFunction;
|
|
12
14
|
protected readonly _statScreenShareFirstFrame: StatScreenShareFirstFrame;
|
|
15
|
+
protected readonly _debug: DebugLogger;
|
|
13
16
|
protected _chunks: FrameChunk[];
|
|
14
|
-
protected constructor(participantId: ParticipantId, onStream: IOnStream, onStat: IOnStat, onKeyFrameRequested?: VoidFunction);
|
|
17
|
+
protected constructor(participantId: ParticipantId, onStream: IOnStream, onStat: IOnStat, statAggregator: StatAggregator | null, onKeyFrameRequested?: VoidFunction, debug?: DebugLogger);
|
|
15
18
|
appendChunk(chunk: FrameChunk): void;
|
|
16
19
|
destroy(): void;
|
|
17
20
|
protected abstract _processFrame(frame: FrameData): void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type DebugLogger } from '../../static/Debug';
|
|
1
2
|
import BaseRenderer from './BaseRenderer';
|
|
2
3
|
export default class CanvasRenderer extends BaseRenderer {
|
|
3
4
|
private readonly _useImageBitmap;
|
|
@@ -5,7 +6,8 @@ export default class CanvasRenderer extends BaseRenderer {
|
|
|
5
6
|
private _canvasContext;
|
|
6
7
|
private _stream;
|
|
7
8
|
private _track;
|
|
8
|
-
|
|
9
|
+
private readonly _debug;
|
|
10
|
+
constructor(onStream: (stream: MediaStream) => void, debug?: DebugLogger);
|
|
9
11
|
private _createStream;
|
|
10
12
|
private _removeStream;
|
|
11
13
|
private _requestCanvasFrame;
|