@vkontakte/calls-sdk 2.8.4-dev.a76dcb2.0 → 2.8.4-dev.b2a2d69.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 +12 -8
- package/abstract/BaseApi.d.ts +12 -4
- package/abstract/BaseSignaling.d.ts +5 -0
- package/calls-sdk.cjs.js +8 -8
- package/calls-sdk.esm.js +8 -8
- package/classes/Conversation.d.ts +15 -2
- package/classes/Logger.d.ts +6 -3
- package/classes/ProducerCommandSerializationService.d.ts +4 -0
- package/classes/screenshare/ScreenCaptureSender.d.ts +3 -0
- package/classes/stat/WeightedAverage.d.ts +10 -0
- package/classes/transport/BaseTransport.d.ts +0 -1
- package/classes/transport/DirectStatReporter.d.ts +43 -0
- package/classes/transport/DirectTransport.d.ts +2 -4
- package/classes/transport/PerfStatReporter.d.ts +3 -1
- package/classes/transport/Transport.d.ts +1 -0
- package/default/Api.d.ts +2 -1
- package/default/Signaling.d.ts +9 -4
- package/enums/SignalingCommandType.d.ts +5 -1
- package/enums/SignalingNotification.d.ts +1 -0
- package/package.json +3 -3
- package/static/External.d.ts +30 -10
- package/static/Params.d.ts +57 -14
- package/static/WebRTCUtils.d.ts +5 -1
- package/types/AudienceMode.d.ts +1 -0
- package/types/Conversation.d.ts +8 -6
- package/types/EnableVideoSuspend.d.ts +3 -0
- package/types/MediaSettings.d.ts +0 -9
- package/types/MuteStates.d.ts +12 -0
- package/types/NetworkStatReport.d.ts +4 -0
- package/types/ParticipantStreamDescription.d.ts +2 -1
- package/types/PerfStatReporter.d.ts +6 -0
- package/types/Room.d.ts +5 -1
- package/types/SignalingCommand.d.ts +4 -4
- package/types/SignalingMessage.d.ts +34 -12
- package/types/Statistics.d.ts +9 -0
- package/types/Streams.d.ts +1 -0
- package/types/Vmoji.d.ts +5 -0
|
@@ -217,7 +217,10 @@ export default class Conversation extends EventEmitter {
|
|
|
217
217
|
private _processSharedMovieInfo;
|
|
218
218
|
private _processConnectionSharedMovieInfo;
|
|
219
219
|
private _processConnectionAsrInfo;
|
|
220
|
+
private _processConversationUrlSharingInfo;
|
|
221
|
+
private _extractConnectionUrlSharingInfo;
|
|
220
222
|
private _onSharedMovieInfoStopped;
|
|
223
|
+
private _onUrlSharingInfoUpdated;
|
|
221
224
|
private _onFeaturesPerRoleChanged;
|
|
222
225
|
private _waitForStreamIfNeeded;
|
|
223
226
|
private _matchStreamDescription;
|
|
@@ -232,6 +235,7 @@ export default class Conversation extends EventEmitter {
|
|
|
232
235
|
enableFeatureForRoles(feature: ConversationFeature, roles: UserRole[]): Promise<void>;
|
|
233
236
|
pinParticipant(participantId: ParticipantId, unpin: boolean, roomId?: number | null): Promise<void>;
|
|
234
237
|
updateMediaModifiers(mediaModifiers: MediaModifiers): Promise<void>;
|
|
238
|
+
enableVideoSuspend(enabled: boolean): Promise<void>;
|
|
235
239
|
changeOptions(changes: {
|
|
236
240
|
[key in ConversationOption]?: boolean;
|
|
237
241
|
}): Promise<void>;
|
|
@@ -240,7 +244,7 @@ export default class Conversation extends EventEmitter {
|
|
|
240
244
|
* @hidden
|
|
241
245
|
*/
|
|
242
246
|
getWaitingHall(pageMarker: string | null, count?: number, backward?: boolean): Promise<WaitingHallResponse>;
|
|
243
|
-
private
|
|
247
|
+
private _resolveWaitingHallExternalIds;
|
|
244
248
|
getAudienceModeHands(): Promise<AudienceModeHandsResponse>;
|
|
245
249
|
promoteParticipant(participantId: CompositeUserId, demote?: boolean): Promise<void>;
|
|
246
250
|
requestPromotion(unrequest?: boolean): Promise<void>;
|
|
@@ -256,11 +260,13 @@ export default class Conversation extends EventEmitter {
|
|
|
256
260
|
}>;
|
|
257
261
|
updateMovie(params: IUpdateMovieData): Promise<void>;
|
|
258
262
|
removeMovie(movieId: number): Promise<void>;
|
|
263
|
+
startUrlSharing(sharedUrl: string): Promise<void>;
|
|
264
|
+
stopUrlSharing(): Promise<void>;
|
|
259
265
|
updateRooms(rooms: SignalingMessage.Room[], assignRandomly?: boolean): Promise<void>;
|
|
260
266
|
activateRooms(roomIds: number[], deactivate: boolean): Promise<void>;
|
|
261
267
|
switchRoom(toRoomId: number | null, participantId?: ParticipantId): Promise<void>;
|
|
262
268
|
removeRooms(roomIds: number[]): Promise<void>;
|
|
263
|
-
startStream(isRecord?: boolean, name?: string | null, movieId?: string | null, privacy?: 'PUBLIC' | 'FRIENDS' | 'DIRECT_LINK', groupId?: string | null, roomId?: number | null): Promise<undefined>;
|
|
269
|
+
startStream(isRecord?: boolean, name?: string | null, movieId?: string | null, privacy?: 'PUBLIC' | 'FRIENDS' | 'DIRECT_LINK', groupId?: string | null, roomId?: number | null, externalAccessKey?: string | null): Promise<undefined>;
|
|
264
270
|
stopStream(roomId?: number | null): Promise<undefined>;
|
|
265
271
|
publishStream(roomId?: number | null): Promise<undefined>;
|
|
266
272
|
recordSetConf(king?: ParticipantId, pawns?: ParticipantId[], hideParticipantCount?: boolean, roomId?: number | null): Promise<void>;
|
|
@@ -306,6 +312,7 @@ export default class Conversation extends EventEmitter {
|
|
|
306
312
|
private _changePinnedParticipantForRoom;
|
|
307
313
|
_changeRecordInfoForRoom(): Promise<void>;
|
|
308
314
|
private _changeAsrInfoForRoom;
|
|
315
|
+
private _changeUrlSharingInfoForRoom;
|
|
309
316
|
private _onParticipantAnimojiChanged;
|
|
310
317
|
private _onAsrStart;
|
|
311
318
|
private _onAsrStop;
|
|
@@ -327,6 +334,12 @@ export default class Conversation extends EventEmitter {
|
|
|
327
334
|
* @param stream - стрим анимированного аватара, null в случае остановки стрима
|
|
328
335
|
*/
|
|
329
336
|
private _onAnimojiStream;
|
|
337
|
+
/**
|
|
338
|
+
* Коллбек, вызывающийся при получении ошибки от AnimojiReceiver
|
|
339
|
+
* @param error - ошибка рендеринга Vmoji
|
|
340
|
+
* @param stream - стрим анимированного аватара, null в случае остановки стрима
|
|
341
|
+
*/
|
|
342
|
+
private _onAnimojiError;
|
|
330
343
|
private _onPeerConnectionClosed;
|
|
331
344
|
private _changeFeatureSet;
|
|
332
345
|
private _changeNeedRate;
|
package/classes/Logger.d.ts
CHANGED
|
@@ -5,21 +5,24 @@ export default class Logger extends BaseLogger {
|
|
|
5
5
|
private readonly _externalLogger;
|
|
6
6
|
private readonly _api;
|
|
7
7
|
private _batchInterval;
|
|
8
|
-
private
|
|
8
|
+
private _batchedLogItems;
|
|
9
|
+
private _batchedClientStats;
|
|
9
10
|
private _batchTimeout;
|
|
10
11
|
private static _instance;
|
|
11
12
|
constructor(api: BaseApi, externalLogger: BaseLogger | null);
|
|
12
|
-
private
|
|
13
|
+
private _sendLogItems;
|
|
14
|
+
private _sendClientStats;
|
|
13
15
|
private _sendBatch;
|
|
14
16
|
private _startTimeout;
|
|
15
17
|
private _stopTimeout;
|
|
16
|
-
private _onUnload;
|
|
17
18
|
log(name: Stat, value?: string, immediately?: boolean): void;
|
|
18
19
|
logCustom(name: string, params: Record<string, string | number>, immediately?: boolean): void;
|
|
20
|
+
logClientStats(data: Record<string, string | number>, immediately?: boolean): void;
|
|
19
21
|
_logInternal(operation: string, custom: Record<string, string | number>, immediately: boolean): void;
|
|
20
22
|
destroy(): void;
|
|
21
23
|
static create(api: BaseApi, externalLogger: BaseLogger | null): void;
|
|
22
24
|
static log(name: Stat, value?: string, immediately?: boolean): void;
|
|
23
25
|
static logCustom(name: string, params: Record<string, string | number>, immediately?: boolean): void;
|
|
26
|
+
static logClientStats(params: Record<string, string | number>, immediately?: boolean): void;
|
|
24
27
|
static destroy(): void;
|
|
25
28
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { NetworkStatReport } from '../types/NetworkStatReport';
|
|
1
2
|
import ParticipantLayout, { RequestKeyFrame, StopStream } from '../types/ParticipantLayout';
|
|
2
3
|
import { RequestAsr } from '../types/RequestAsr';
|
|
4
|
+
import { EnableVideoSuspend } from '../types/EnableVideoSuspend';
|
|
3
5
|
import SignalingMessage from '../types/SignalingMessage';
|
|
4
6
|
import { PerfStatReport } from '../types/PerfStatReporter';
|
|
5
7
|
import { SharingStatReport } from './screenshare/SharingStatReport';
|
|
@@ -15,6 +17,8 @@ export declare class ProducerCommandSerializationService {
|
|
|
15
17
|
serializePerfStatReport(sequenceNumber: number, report: PerfStatReport): ArrayBuffer;
|
|
16
18
|
serializeSharingStatReport(sequenceNumber: number, report: SharingStatReport): ArrayBuffer;
|
|
17
19
|
serializeRequestAsr(sequenceNumber: number, params: RequestAsr): ArrayBuffer;
|
|
20
|
+
serializeNetworkStatReport(sequenceNumber: number, report: NetworkStatReport): ArrayBuffer;
|
|
21
|
+
serializeEnableVideoSuspend(sequenceNumber: number, params: EnableVideoSuspend): ArrayBuffer;
|
|
18
22
|
deserializeCommandResponse(data: BufferSource | Blob): Promise<SignalingMessage | undefined>;
|
|
19
23
|
private deserializeUpdateDisplayLayoutResponse;
|
|
20
24
|
private deserializeReportPerfStatResponse;
|
|
@@ -14,10 +14,13 @@ export default class ScreenCaptureSender {
|
|
|
14
14
|
private _feedback;
|
|
15
15
|
private _lastSentFrameSeq;
|
|
16
16
|
private _lastDeliveredFrameSeq;
|
|
17
|
+
private _lastFrameDelay;
|
|
18
|
+
private _lastFramerateReduced;
|
|
17
19
|
private _lastSharingStat;
|
|
18
20
|
private readonly _congestionControlEnabled;
|
|
19
21
|
private readonly _queue;
|
|
20
22
|
private readonly _fpsMeter;
|
|
23
|
+
private readonly _maxFrameDelay;
|
|
21
24
|
constructor(track: MediaStreamTrack, datachannel: RTCDataChannel, signaling: BaseSignaling, fastSharing: boolean);
|
|
22
25
|
private _handleQueue;
|
|
23
26
|
/**
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class WeightedAverage {
|
|
2
|
+
private readonly weightUp;
|
|
3
|
+
private readonly weightDown;
|
|
4
|
+
private value;
|
|
5
|
+
constructor(weightUp: number, weightDown?: number | null);
|
|
6
|
+
set(value: number): void;
|
|
7
|
+
update(value: number): number;
|
|
8
|
+
getNext(value: number): number;
|
|
9
|
+
getValue(): number;
|
|
10
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { BaseSignaling, StatResult } from '../../CallsSDK';
|
|
2
|
+
import EventEmitter from '../EventEmitter';
|
|
3
|
+
import { WeightedAverage } from '../stat/WeightedAverage';
|
|
4
|
+
interface NetworkStat {
|
|
5
|
+
rtt: WeightedAverage | number;
|
|
6
|
+
loss: WeightedAverage | number;
|
|
7
|
+
bitrate: number;
|
|
8
|
+
}
|
|
9
|
+
interface NetworkStatRemote extends NetworkStat {
|
|
10
|
+
rtt: number;
|
|
11
|
+
loss: number;
|
|
12
|
+
}
|
|
13
|
+
export interface NetworkLimits {
|
|
14
|
+
badNet: {
|
|
15
|
+
rtt: number;
|
|
16
|
+
loss: number;
|
|
17
|
+
};
|
|
18
|
+
goodNet: {
|
|
19
|
+
rtt: number;
|
|
20
|
+
loss: number;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export type SignalingNetworkStat = Partial<Omit<NetworkStatRemote, 'timestamp' | 'previousTimestamp'>>;
|
|
24
|
+
export default class DirectStatReporter extends EventEmitter {
|
|
25
|
+
private readonly _signaling;
|
|
26
|
+
private readonly _localNetworkStat;
|
|
27
|
+
private readonly _remoteNetworkStat;
|
|
28
|
+
private readonly _lastNetworkStat;
|
|
29
|
+
private readonly _networkLimits;
|
|
30
|
+
private _lastStatSentTimestamp;
|
|
31
|
+
private _currentState;
|
|
32
|
+
constructor(signaling: BaseSignaling);
|
|
33
|
+
private _calcRttRating;
|
|
34
|
+
private _calcLossRating;
|
|
35
|
+
private _calcBitrateRating;
|
|
36
|
+
private _calcUDPRating;
|
|
37
|
+
private _calcRating;
|
|
38
|
+
private _getNetworkState;
|
|
39
|
+
updateSettings(settings?: NetworkLimits): void;
|
|
40
|
+
reportLocal(stats: StatResult): void;
|
|
41
|
+
reportRemote(stat?: SignalingNetworkStat): void;
|
|
42
|
+
}
|
|
43
|
+
export {};
|
|
@@ -27,14 +27,12 @@ export default class DirectTransport extends BaseTransport {
|
|
|
27
27
|
private _neverConnected;
|
|
28
28
|
private _serverSettings;
|
|
29
29
|
private _prevConsumerSettings;
|
|
30
|
-
private _lastNetworkStat;
|
|
31
|
-
private _remoteNetworkStat;
|
|
32
|
-
private _networkLimits;
|
|
33
30
|
private _networkLimitsForVideo;
|
|
34
31
|
private _videoMaxDimensionsForNet;
|
|
35
32
|
private _lastVideoMaxDimension;
|
|
36
33
|
private _lastBadConnection;
|
|
37
34
|
private _perfStatReporter;
|
|
35
|
+
private _directStatReporter;
|
|
38
36
|
constructor(participantId: ParticipantId, isMaster: boolean, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings);
|
|
39
37
|
get participantId(): ParticipantId;
|
|
40
38
|
updateStatisticsInterval(): void;
|
|
@@ -68,7 +66,7 @@ export default class DirectTransport extends BaseTransport {
|
|
|
68
66
|
private _startStatInterval;
|
|
69
67
|
private _checkPPTNetwork;
|
|
70
68
|
private _stopStatInterval;
|
|
71
|
-
private
|
|
69
|
+
private _onNetworkStatus;
|
|
72
70
|
private _startSettingsInterval;
|
|
73
71
|
private _stopSettingsInterval;
|
|
74
72
|
private _calcFingerprint;
|
|
@@ -3,7 +3,8 @@ import EventEmitter from '../EventEmitter';
|
|
|
3
3
|
import DirectTransport from './DirectTransport';
|
|
4
4
|
import ServerTransport from './ServerTransport';
|
|
5
5
|
export default class PerfStatReporter extends EventEmitter {
|
|
6
|
-
private
|
|
6
|
+
private _previousPerfStatReportTimestamp;
|
|
7
|
+
private _previousNetworkStatReportTimestamp;
|
|
7
8
|
private _previousCallStatReportTimestamp;
|
|
8
9
|
private _previousCallStatReport;
|
|
9
10
|
private _screenShareStats;
|
|
@@ -14,6 +15,7 @@ export default class PerfStatReporter extends EventEmitter {
|
|
|
14
15
|
static getEstimatedPerformanceIndex(): number;
|
|
15
16
|
private _handleStats;
|
|
16
17
|
private reportPerfStats;
|
|
18
|
+
private reportNetworkStats;
|
|
17
19
|
private _reportCallStats;
|
|
18
20
|
private _handleScreenSharingStat;
|
|
19
21
|
}
|
|
@@ -20,6 +20,7 @@ export declare const enum TransportEvent {
|
|
|
20
20
|
PEER_CONNECTION_CLOSED = "PEER_CONNECTION_CLOSED",
|
|
21
21
|
ASR_TRANSCRIPTION = "ASR_TRANSCRIPTION",
|
|
22
22
|
ANIMOJI_STREAM = "ANIMOJI_STREAM",
|
|
23
|
+
ANIMOJI_ERROR = "ANIMOJI_ERROR",
|
|
23
24
|
SCREEN_SHARING_STAT = "SCREEN_SHARING_STAT"
|
|
24
25
|
}
|
|
25
26
|
export declare const enum TransportState {
|
package/default/Api.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import BaseApi, { LogItem } from '../abstract/BaseApi';
|
|
1
|
+
import BaseApi, { LogItem, ClientStats } from '../abstract/BaseApi';
|
|
2
2
|
import CallType from '../enums/CallType';
|
|
3
3
|
import ConversationParams from '../types/ConversationParams';
|
|
4
4
|
import ConversationResponse from '../types/ConversationResponse';
|
|
@@ -14,6 +14,7 @@ export default class Api extends BaseApi {
|
|
|
14
14
|
prepareUserIds(ids: OkUserId[]): Promise<void>;
|
|
15
15
|
authorize(): Promise<void>;
|
|
16
16
|
log(items: LogItem[]): void;
|
|
17
|
+
logClientStats(items: ClientStats[]): void;
|
|
17
18
|
init(): void;
|
|
18
19
|
joinConversation(conversationId: string, isVideo?: boolean, chatId?: string): Promise<ConversationResponse>;
|
|
19
20
|
createConversation(conversationId: string, payload?: string, requireAuthToJoin?: boolean, { onlyAdminCanShareMovie, audienceMode, audioOnly, }?: {
|
package/default/Signaling.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import BaseSignaling, { AddParticipantParams } from '../abstract/BaseSignaling';
|
|
2
2
|
import { ParticipantIdRegistry } from '../classes/ParticipantIdRegistry';
|
|
3
3
|
import { SharingStatReport } from '../classes/screenshare/SharingStatReport';
|
|
4
|
+
import { NetworkStatReport } from '../types/NetworkStatReport';
|
|
4
5
|
import { TransportTopology } from '../classes/transport/Transport';
|
|
5
6
|
import ConversationFeature from '../enums/ConversationFeature';
|
|
6
7
|
import ConversationOption from '../enums/ConversationOption';
|
|
@@ -19,8 +20,8 @@ import ParticipantLayout, { RequestKeyFrame, StopStream } from '../types/Partici
|
|
|
19
20
|
import { ParticipantListChunkParameters } from '../types/ParticipantListChunk';
|
|
20
21
|
import { StreamDescriptionString } from '../types/ParticipantStreamDescription';
|
|
21
22
|
import { PerfStatReport } from '../types/PerfStatReporter';
|
|
22
|
-
import SignalingMessage from '../types/SignalingMessage';
|
|
23
|
-
import { IRecordConfData, IStartStreamData, IStopStreamData
|
|
23
|
+
import SignalingMessage, { GetRoomsSignalingResponse, SignalingSuccessResponse } from '../types/SignalingMessage';
|
|
24
|
+
import { IPublishStreamData, IRecordConfData, IStartStreamData, IStopStreamData } from '../types/Streams';
|
|
24
25
|
import { WaitingParticipantId } from '../types/WaitingHall';
|
|
25
26
|
export default class Signaling extends BaseSignaling {
|
|
26
27
|
private socket;
|
|
@@ -76,7 +77,7 @@ export default class Signaling extends BaseSignaling {
|
|
|
76
77
|
/**
|
|
77
78
|
* Send a raw command to a signaling server
|
|
78
79
|
*/
|
|
79
|
-
protected _sendRaw(command: SignalingCommandType, params?: any, needResponse?: boolean, retryCount?: number): Promise<
|
|
80
|
+
protected _sendRaw<T extends SignalingSuccessResponse>(command: SignalingCommandType, params?: any, needResponse?: boolean, retryCount?: number): Promise<T>;
|
|
80
81
|
private _isDataChannelCommand;
|
|
81
82
|
getNextCommandSequenceNumber(): number;
|
|
82
83
|
hangup(reason: string): Promise<SignalingMessage | void>;
|
|
@@ -106,10 +107,12 @@ export default class Signaling extends BaseSignaling {
|
|
|
106
107
|
addMovie(data: IAddMovieParams): Promise<SignalingMessage>;
|
|
107
108
|
updateMovie(data: IUpdateMovieData): Promise<SignalingMessage>;
|
|
108
109
|
removeMovie(data: any): Promise<SignalingMessage>;
|
|
110
|
+
startUrlSharing(sharedUrl: string): Promise<SignalingMessage>;
|
|
111
|
+
stopUrlSharing(): Promise<SignalingMessage>;
|
|
109
112
|
updateRooms(rooms: SignalingMessage.Room[], assignRandomly?: boolean): Promise<SignalingMessage>;
|
|
110
113
|
activateRooms(roomIds: number[], deactivate: boolean): Promise<SignalingMessage>;
|
|
111
114
|
switchRoom(toRoomId: number | null, participantId?: ParticipantId): Promise<SignalingMessage>;
|
|
112
|
-
getRooms(withParticipants: boolean): Promise<
|
|
115
|
+
getRooms(withParticipants: boolean): Promise<GetRoomsSignalingResponse>;
|
|
113
116
|
removeRooms(roomIds: number[]): Promise<SignalingMessage>;
|
|
114
117
|
startStream(data: IStartStreamData): Promise<SignalingMessage>;
|
|
115
118
|
stopStream(data?: IStopStreamData): Promise<SignalingMessage>;
|
|
@@ -120,6 +123,7 @@ export default class Signaling extends BaseSignaling {
|
|
|
120
123
|
requestRealloc(): Promise<SignalingMessage>;
|
|
121
124
|
reportPerfStat(report: PerfStatReport): Promise<SignalingMessage>;
|
|
122
125
|
reportSharingStat(report: SharingStatReport): Promise<SignalingMessage>;
|
|
126
|
+
reportNetworkStat(report: NetworkStatReport): Promise<SignalingMessage>;
|
|
123
127
|
chatMessage(message: string, participantId?: CompositeUserId | null): Promise<SignalingMessage>;
|
|
124
128
|
chatHistory(count: number): Promise<SignalingMessage>;
|
|
125
129
|
customData(data: JSONObject, participantId: ParticipantId | null): Promise<SignalingMessage>;
|
|
@@ -128,6 +132,7 @@ export default class Signaling extends BaseSignaling {
|
|
|
128
132
|
enableFeatureForRoles(feature: ConversationFeature, roles: UserRole[]): Promise<SignalingMessage>;
|
|
129
133
|
pinParticipant(participantId: ParticipantId, unpin: boolean, roomId: number | null): Promise<SignalingMessage>;
|
|
130
134
|
updateMediaModifiers(mediaModifiers: MediaModifiers): Promise<SignalingMessage>;
|
|
135
|
+
enableVideoSuspend(enabled: boolean): Promise<SignalingMessage>;
|
|
131
136
|
changeOptions(changes: {
|
|
132
137
|
[key in ConversationOption]?: boolean;
|
|
133
138
|
}): Promise<SignalingMessage>;
|
|
@@ -13,6 +13,7 @@ declare enum SignalingCommandType {
|
|
|
13
13
|
UPDATE_DISPLAY_LAYOUT = "update-display-layout",
|
|
14
14
|
REPORT_PERF_STAT = "report-perf-stat",
|
|
15
15
|
REPORT_SHARING_STAT = "report-sharing-stat",
|
|
16
|
+
REPORT_NETWORK_STAT = "report-network-stat",
|
|
16
17
|
RECORD_START = "record-start",
|
|
17
18
|
RECORD_STOP = "record-stop",
|
|
18
19
|
RECORD_PUBLISH = "record-publish",
|
|
@@ -38,6 +39,8 @@ declare enum SignalingCommandType {
|
|
|
38
39
|
ADD_MOVIE = "add-movie",
|
|
39
40
|
UPDATE_MOVIE = "update-movie",
|
|
40
41
|
REMOVE_MOVIE = "remove-movie",
|
|
42
|
+
START_URL_SHARING = "start-url-sharing",
|
|
43
|
+
STOP_URL_SHARING = "stop-url-sharing",
|
|
41
44
|
GET_ROOMS = "get-rooms",
|
|
42
45
|
UPDATE_ROOMS = "update-rooms",
|
|
43
46
|
ACTIVATE_ROOMS = "activate-rooms",
|
|
@@ -49,6 +52,7 @@ declare enum SignalingCommandType {
|
|
|
49
52
|
REQUEST_ASR = "request-asr",
|
|
50
53
|
REQUEST_PROMOTION = "request-promotion",
|
|
51
54
|
ACCEPT_PROMOTION = "accept-promotion",
|
|
52
|
-
GET_HAND_QUEUE = "get-hand-queue"
|
|
55
|
+
GET_HAND_QUEUE = "get-hand-queue",
|
|
56
|
+
ENABLE_VIDEO_SUSPEND = "enable-video-suspend"
|
|
53
57
|
}
|
|
54
58
|
export default SignalingCommandType;
|
|
@@ -40,6 +40,7 @@ declare enum SignalingNotification {
|
|
|
40
40
|
MOVIE_UPDATE_NOTIFICATION = "movie-update-notification",
|
|
41
41
|
MOVIE_SHARE_STARTED = "movie-share-started",
|
|
42
42
|
MOVIE_SHARE_STOPPED = "movie-share-stopped",
|
|
43
|
+
URL_SHARING_INFO_UPDATED = "url-sharing-info-updated",
|
|
43
44
|
ROOM_UPDATED = "room-updated",
|
|
44
45
|
ROOMS_UPDATED = "rooms-updated",
|
|
45
46
|
ROOM_PARTICIPANTS_UPDATED = "room-participants-updated",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vkontakte/calls-sdk",
|
|
3
|
-
"version": "2.8.4-dev.
|
|
3
|
+
"version": "2.8.4-dev.b2a2d69.0",
|
|
4
4
|
"author": "vk.com",
|
|
5
5
|
"description": "Library for video calls based on the vk.com platform",
|
|
6
6
|
"homepage": "https://vk.com",
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"**/*.d.ts"
|
|
15
15
|
],
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@vkontakte/calls-video-effects": "2.2.3-beta.
|
|
18
|
-
"@vkontakte/calls-vmoji": "1.0.
|
|
17
|
+
"@vkontakte/calls-video-effects": "2.2.3-beta.2",
|
|
18
|
+
"@vkontakte/calls-vmoji": "1.0.9-beta.42",
|
|
19
19
|
"@vkontakte/libvpx": "2.0.9",
|
|
20
20
|
"bit-buffer": "0.2.5",
|
|
21
21
|
"messagepack": "1.1.12",
|
package/static/External.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { IAsrData } from '../types/Asr';
|
|
|
2
2
|
import { ConversationData } from '../types/Conversation';
|
|
3
3
|
import HangupReason from '../classes/HangupReason';
|
|
4
4
|
import { MediaTrackKind } from '../classes/MediaSource';
|
|
5
|
+
import { MediaType } from '../types/ParticipantStreamDescription';
|
|
5
6
|
import { StatResult } from '../types/Statistics';
|
|
6
7
|
import ChatRoomEventType from '../enums/ChatRoomEventType';
|
|
7
8
|
import ConversationOption from '../enums/ConversationOption';
|
|
@@ -18,6 +19,7 @@ import { IOnRemoteMovieData, ISharedMovieInfo, ISharedMovieState, ISharedMovieSt
|
|
|
18
19
|
import MuteStates from '../types/MuteStates';
|
|
19
20
|
import { ParticipantStateMapped } from '../types/Participant';
|
|
20
21
|
import { IRoomId, Room, RoomParticipantUpdate, Rooms, RoomsUpdate } from '../types/Room';
|
|
22
|
+
import { VmojiError } from '../types/Vmoji';
|
|
21
23
|
import { DebugMessageType } from './Debug';
|
|
22
24
|
import { JSONObject } from './Json';
|
|
23
25
|
/**
|
|
@@ -59,6 +61,12 @@ declare namespace External {
|
|
|
59
61
|
* @param mediaSettings
|
|
60
62
|
*/
|
|
61
63
|
function onVmojiStream(stream: MediaStream | null, mediaSettings: MediaSettings): void;
|
|
64
|
+
/**
|
|
65
|
+
* Получена ошибка Vmoji
|
|
66
|
+
*
|
|
67
|
+
* @param error
|
|
68
|
+
*/
|
|
69
|
+
function onVmojiError(error: VmojiError): void;
|
|
62
70
|
/**
|
|
63
71
|
* Локальный стрим изменился
|
|
64
72
|
*
|
|
@@ -130,16 +138,10 @@ declare namespace External {
|
|
|
130
138
|
* Cтрим собеседника приостановлен/возобновлен.
|
|
131
139
|
*
|
|
132
140
|
* @param userId
|
|
141
|
+
* @param mediaType тип отключённого/включённого потока
|
|
133
142
|
* @param suspended true - стрим был приостановлен, false - стрим был запущен
|
|
134
143
|
*/
|
|
135
|
-
function onRemoteStreamSuspended(userId: ExternalParticipantId, suspended: boolean): void;
|
|
136
|
-
/**
|
|
137
|
-
* Стрим с экрана собеседника приостановлен/возобновлен.
|
|
138
|
-
*
|
|
139
|
-
* @param userId
|
|
140
|
-
* @param suspended true - стрим был приостановлен, false - стрим был запущен
|
|
141
|
-
*/
|
|
142
|
-
function onRemoteScreenStreamSuspended(userId: ExternalParticipantId, suspended: boolean): void;
|
|
144
|
+
function onRemoteStreamSuspended(userId: ExternalParticipantId, mediaType: MediaType, suspended: boolean): void;
|
|
143
145
|
/**
|
|
144
146
|
* Начат звонок
|
|
145
147
|
*
|
|
@@ -202,6 +204,14 @@ declare namespace External {
|
|
|
202
204
|
* @param roomId
|
|
203
205
|
*/
|
|
204
206
|
function onLocalSharedMovieStoppedInfo(userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId): void;
|
|
207
|
+
/**
|
|
208
|
+
* Получены данные о совместном использовании стороннего web-приложения
|
|
209
|
+
*
|
|
210
|
+
* @param userId
|
|
211
|
+
* @param sharedUrl
|
|
212
|
+
* @param roomId
|
|
213
|
+
*/
|
|
214
|
+
function onRemoteSharedUrl(userId: ExternalParticipantId, sharedUrl: string | undefined, roomId: IRoomId): void;
|
|
205
215
|
/**
|
|
206
216
|
* Добавили участника
|
|
207
217
|
*
|
|
@@ -316,9 +326,14 @@ declare namespace External {
|
|
|
316
326
|
*/
|
|
317
327
|
function onOptionsChanged(options: ConversationOption[]): void;
|
|
318
328
|
/**
|
|
319
|
-
*
|
|
329
|
+
* Входящий звонок был принят мной
|
|
320
330
|
*/
|
|
321
331
|
function onCallAccepted(): void;
|
|
332
|
+
/**
|
|
333
|
+
* Исходящий звонок был принят кем-то
|
|
334
|
+
* @param userId
|
|
335
|
+
*/
|
|
336
|
+
function onAcceptedCall(userId: ExternalId): void;
|
|
322
337
|
function onRateNeeded(): void;
|
|
323
338
|
/**
|
|
324
339
|
* Изменился говорящий в звонке
|
|
@@ -388,9 +403,10 @@ declare namespace External {
|
|
|
388
403
|
* @param type Тип записи
|
|
389
404
|
* @param externalMovieId Внешний ID ролика
|
|
390
405
|
* @param externalOwnerId Внешний ID пользователя/группы от которого ведётся трансляция
|
|
406
|
+
* @param externalAccessKey Hash видеозаписи, если доступ к ней предоставляется по ссылке
|
|
391
407
|
* @param roomId ID зала в котором стартанула запись
|
|
392
408
|
*/
|
|
393
|
-
function onRecordStarted(initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, roomId?: number | null): void;
|
|
409
|
+
function onRecordStarted(initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, externalAccessKey?: string, roomId?: number | null): void;
|
|
394
410
|
/**
|
|
395
411
|
* Закончена запись звонка
|
|
396
412
|
* @param roomId ID зала в котором остановлена запись
|
|
@@ -524,5 +540,9 @@ declare namespace External {
|
|
|
524
540
|
* @param adminParticipantId админ, одобривший повышение
|
|
525
541
|
*/
|
|
526
542
|
function onPromotionApproved(adminParticipantId: ExternalParticipantId): void;
|
|
543
|
+
/**
|
|
544
|
+
* Собеседник подключился к сигналлингу
|
|
545
|
+
*/
|
|
546
|
+
function onPeerRegistered(): void;
|
|
527
547
|
}
|
|
528
548
|
export default External;
|
package/static/Params.d.ts
CHANGED
|
@@ -19,8 +19,10 @@ import MediaSettings from '../types/MediaSettings';
|
|
|
19
19
|
import { IOnRemoteMovieData, ISharedMovieInfo, ISharedMovieState, ISharedMovieStoppedInfo } from '../types/MovieShare';
|
|
20
20
|
import MuteStates from '../types/MuteStates';
|
|
21
21
|
import { ParticipantStateMapped } from '../types/Participant';
|
|
22
|
+
import { MediaType } from '../types/ParticipantStreamDescription';
|
|
22
23
|
import { IRoomId, Room, RoomParticipantUpdate, Rooms, RoomsUpdate } from '../types/Room';
|
|
23
24
|
import { IApiEnv } from '../types/Params';
|
|
25
|
+
import { VmojiError } from '../types/Vmoji';
|
|
24
26
|
import { DebugMessageType } from './Debug';
|
|
25
27
|
import { ParticipantStatus } from './External';
|
|
26
28
|
import { JSONObject } from './Json';
|
|
@@ -32,6 +34,8 @@ export type ParamsObject = {
|
|
|
32
34
|
/** @hidden */
|
|
33
35
|
platform: string;
|
|
34
36
|
/** @hidden */
|
|
37
|
+
clientStatsPlatform: string;
|
|
38
|
+
/** @hidden */
|
|
35
39
|
clientType: string;
|
|
36
40
|
/** @hidden */
|
|
37
41
|
externalUserType: string;
|
|
@@ -222,6 +226,25 @@ export type ParamsObject = {
|
|
|
222
226
|
perfStatReportEnabled: boolean;
|
|
223
227
|
/** @hidden */
|
|
224
228
|
callStatReportEnabled: boolean;
|
|
229
|
+
/**
|
|
230
|
+
* Включает использование обновленного API и формата
|
|
231
|
+
* логирования статистики качества аудио/видео.
|
|
232
|
+
* Требует указания clientStatsPlatform.
|
|
233
|
+
*
|
|
234
|
+
* _По умолчанию: `false`_
|
|
235
|
+
* @hidden
|
|
236
|
+
*/
|
|
237
|
+
useCallStatReportNewAPI: boolean;
|
|
238
|
+
/** @hidden */
|
|
239
|
+
networkStatReportEnabled: boolean;
|
|
240
|
+
/**
|
|
241
|
+
* Включает извлечение `remote-inbound-rtp` для использования в статистике.
|
|
242
|
+
* Используется для вычисления `video_loss` и `audio_loss`.
|
|
243
|
+
*
|
|
244
|
+
* _По умолчанию: `false`_
|
|
245
|
+
* @hidden
|
|
246
|
+
*/
|
|
247
|
+
includeRemoteRtpsInCallStat: boolean;
|
|
225
248
|
/**
|
|
226
249
|
* Отдавать приоритет кодеку H264 для исходящего видео
|
|
227
250
|
*
|
|
@@ -305,12 +328,6 @@ export type ParamsObject = {
|
|
|
305
328
|
movieShare: boolean;
|
|
306
329
|
/** @hidden */
|
|
307
330
|
breakVideoPayloadTypes: boolean;
|
|
308
|
-
/**
|
|
309
|
-
* Включить звонки контактам
|
|
310
|
-
*
|
|
311
|
-
* _По умолчанию: `false`_
|
|
312
|
-
*/
|
|
313
|
-
useCallsToContacts: boolean;
|
|
314
331
|
/**
|
|
315
332
|
* Включить постраничный вывод участников. Работает только если включено videoTracksCount (слоты)
|
|
316
333
|
*
|
|
@@ -323,6 +340,12 @@ export type ParamsObject = {
|
|
|
323
340
|
* _По умолчанию: `false`_
|
|
324
341
|
*/
|
|
325
342
|
useRooms: boolean;
|
|
343
|
+
/**
|
|
344
|
+
* Включить чат румы
|
|
345
|
+
*
|
|
346
|
+
* _По умолчанию: `false`_
|
|
347
|
+
*/
|
|
348
|
+
useChatRooms: boolean;
|
|
326
349
|
/**
|
|
327
350
|
* Индекс участника для первого chunk'а который придет при установке соединения с сервером
|
|
328
351
|
*
|
|
@@ -443,6 +466,10 @@ export type ParamsObject = {
|
|
|
443
466
|
* Локальный стрим вимоджи добавлен/удалён
|
|
444
467
|
*/
|
|
445
468
|
onVmojiStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
|
|
469
|
+
/**
|
|
470
|
+
* Произошла ошибка вимоджи
|
|
471
|
+
*/
|
|
472
|
+
onVmojiError?: (error: VmojiError) => void;
|
|
446
473
|
/**
|
|
447
474
|
* Изменился статус локального соединения
|
|
448
475
|
*/
|
|
@@ -455,11 +482,7 @@ export type ParamsObject = {
|
|
|
455
482
|
/**
|
|
456
483
|
* Cтрим собеседника приостановлен/возобновлен.
|
|
457
484
|
*/
|
|
458
|
-
onRemoteStreamSuspended?: (userId: ExternalParticipantId, suspended: boolean) => void;
|
|
459
|
-
/**
|
|
460
|
-
* Стрим с экрана собеседника приостановлен/возобновлен.
|
|
461
|
-
*/
|
|
462
|
-
onRemoteScreenStreamSuspended?: (userId: ExternalParticipantId, suspended: boolean) => void;
|
|
485
|
+
onRemoteStreamSuspended?: (userId: ExternalParticipantId, mediaType: MediaType, suspended: boolean) => void;
|
|
463
486
|
/**
|
|
464
487
|
* Получен стрим с экрана собеседника.
|
|
465
488
|
* Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
|
|
@@ -602,9 +625,14 @@ export type ParamsObject = {
|
|
|
602
625
|
*/
|
|
603
626
|
onHangup?: (type: HangupReason, conversationId: string | null) => void;
|
|
604
627
|
/**
|
|
605
|
-
*
|
|
628
|
+
* Входящий звонок был принят мной
|
|
606
629
|
*/
|
|
607
630
|
onCallAccepted?: () => void;
|
|
631
|
+
/**
|
|
632
|
+
* Исходящий звонок был принят кем-то
|
|
633
|
+
* @param userId
|
|
634
|
+
*/
|
|
635
|
+
onAcceptedCall?: (userId: ExternalParticipantId) => void;
|
|
608
636
|
/**
|
|
609
637
|
* Список устройств изменился
|
|
610
638
|
*/
|
|
@@ -629,7 +657,7 @@ export type ParamsObject = {
|
|
|
629
657
|
/**
|
|
630
658
|
* Начата трансляция/запись звонка
|
|
631
659
|
*/
|
|
632
|
-
onRecordStarted?: (initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, roomId?: number | null) => void;
|
|
660
|
+
onRecordStarted?: (initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, externalAccessKey?: string, roomId?: number | null) => void;
|
|
633
661
|
/**
|
|
634
662
|
* Закончена трансляция/запись звонка
|
|
635
663
|
*/
|
|
@@ -752,6 +780,12 @@ export type ParamsObject = {
|
|
|
752
780
|
* @param roomId Id Комнаты
|
|
753
781
|
*/
|
|
754
782
|
onAsrSet?: (data: IAsrData | null, roomId: number | null) => void;
|
|
783
|
+
/**
|
|
784
|
+
* Админ начал/остановил совместное использование стороннего web-приложения
|
|
785
|
+
* @param userId id участника-админа
|
|
786
|
+
* @param sharedUrl url страницы
|
|
787
|
+
*/
|
|
788
|
+
onRemoteSharedUrl?: (userId: ExternalParticipantId, sharedUrl: string | undefined, roomId: IRoomId) => void;
|
|
755
789
|
/**
|
|
756
790
|
* Одобрено повышение пользователя в зеле ожидания/зале в режиме Audience
|
|
757
791
|
*
|
|
@@ -764,6 +798,10 @@ export type ParamsObject = {
|
|
|
764
798
|
* @param demoted участник разжалован
|
|
765
799
|
*/
|
|
766
800
|
onPromoted?: (demoted: boolean) => void;
|
|
801
|
+
/**
|
|
802
|
+
* Собеседник подключился к сигналлингу
|
|
803
|
+
*/
|
|
804
|
+
onPeerRegistered?: () => void;
|
|
767
805
|
/**
|
|
768
806
|
* Поддержка переключения качества видео в зависимости от сети
|
|
769
807
|
* Только для режима p2p
|
|
@@ -785,6 +823,8 @@ export default abstract class Params {
|
|
|
785
823
|
static get protocolVersion(): 5 | 6;
|
|
786
824
|
static get platform(): string;
|
|
787
825
|
static set platform(value: string);
|
|
826
|
+
static get clientStatsPlatform(): string;
|
|
827
|
+
static set clientStatsPlatform(value: string);
|
|
788
828
|
static get clientType(): string;
|
|
789
829
|
static set clientType(value: string);
|
|
790
830
|
static get externalUserType(): string;
|
|
@@ -849,7 +889,10 @@ export default abstract class Params {
|
|
|
849
889
|
static get networkStatisticsInterval(): number;
|
|
850
890
|
static get perfStatReportEnabled(): boolean;
|
|
851
891
|
static get callStatReportEnabled(): boolean;
|
|
892
|
+
static get useCallStatReportNewAPI(): boolean;
|
|
893
|
+
static get networkStatReportEnabled(): boolean;
|
|
852
894
|
static get enableLogPerfStatReport(): boolean;
|
|
895
|
+
static get includeRemoteRtpsInCallStat(): boolean;
|
|
853
896
|
static get producerNotificationDataChannel(): boolean;
|
|
854
897
|
static get producerCommandDataChannel(): boolean;
|
|
855
898
|
static get consumerScreenDataChannel(): boolean;
|
|
@@ -867,9 +910,9 @@ export default abstract class Params {
|
|
|
867
910
|
static get movieShare(): boolean;
|
|
868
911
|
static get videoTracksCount(): number;
|
|
869
912
|
static get breakVideoPayloadTypes(): boolean;
|
|
870
|
-
static get useCallsToContacts(): boolean;
|
|
871
913
|
static get useParticipantListChunk(): boolean;
|
|
872
914
|
static get useRooms(): boolean;
|
|
915
|
+
static get useChatRooms(): boolean;
|
|
873
916
|
static get participantListChunkInitIndex(): number;
|
|
874
917
|
static get participantListChunkInitCount(): number | null;
|
|
875
918
|
static get serverAudioRed(): boolean;
|
package/static/WebRTCUtils.d.ts
CHANGED
|
@@ -15,6 +15,10 @@ export declare enum FacingMode {
|
|
|
15
15
|
*/
|
|
16
16
|
ENVIRONMENT = "environment"
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Известные браузеры
|
|
20
|
+
*/
|
|
21
|
+
export type BrowserName = 'IE' | 'Edge' | 'Chrome' | 'Firefox' | 'Yandex' | 'Opera' | 'Sferum';
|
|
18
22
|
declare namespace WebRTCUtils {
|
|
19
23
|
/**
|
|
20
24
|
* Инициализирует устройства. До вызова этого метода бесполезно опрашивать другие публичные методы
|
|
@@ -144,7 +148,7 @@ declare namespace WebRTCUtils {
|
|
|
144
148
|
/**
|
|
145
149
|
* Имя браузера
|
|
146
150
|
*/
|
|
147
|
-
function browserName(): string;
|
|
151
|
+
function browserName(): BrowserName | string;
|
|
148
152
|
/**
|
|
149
153
|
* Версия браузера
|
|
150
154
|
*/
|