@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.
Files changed (37) hide show
  1. package/CallsSDK.d.ts +12 -8
  2. package/abstract/BaseApi.d.ts +12 -4
  3. package/abstract/BaseSignaling.d.ts +5 -0
  4. package/calls-sdk.cjs.js +8 -8
  5. package/calls-sdk.esm.js +8 -8
  6. package/classes/Conversation.d.ts +15 -2
  7. package/classes/Logger.d.ts +6 -3
  8. package/classes/ProducerCommandSerializationService.d.ts +4 -0
  9. package/classes/screenshare/ScreenCaptureSender.d.ts +3 -0
  10. package/classes/stat/WeightedAverage.d.ts +10 -0
  11. package/classes/transport/BaseTransport.d.ts +0 -1
  12. package/classes/transport/DirectStatReporter.d.ts +43 -0
  13. package/classes/transport/DirectTransport.d.ts +2 -4
  14. package/classes/transport/PerfStatReporter.d.ts +3 -1
  15. package/classes/transport/Transport.d.ts +1 -0
  16. package/default/Api.d.ts +2 -1
  17. package/default/Signaling.d.ts +9 -4
  18. package/enums/SignalingCommandType.d.ts +5 -1
  19. package/enums/SignalingNotification.d.ts +1 -0
  20. package/package.json +3 -3
  21. package/static/External.d.ts +30 -10
  22. package/static/Params.d.ts +57 -14
  23. package/static/WebRTCUtils.d.ts +5 -1
  24. package/types/AudienceMode.d.ts +1 -0
  25. package/types/Conversation.d.ts +8 -6
  26. package/types/EnableVideoSuspend.d.ts +3 -0
  27. package/types/MediaSettings.d.ts +0 -9
  28. package/types/MuteStates.d.ts +12 -0
  29. package/types/NetworkStatReport.d.ts +4 -0
  30. package/types/ParticipantStreamDescription.d.ts +2 -1
  31. package/types/PerfStatReporter.d.ts +6 -0
  32. package/types/Room.d.ts +5 -1
  33. package/types/SignalingCommand.d.ts +4 -4
  34. package/types/SignalingMessage.d.ts +34 -12
  35. package/types/Statistics.d.ts +9 -0
  36. package/types/Streams.d.ts +1 -0
  37. 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 _resolveExternalIds;
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;
@@ -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 _batch;
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 _send;
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
+ }
@@ -10,5 +10,4 @@ export default abstract class BaseTransport extends EventEmitter {
10
10
  protected constructor(signaling: BaseSignaling, mediaSource: MediaSource);
11
11
  getState(): TransportState;
12
12
  abstract close(error?: Error): void;
13
- protected getRtcSenders(): RTCRtpSender[];
14
13
  }
@@ -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 _checkBadNetwork;
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 _previousTimestamp;
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, }?: {
@@ -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, IPublishStreamData } from '../types/Streams';
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<SignalingMessage>;
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<SignalingMessage>;
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.a76dcb2.0",
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.0",
18
- "@vkontakte/calls-vmoji": "1.0.8-beta.9",
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",
@@ -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;
@@ -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;
@@ -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
  */