@vkontakte/calls-sdk 2.8.6-dev.7a7707c0.0 → 2.8.6-dev.97c05c29.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.
@@ -78,13 +78,15 @@ export default class Conversation extends EventEmitter {
78
78
  private _onJoinPart2;
79
79
  private _extractExternalRooms;
80
80
  private _extractExternalRoomsData;
81
- onPush(conversationId: string, type?: UserType, peerId?: number): Promise<void>;
81
+ onPush(conversationId: string, type?: UserType, peerId?: number, conversationParams?: string): Promise<void>;
82
82
  private _isInWaitingHall;
83
83
  private _isRestricted;
84
84
  private _isAudienceMode;
85
85
  private _isAudienceModeListener;
86
86
  private _acceptConcurrent;
87
87
  private _getMainRoomParticipants;
88
+ private _decodeExternalConversationParams;
89
+ private _logCallStartEvent;
88
90
  accept(mediaOptions: MediaOption[]): Promise<ConversationData>;
89
91
  decline(): Promise<void>;
90
92
  hangup(): Promise<void>;
@@ -96,6 +98,7 @@ export default class Conversation extends EventEmitter {
96
98
  private _close;
97
99
  destroy(): void;
98
100
  private _getConversationParams;
101
+ private _setConversationParams;
99
102
  private _addGeoParamsToEndpoint;
100
103
  /**
101
104
  * @throws ErrorEvent
@@ -0,0 +1,19 @@
1
+ import { StatItem } from '../../types/Statistics';
2
+ import { TransportTopology } from '../transport/Transport';
3
+ export type CodecKind = 'audio' | 'video';
4
+ /**
5
+ * Собирает стату по использованию кодеков в webrtc
6
+ * Каждый раз когда обновляется кодек или завершается звонок,
7
+ * отправляется репорт об использовании кодеков
8
+ */
9
+ export declare class CodecStatsAggregator {
10
+ private static _instance;
11
+ private readonly _codecUsages;
12
+ private getCurrentTransportTopology;
13
+ static create(getCurrentTransportTopology: () => TransportTopology | undefined): void;
14
+ static reportUsage(stat: StatItem): void;
15
+ private saveUsage;
16
+ private report;
17
+ static destroy(): void;
18
+ private _destroy;
19
+ }
@@ -0,0 +1,9 @@
1
+ import HangupReason from '../HangupReason';
2
+ import { TransportTopology } from '../transport/Transport';
3
+ /**
4
+ * Класс для работы с событийными метриками, обертка для правильной отправки событий
5
+ */
6
+ export declare class EventMetricsService {
7
+ private static correctHangupReason;
8
+ static sendHangupEvent(reason: HangupReason, topology?: TransportTopology): void;
9
+ }
package/enums/Stat.d.ts CHANGED
@@ -7,6 +7,7 @@ declare const enum Stat {
7
7
  ICE_RESTART = "callIceRestart",
8
8
  PUSH = "callPush",
9
9
  OUTGOING_CALL = "callStart",
10
+ CALL_FINISH = "call_finish",
10
11
  OUTGOING_MULTIPARTY_CALL = "callStartMultiparty",
11
12
  JOIN_CONVERSATION = "callJoinConversation",
12
13
  ACCEPTED_OUTGOING = "callAcceptedOutgoing",
@@ -14,6 +15,7 @@ declare const enum Stat {
14
15
  DECLINE_INCOMING = "callDeclineIncoming",
15
16
  ACCEPT_CONCURRENT = "callAcceptConcurrent",
16
17
  HANGUP = "callHangup",
18
+ CODEC_USAGE = "codec_usage",
17
19
  MEDIA_STATUS = "callMediaStatus",
18
20
  DEVICE_CHANGED = "callDeviceChanged",
19
21
  SOCKET_ACTION = "callSocketAction",
@@ -35,6 +37,7 @@ declare const enum Stat {
35
37
  FIRST_MEDIA_RECEIVED = "first_media_received",
36
38
  CALL_EVENTUAL_STAT = "callEventualStat",
37
39
  CALL_DECLINED_OR_HANGED_LOCALLY = "CallDeclinedOrHangedLocally",
38
- USER_FEEDBACK_RECEIVED = "UserFeedbackReceived"
40
+ USER_FEEDBACK_RECEIVED = "UserFeedbackReceived",
41
+ CALL_START = "call_start"
39
42
  }
40
43
  export default Stat;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/calls-sdk",
3
- "version": "2.8.6-dev.7a7707c0.0",
3
+ "version": "2.8.6-dev.97c05c29.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",
@@ -22,5 +22,8 @@
22
22
  "messagepack": "1.1.12",
23
23
  "simple-ebml-builder": "0.2.2",
24
24
  "webrtc-adapter": "7.7.0"
25
- }
25
+ },
26
+ "workspaces": [
27
+ "workspaces/sandbox"
28
+ ]
26
29
  }
@@ -849,6 +849,12 @@ export type ParamsObject = {
849
849
  * _По умолчанию: `false`_
850
850
  */
851
851
  simulcast: boolean;
852
+ /**
853
+ * Не запрашивать conversation params при входе в звонок
854
+ *
855
+ * _По умолчанию: `false`_
856
+ */
857
+ skipConversationParams?: boolean;
852
858
  };
853
859
  export default abstract class Params {
854
860
  private static _params;
@@ -978,6 +984,7 @@ export default abstract class Params {
978
984
  static get enableVideoEffectsFpsDegradation(): boolean;
979
985
  static get simulcast(): boolean;
980
986
  static set simulcast(value: boolean);
987
+ static get skipConversationParams(): boolean | undefined;
981
988
  static toJSON(): {
982
989
  apiKey: string;
983
990
  apiEnv: string;
@@ -10,6 +10,17 @@ type ConversationParams = {
10
10
  isp_as_org?: string;
11
11
  loc_cc?: string;
12
12
  loc_reg?: string;
13
- external_user_type: string;
13
+ external_user_type?: string;
14
+ };
15
+ export type ExternalConversationParams = {
16
+ et: number;
17
+ iv: boolean;
18
+ srcp: string;
19
+ stne: string;
20
+ tkn: string;
21
+ trne: string;
22
+ trnp: string;
23
+ trnu: string;
24
+ wse: string;
14
25
  };
15
26
  export default ConversationParams;
@@ -1,4 +1,5 @@
1
1
  import HangupType from '../enums/HangupType';
2
+ import IceServer from './IceServer';
2
3
  /**
3
4
  * Начальные данные создания звонка
4
5
  * @hidden
@@ -27,5 +28,9 @@ type ConversationResponse = {
27
28
  * Порядковый номер, присвоенный устройству при входе в звонок
28
29
  */
29
30
  device_idx?: number;
31
+ turn_server?: IceServer;
32
+ stun_server?: IceServer;
33
+ client_type?: string;
34
+ token: string;
30
35
  };
31
36
  export default ConversationResponse;
@@ -94,4 +94,4 @@ export declare enum ParticipantStateDataValue {
94
94
  /**
95
95
  * Список состояний в виде ключ-значение. Максимальная длина ключей и значений - 5 символов. Пустые значения будут пропущены
96
96
  */
97
- export type ParticipantStateData = Record<ParticipantStateDataKey, ParticipantStateDataValue>;
97
+ export type ParticipantStateData = Partial<Record<ParticipantStateDataKey, ParticipantStateDataValue>>;
@@ -45,6 +45,6 @@ export interface ICallStatLog extends Pick<CallStatReport, 'call_topology' | 'na
45
45
  concealment_audio_avg_size?: number;
46
46
  video_loss?: number;
47
47
  audio_loss?: number;
48
- hardware_concurrency?: number;
48
+ cpu_hardware_concurrency?: number;
49
49
  [k: string]: string | number | undefined;
50
50
  }
@@ -27,47 +27,194 @@ export interface ILocalIceCandidateStat extends IRemoteIceCandidateStat {
27
27
  interface StatRtpOutboundVideo {
28
28
  frameHeight?: number;
29
29
  frameWidth?: number;
30
+ /**
31
+ * Идентификатор потока RTP (RID).
32
+ *
33
+ * Используется для идентификации различных потоков видео (например, simulcast) в сессиях WebRTC.
34
+ */
30
35
  rid?: string;
31
36
  framesSent?: number;
32
37
  framesPerSecond?: number;
33
38
  targetBitrate?: number;
34
39
  }
35
40
  export interface StatRtp extends StatRtpOutboundVideo {
41
+ /**
42
+ * Уникальный идентификатор источника синхронизации RTP
43
+ */
36
44
  ssrc: number;
45
+ /**
46
+ * Идентификатор медиалинии (MID)
47
+ *
48
+ * Используется для уникальной идентификации медиалинии в рамках WebRTC-сессии.
49
+ * MID помогает сопоставлять медиапотоки с их соответствующими трансиверами.
50
+ */
51
+ mid?: string;
52
+ /**
53
+ * Тип статистики (например, inbound-rtp, outbound-rtp)
54
+ */
37
55
  type: string;
56
+ /**
57
+ * Тип медиа (например, audio, video)
58
+ */
38
59
  kind: string;
60
+ /**
61
+ * Общее количество байтов, полученных по этому потоку
62
+ */
39
63
  bytesReceived: number;
64
+ /**
65
+ * Общее количество байтов, отправленных по этому потоку
66
+ */
40
67
  bytesSent: number;
68
+ /**
69
+ * Общее количество байтов заголовков, полученных по этому потоку
70
+ */
41
71
  headerBytesReceived: number;
72
+ /**
73
+ * Общее количество байтов заголовков, отправленных по этому потоку
74
+ */
42
75
  headerBytesSent: number;
76
+ /**
77
+ * Среднее значение джиттера в секундах
78
+ * Джиттер — это вариация задержки в получении пакетов данных.
79
+ */
43
80
  jitter: number;
81
+ /**
82
+ * Общее количество потерянных пакетов
83
+ */
44
84
  packetsLost: number;
85
+ /**
86
+ * Общее количество полученных пакетов
87
+ */
45
88
  packetsReceived: number;
89
+ /**
90
+ * Общее количество отправленных пакетов
91
+ */
46
92
  packetsSent: number;
93
+ /**
94
+ * Доля потерянных пакетов
95
+ */
47
96
  fractionLost: number;
97
+ /**
98
+ * Количество Picture Loss Indication (PLI) сообщений
99
+ * PLI — это сообщения, указывающие на потерю кадров изображения.
100
+ */
48
101
  pliCount: number;
102
+ /**
103
+ * Количество Full Intra Request (FIR) сообщений
104
+ * FIR — это запросы на отправку полного внутрикодированного кадра.
105
+ */
49
106
  firCount: number;
107
+ /**
108
+ * Количество Negative ACKnowledgement (NACK) сообщений
109
+ * NACK — это сообщения, указывающие на потерю пакетов данных.
110
+ */
50
111
  nackCount: number;
112
+ /**
113
+ * Идентификатор пользователя, связанный с этим потоком
114
+ */
51
115
  userId?: string;
116
+ /**
117
+ * Пропускная способность в битах в секунду
118
+ */
52
119
  bandwidth?: number;
120
+ /**
121
+ * Процент потерянных пакетов
122
+ */
53
123
  packetLoss?: number;
124
+ /**
125
+ * Частота дискретизации в герцах
126
+ * Частота дискретизации определяет качество звука.
127
+ */
54
128
  clockRate?: number;
129
+ /**
130
+ * Название кодека
131
+ * @example audio/opus, video/vp8
132
+ */
55
133
  mimeType?: string;
134
+ /**
135
+ * Библиотека, которая используется для кодека
136
+ */
137
+ encoderImplementation?: string;
138
+ /**
139
+ * Библиотека, которая используется для декодера
140
+ */
141
+ decoderImplementation?: string;
142
+ /**
143
+ * Параметры кодека, есть только у audio кодеков
144
+ */
145
+ sdpFmtpLine?: string;
146
+ /**
147
+ * Общее количество декодированных кадров
148
+ */
56
149
  framesDecoded?: number;
150
+ /**
151
+ * Общее количество полученных кадров
152
+ */
57
153
  framesReceived?: number;
154
+ /**
155
+ * Общее количество отброшенных кадров
156
+ */
58
157
  framesDropped?: number;
158
+ /**
159
+ * Изменение количества отброшенных кадров
160
+ */
59
161
  framesDroppedDelta?: number;
162
+ /**
163
+ * Изменение задержки между кадрами
164
+ */
60
165
  interframeDelayVariance?: number;
166
+ /**
167
+ * Общее количество полученных аудиосэмплов
168
+ */
61
169
  totalSamplesReceived?: number;
170
+ /**
171
+ * Общее время кодирования видео в секундах.
172
+ *
173
+ * Показывает, сколько времени было потрачено на кодирование видео кадров.
174
+ * Не применяется для аудио.
175
+ */
176
+ totalEncodeTime?: number;
177
+ /**
178
+ * Общее количество замаскированных сэмплов
179
+ */
62
180
  concealedSamples?: number;
181
+ /**
182
+ * Количество вставленных сэмплов для замедления
183
+ */
63
184
  insertedSamplesForDeceleration?: number;
185
+ /**
186
+ * Количество удаленных сэмплов для ускорения
187
+ */
64
188
  removedSamplesForAcceleration?: number;
189
+ /**
190
+ * Количество замаскированных беззвучных сэмплов
191
+ */
65
192
  silentConcealedSamples?: number;
193
+ /**
194
+ * Количество событий маскировки
195
+ */
66
196
  concealmentEvents?: number;
197
+ /**
198
+ * Общее количество аудиоэнергии
199
+ * Аудиоэнергия — это мера мощности аудиосигнала.
200
+ */
67
201
  totalAudioEnergy?: number;
202
+ /**
203
+ * Общее время замерзания в секундах
204
+ */
68
205
  totalFreezesDuration: number;
206
+ /**
207
+ * Изменение общего времени замерзания
208
+ * Время замерзания — это период, в течение которого поток временно останавливается.
209
+ */
69
210
  totalFreezesDurationDelta?: number;
211
+ /**
212
+ * Количество событий замерзания
213
+ */
70
214
  freezeCount: number;
215
+ /**
216
+ * Изменение количества событий замерзания
217
+ */
71
218
  freezeCountDelta?: number;
72
219
  }
73
220
  export type StatItem = {
package/utils/Lz4.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare function lz4Decompress(input: Uint8Array, outputLength: number): Uint8Array;