@vkontakte/calls-sdk 2.6.2-dev.e7984c3.0 → 2.6.2-dev.e9ac976.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 +65 -12
- package/abstract/BaseApi.d.ts +7 -3
- package/abstract/BaseSignaling.d.ts +15 -3
- package/calls-sdk.cjs.js +8 -8
- package/calls-sdk.esm.js +8 -8
- package/classes/Conversation.d.ts +35 -8
- package/classes/MediaSource.d.ts +7 -2
- package/classes/ParticipantIdRegistry.d.ts +2 -0
- package/classes/ProducerCommandSerializationService.d.ts +19 -0
- package/classes/codec/IEncoder.d.ts +3 -0
- package/classes/codec/LibVPxEncoder.d.ts +4 -1
- package/classes/codec/Types.d.ts +6 -1
- package/classes/codec/WebCodecsEncoder.d.ts +4 -1
- package/classes/screenshare/PacketHistory.d.ts +30 -0
- package/classes/screenshare/PacketHistory.test.d.ts +1 -0
- package/classes/screenshare/ScreenCaptureSender.d.ts +16 -1
- package/classes/screenshare/ScreenCongestionControl.d.ts +25 -0
- package/classes/screenshare/SharingStatReport.d.ts +6 -0
- package/classes/screenshare/Utils.d.ts +6 -0
- package/classes/transport/ServerTransport.d.ts +2 -0
- package/default/Api.d.ts +8 -3
- package/default/Api.test.d.ts +1 -0
- package/default/Signaling.d.ts +20 -4
- package/enums/ConversationFeature.d.ts +2 -1
- package/enums/ConversationOption.d.ts +3 -1
- package/enums/HangupType.d.ts +3 -1
- package/enums/LiveStatus.d.ts +7 -0
- package/enums/MediaOption.d.ts +3 -1
- package/enums/RoomsEventType.d.ts +6 -0
- package/enums/SignalingCommandType.d.ts +12 -1
- package/enums/SignalingNotification.d.ts +8 -1
- package/package.json +1 -1
- package/static/ApiTransport.d.ts +1 -1
- package/static/External.d.ts +43 -9
- package/static/Params.d.ts +78 -5
- package/static/Utils.d.ts +5 -1
- package/static/WebRTCUtils.d.ts +2 -1
- package/types/Asr.d.ts +5 -0
- package/types/Conversation.d.ts +12 -0
- package/types/ConversationFeature.d.ts +3 -0
- package/types/ConversationParams.d.ts +1 -0
- package/types/Feedback.d.ts +22 -0
- package/types/LayoutUtils.d.ts +5 -0
- package/types/MediaSettings.d.ts +4 -0
- package/types/MovieShare.d.ts +33 -7
- package/types/Participant.d.ts +1 -0
- package/types/ParticipantLayout.d.ts +7 -1
- package/types/ParticipantListChunk.d.ts +2 -0
- package/types/ParticipantStreamDescription.d.ts +2 -1
- package/types/Room.d.ts +72 -0
- package/types/SignalingMessage.d.ts +56 -0
- package/types/WaitingHall.d.ts +2 -8
- package/utils/ArrayDequeue.d.ts +24 -0
- package/utils/ArrayDequeue.spec.d.ts +1 -0
- package/utils/Conversation.d.ts +2 -0
- package/utils/MsgPackerBufferUtils.d.ts +31 -0
- package/worker/LibVPxEncoderWorker.d.ts +1 -1
|
@@ -36,9 +36,16 @@ declare enum SignalingNotification {
|
|
|
36
36
|
CHAT_ROOM_UPDATED = "chat-room-updated",
|
|
37
37
|
PROMOTION_APPROVED = "promotion-approved",
|
|
38
38
|
JOIN_LINK_CHANGED = "join-link-changed",
|
|
39
|
+
FEEDBACK = "feedback",
|
|
39
40
|
MOVIE_UPDATE_NOTIFICATION = "movie-update-notification",
|
|
40
41
|
MOVIE_SHARE_INFO = "movie-share-info",
|
|
41
42
|
MOVIE_SHARE_STARTED = "movie-share-started",
|
|
42
|
-
MOVIE_SHARE_STOPPED = "movie-share-stopped"
|
|
43
|
+
MOVIE_SHARE_STOPPED = "movie-share-stopped",
|
|
44
|
+
ROOM_UPDATED = "room-updated",
|
|
45
|
+
ROOMS_UPDATED = "rooms-updated",
|
|
46
|
+
ROOM_PARTICIPANTS_UPDATED = "room-participants-updated",
|
|
47
|
+
FEATURES_PER_ROLE_CHANGED = "features-per-role-changed",
|
|
48
|
+
ASR_STARTED = "asr-started",
|
|
49
|
+
ASR_STOPPED = "asr-stopped"
|
|
43
50
|
}
|
|
44
51
|
export default SignalingNotification;
|
package/package.json
CHANGED
package/static/ApiTransport.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare function init(): void;
|
|
2
2
|
export declare function sendBeakon(method: string, params?: {
|
|
3
3
|
[key: string]: any;
|
|
4
|
-
}, noSession?: boolean): void
|
|
4
|
+
}, noSession?: boolean): Promise<void>;
|
|
5
5
|
export declare function request(method: string, params?: {
|
|
6
6
|
[key: string]: any;
|
|
7
7
|
}, noSession?: boolean): Promise<unknown>;
|
package/static/External.d.ts
CHANGED
|
@@ -6,13 +6,17 @@ import ChatRoomEventType from '../enums/ChatRoomEventType';
|
|
|
6
6
|
import ConversationOption from '../enums/ConversationOption';
|
|
7
7
|
import FatalError from '../enums/FatalError';
|
|
8
8
|
import MediaOption from '../enums/MediaOption';
|
|
9
|
+
import RoomsEventType from '../enums/RoomsEventType';
|
|
9
10
|
import UserRole from '../enums/UserRole';
|
|
11
|
+
import { IFeaturesPerRole } from '../types/ConversationFeature';
|
|
10
12
|
import { ExternalId, ExternalParticipant, ExternalParticipantId, ExternalParticipantListChunk, ExternalParticipantListMarkers } from '../types/ExternalId';
|
|
13
|
+
import { IFeedbackExternal } from '../types/Feedback';
|
|
11
14
|
import MediaModifiers from '../types/MediaModifiers';
|
|
12
15
|
import MediaSettings from '../types/MediaSettings';
|
|
13
|
-
import { ISharedMovieInfo, ISharedMovieState, ISharedMovieStoppedInfo } from '../types/MovieShare';
|
|
16
|
+
import { IOnRemoteMovieData, ISharedMovieInfo, ISharedMovieState, ISharedMovieStoppedInfo } from '../types/MovieShare';
|
|
14
17
|
import MuteStates from '../types/MuteStates';
|
|
15
18
|
import { ParticipantStateMapped } from '../types/Participant';
|
|
19
|
+
import { Room, RoomParticipantUpdate, Rooms, RoomsUpdate } from '../types/Room';
|
|
16
20
|
import { DebugMessageType } from './Debug';
|
|
17
21
|
import { JSONObject } from './Json';
|
|
18
22
|
/**
|
|
@@ -73,19 +77,17 @@ declare namespace External {
|
|
|
73
77
|
* Если сервер закончил стримить собеседника, вместо стрима будет передан null
|
|
74
78
|
*
|
|
75
79
|
* @param userId
|
|
76
|
-
* @param
|
|
77
|
-
* @param stream
|
|
80
|
+
* @param data
|
|
78
81
|
*/
|
|
79
|
-
function onRemoteLive(userId: ExternalParticipantId,
|
|
82
|
+
function onRemoteLive(userId: ExternalParticipantId, data: IOnRemoteMovieData): void;
|
|
80
83
|
/**
|
|
81
84
|
* Получен собственный стрим лайв.
|
|
82
85
|
* Если сервер закончил стримить собеседника, вместо стрима будет передан null
|
|
83
86
|
*
|
|
84
87
|
* @param userId
|
|
85
|
-
* @param
|
|
86
|
-
* @param stream
|
|
88
|
+
* @param data
|
|
87
89
|
*/
|
|
88
|
-
function onLocalLive(userId: ExternalParticipantId,
|
|
90
|
+
function onLocalLive(userId: ExternalParticipantId, data: IOnRemoteMovieData): void;
|
|
89
91
|
/**
|
|
90
92
|
* Получено обновление стрима или лайва от собеседника.
|
|
91
93
|
*
|
|
@@ -115,8 +117,9 @@ declare namespace External {
|
|
|
115
117
|
* @param mediaModifiers Текущие настройки пользовательского медиа
|
|
116
118
|
* @param muteStates Состояние устройств при входе в звонок
|
|
117
119
|
* @param participants Список участников звонка (при `Params.batchParticipantsOnStart = true`)
|
|
120
|
+
* @param rooms Список комнат в звонке
|
|
118
121
|
*/
|
|
119
|
-
function onConversation(userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants?: ExternalParticipant[]): void;
|
|
122
|
+
function onConversation(userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants?: ExternalParticipant[], rooms?: Rooms): void;
|
|
120
123
|
/**
|
|
121
124
|
* Постраничные данные про участников при начале звонка
|
|
122
125
|
* @param chunk
|
|
@@ -246,8 +249,10 @@ declare namespace External {
|
|
|
246
249
|
* @param unmute Разрешение включить устройство
|
|
247
250
|
* @param userId Пользователь, для которого изменились разрешения или `null` для текущего пользователя
|
|
248
251
|
* @param adminId Пользователь, который изменил разрешения
|
|
252
|
+
* @param stateUpdated Если `true`, значит глобальное/персональное состояние изменилось и поля `muteStates`/`unmuteOptions` содержат обновления, если `false`, значит, эти поля не имеют значения
|
|
253
|
+
* @param requestedMedia Какие устройства попросили влючить участника
|
|
249
254
|
*/
|
|
250
|
-
function onMuteStates(muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll?: boolean, unmute?: boolean, userId?: ExternalParticipantId | null, adminId?: ExternalParticipantId | null): void;
|
|
255
|
+
function onMuteStates(muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll?: boolean, unmute?: boolean, userId?: ExternalParticipantId | null, adminId?: ExternalParticipantId | null, stateUpdated?: boolean, requestedMedia?: MediaOption[]): void;
|
|
251
256
|
/**
|
|
252
257
|
* Изменились роли собеседника в звонке
|
|
253
258
|
*
|
|
@@ -412,5 +417,34 @@ declare namespace External {
|
|
|
412
417
|
* @param joinLink токен присоединения к звонку
|
|
413
418
|
*/
|
|
414
419
|
function onJoinLinkChanged(joinLink: string): void;
|
|
420
|
+
/**
|
|
421
|
+
*/
|
|
422
|
+
function onRoomsUpdated(updates: Partial<Record<RoomsEventType, RoomsUpdate>>): void;
|
|
423
|
+
/**
|
|
424
|
+
*/
|
|
425
|
+
function onRoomUpdated(eventTypes: RoomsEventType[], roomId: number, room: Room | null, deactivate: boolean | null): void;
|
|
426
|
+
/**
|
|
427
|
+
*/
|
|
428
|
+
function onRoomParticipantsUpdated(update: RoomParticipantUpdate): void;
|
|
429
|
+
/**
|
|
430
|
+
* Получена новая реакция
|
|
431
|
+
*/
|
|
432
|
+
function onFeedback(feedback: IFeedbackExternal[]): void;
|
|
433
|
+
/**
|
|
434
|
+
* Изменилось состояние пермиссий фич в звонке
|
|
435
|
+
*
|
|
436
|
+
* @param featuresPerRole Информация о доступных фичах по ролям
|
|
437
|
+
*/
|
|
438
|
+
function onFeaturesPerRoleChanged(featuresPerRole: IFeaturesPerRole): void;
|
|
439
|
+
/**
|
|
440
|
+
* Начата текстовая расшифровка звонка
|
|
441
|
+
* @param initiatorId Id пользователя, запустившего расшифровку звонка
|
|
442
|
+
* @param movieId Id расшифровки
|
|
443
|
+
*/
|
|
444
|
+
function onAsrStarted(initiatorId: ExternalParticipantId, movieId: number): void;
|
|
445
|
+
/**
|
|
446
|
+
* Закончена текстовая расшифровка звонка
|
|
447
|
+
*/
|
|
448
|
+
function onAsrStopped(): void;
|
|
415
449
|
}
|
|
416
450
|
export default External;
|
package/static/Params.d.ts
CHANGED
|
@@ -6,14 +6,18 @@ import ChatRoomEventType from '../enums/ChatRoomEventType';
|
|
|
6
6
|
import ConversationOption from '../enums/ConversationOption';
|
|
7
7
|
import FatalError from '../enums/FatalError';
|
|
8
8
|
import MediaOption from '../enums/MediaOption';
|
|
9
|
+
import RoomsEventType from '../enums/RoomsEventType';
|
|
9
10
|
import UserRole from '../enums/UserRole';
|
|
11
|
+
import { IFeaturesPerRole } from '../types/ConversationFeature';
|
|
10
12
|
import { ExternalId, ExternalParticipant, ExternalParticipantId, ExternalParticipantListChunk, ExternalParticipantListMarkers } from '../types/ExternalId';
|
|
13
|
+
import { IFeedbackExternal } from '../types/Feedback';
|
|
11
14
|
import IceServer from '../types/IceServer';
|
|
12
15
|
import MediaModifiers from '../types/MediaModifiers';
|
|
13
16
|
import MediaSettings from '../types/MediaSettings';
|
|
14
|
-
import { ISharedMovieInfo, ISharedMovieState, ISharedMovieStoppedInfo } from '../types/MovieShare';
|
|
17
|
+
import { IOnRemoteMovieData, ISharedMovieInfo, ISharedMovieState, ISharedMovieStoppedInfo } from '../types/MovieShare';
|
|
15
18
|
import MuteStates from '../types/MuteStates';
|
|
16
19
|
import { ParticipantStateMapped } from '../types/Participant';
|
|
20
|
+
import { Room, RoomParticipantUpdate, Rooms, RoomsUpdate } from '../types/Room';
|
|
17
21
|
import AuthData from './AuthData';
|
|
18
22
|
import { DebugMessageType } from './Debug';
|
|
19
23
|
import { ParticipantStatus } from './External';
|
|
@@ -25,6 +29,7 @@ import { FacingMode } from './WebRTCUtils';
|
|
|
25
29
|
export declare type ParamsObject = {
|
|
26
30
|
platform: string;
|
|
27
31
|
clientType: string;
|
|
32
|
+
externalUserType: string;
|
|
28
33
|
device: string;
|
|
29
34
|
/**
|
|
30
35
|
* API ключ приложения
|
|
@@ -44,6 +49,11 @@ export declare type ParamsObject = {
|
|
|
44
49
|
* Домен, чтобы попасть в тестовую группу. Для тестирования экспериментальных улучшений существуют отдельные сервера, чтобы собирать фидбек и уже потом раскатывать на всех юзеров. Если передать сюда специальный ключ, то конверсейшн будет обрабатываться на таком сервере.
|
|
45
50
|
*/
|
|
46
51
|
domain: string;
|
|
52
|
+
/**
|
|
53
|
+
* Домен, куда будет ходить Ok api за данными
|
|
54
|
+
* @hidden
|
|
55
|
+
*/
|
|
56
|
+
externalDomain: string;
|
|
47
57
|
iceServers: IceServer[];
|
|
48
58
|
wssBase: string;
|
|
49
59
|
wssToken: string;
|
|
@@ -187,6 +197,7 @@ export declare type ParamsObject = {
|
|
|
187
197
|
* Работает только при приёме экрана через дата-канал.
|
|
188
198
|
*
|
|
189
199
|
* _По умолчанию: `true`_
|
|
200
|
+
* @deprecated
|
|
190
201
|
*/
|
|
191
202
|
producerScreenTrack: boolean;
|
|
192
203
|
/**
|
|
@@ -194,12 +205,19 @@ export declare type ParamsObject = {
|
|
|
194
205
|
* Работает только при отправке экрана через дата-канал.
|
|
195
206
|
*
|
|
196
207
|
* _По умолчанию: `true`_
|
|
208
|
+
* @deprecated
|
|
197
209
|
*/
|
|
198
210
|
consumerScreenTrack: boolean;
|
|
199
211
|
producerNotificationDataChannel: boolean;
|
|
200
212
|
producerCommandDataChannel: boolean;
|
|
201
213
|
consumerScreenDataChannel: boolean;
|
|
202
214
|
producerScreenDataChannel: boolean;
|
|
215
|
+
/**
|
|
216
|
+
* Размер пакета для отправки трансляции экрана в датаканал в байтах.
|
|
217
|
+
* Максимальный размер пакета 65536 bytes в хроме, но по стандарту лучше максимум 16 Кб.
|
|
218
|
+
* @hidden
|
|
219
|
+
*/
|
|
220
|
+
consumerScreenDataChannelPacketSize: number;
|
|
203
221
|
screenShareWebmBuilder: boolean;
|
|
204
222
|
noiseSuppression: boolean;
|
|
205
223
|
/**
|
|
@@ -223,6 +241,10 @@ export declare type ParamsObject = {
|
|
|
223
241
|
* Включить постраничный вывод участников. Работает только если включено videoTracksCount (слоты)
|
|
224
242
|
*/
|
|
225
243
|
useParticipantListChunk: boolean;
|
|
244
|
+
/**
|
|
245
|
+
* Включить комнаты
|
|
246
|
+
*/
|
|
247
|
+
useRooms: boolean;
|
|
226
248
|
/**
|
|
227
249
|
* Индекс участника для первого chunk'а который придет при установки соединения с сервером
|
|
228
250
|
*/
|
|
@@ -240,6 +262,11 @@ export declare type ParamsObject = {
|
|
|
240
262
|
* Включать RED-extension (redundancy) для p2p звонков
|
|
241
263
|
*/
|
|
242
264
|
p2pAudioRed: boolean;
|
|
265
|
+
/**
|
|
266
|
+
* Добавлять флаг spsPpsIdrInKeyframe для h264 кодека. В результате ключевые фреймы без sps и pps
|
|
267
|
+
* не используются как ключевые. Решает проблему с артефактами на видео в случае потерь пакетов.
|
|
268
|
+
*/
|
|
269
|
+
h264spsPpsIdrInKeyframe: boolean;
|
|
243
270
|
/**
|
|
244
271
|
* Получать список участников звонка третьим аргументом в `onConversation`
|
|
245
272
|
* @hidden
|
|
@@ -263,6 +290,11 @@ export declare type ParamsObject = {
|
|
|
263
290
|
* @hidden
|
|
264
291
|
*/
|
|
265
292
|
preserveAudioTracks: boolean;
|
|
293
|
+
/**
|
|
294
|
+
* Использовать congestion control для шаринга
|
|
295
|
+
* @hidden
|
|
296
|
+
*/
|
|
297
|
+
screenShareCongestionControl: boolean;
|
|
266
298
|
/**
|
|
267
299
|
* Получен локальный стрим с камеры/микрофона
|
|
268
300
|
*/
|
|
@@ -293,12 +325,12 @@ export declare type ParamsObject = {
|
|
|
293
325
|
* Получен стрим трансляция или мувик от собеседника.
|
|
294
326
|
* Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
|
|
295
327
|
*/
|
|
296
|
-
onRemoteLive?: (userId: ExternalParticipantId,
|
|
328
|
+
onRemoteLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData) => void;
|
|
297
329
|
/**
|
|
298
330
|
* Получен собственный стрим трансляция или мувик.
|
|
299
331
|
* Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
|
|
300
332
|
*/
|
|
301
|
-
onLocalLive?: (userId: ExternalParticipantId,
|
|
333
|
+
onLocalLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData) => void;
|
|
302
334
|
/**
|
|
303
335
|
* Получено обновление стрима или лайва от собеседника.
|
|
304
336
|
*/
|
|
@@ -310,7 +342,7 @@ export declare type ParamsObject = {
|
|
|
310
342
|
/**
|
|
311
343
|
* Начат звонок
|
|
312
344
|
*/
|
|
313
|
-
onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants?: ExternalParticipant[]) => void;
|
|
345
|
+
onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants?: ExternalParticipant[], rooms?: Rooms) => void;
|
|
314
346
|
/**
|
|
315
347
|
* Начальный список участников для постраничного звонка
|
|
316
348
|
*/
|
|
@@ -383,7 +415,7 @@ export declare type ParamsObject = {
|
|
|
383
415
|
/**
|
|
384
416
|
* Изменились состояния устройств пользователя или разрешения включать камеру/микрофон
|
|
385
417
|
*/
|
|
386
|
-
onMuteStates?: (muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll: boolean, unmute: boolean, userId: ExternalParticipantId | null, adminId: ExternalParticipantId | null) => void;
|
|
418
|
+
onMuteStates?: (muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll: boolean, unmute: boolean, userId: ExternalParticipantId | null, adminId: ExternalParticipantId | null, stateUpdated?: boolean, requestedMedia?: MediaOption[]) => void;
|
|
387
419
|
/**
|
|
388
420
|
* Изменились роли собеседника в звонке
|
|
389
421
|
*/
|
|
@@ -504,6 +536,39 @@ export declare type ParamsObject = {
|
|
|
504
536
|
* @param joinLink токен присоединения к звонку
|
|
505
537
|
*/
|
|
506
538
|
onJoinLinkChanged?: (joinLink: string) => void;
|
|
539
|
+
/**
|
|
540
|
+
* Получено обновление списка комнат
|
|
541
|
+
* @param updates список обновлений по комнатам
|
|
542
|
+
*/
|
|
543
|
+
onRoomsUpdated?: (updates: Partial<Record<RoomsEventType, RoomsUpdate>>) => void;
|
|
544
|
+
/**
|
|
545
|
+
* Получено обновление комнаты
|
|
546
|
+
* @param eventTypes список событий
|
|
547
|
+
* @param roomId номер комнаты
|
|
548
|
+
* @param room комната
|
|
549
|
+
*/
|
|
550
|
+
onRoomUpdated?: (eventTypes: RoomsEventType[], roomId: number, room: Room | null, deactivate: boolean | null) => void;
|
|
551
|
+
/**
|
|
552
|
+
* Получение обновление списка участников в комнате
|
|
553
|
+
* @param update обновление списка участников
|
|
554
|
+
*/
|
|
555
|
+
onRoomParticipantsUpdated?: (update: RoomParticipantUpdate) => void;
|
|
556
|
+
/**
|
|
557
|
+
* Получены новые реакции в звонке
|
|
558
|
+
* @param feedback массив с реакциями
|
|
559
|
+
*/
|
|
560
|
+
onFeedback?: (feedback: IFeedbackExternal[]) => void;
|
|
561
|
+
/**
|
|
562
|
+
* Включать capability c аудио шарой
|
|
563
|
+
*/
|
|
564
|
+
audioShareCapabilityEnabled: boolean;
|
|
565
|
+
/**
|
|
566
|
+
* Изменился список ролей, которым доступны ConversationFeatures
|
|
567
|
+
*
|
|
568
|
+
* @param featuresPerRole Объект вида ключ: ConversationFeature = значение: UserRole[]
|
|
569
|
+
* (если ключ фичи отсутствует, или в ролях пустой массив, считаем фичу доступной для всех пользователей)
|
|
570
|
+
*/
|
|
571
|
+
onFeaturesPerRoleChanged?: (featuresPerRole: IFeaturesPerRole) => void;
|
|
507
572
|
};
|
|
508
573
|
export default abstract class Params {
|
|
509
574
|
private static _params;
|
|
@@ -520,6 +585,8 @@ export default abstract class Params {
|
|
|
520
585
|
static set platform(value: string);
|
|
521
586
|
static get clientType(): string;
|
|
522
587
|
static set clientType(value: string);
|
|
588
|
+
static get externalUserType(): string;
|
|
589
|
+
static set externalUserType(value: string);
|
|
523
590
|
static get device(): string;
|
|
524
591
|
static get apiKey(): string;
|
|
525
592
|
static get apiEnv(): string;
|
|
@@ -529,6 +596,7 @@ export default abstract class Params {
|
|
|
529
596
|
static get anonymToken(): string;
|
|
530
597
|
static set anonymToken(value: string);
|
|
531
598
|
static get domain(): string;
|
|
599
|
+
static get externalDomain(): string;
|
|
532
600
|
static get iceServers(): IceServer[];
|
|
533
601
|
static set iceServers(value: IceServer[]);
|
|
534
602
|
static get wssBase(): string;
|
|
@@ -578,6 +646,7 @@ export default abstract class Params {
|
|
|
578
646
|
static get producerCommandDataChannel(): boolean;
|
|
579
647
|
static get consumerScreenDataChannel(): boolean;
|
|
580
648
|
static get producerScreenDataChannel(): boolean;
|
|
649
|
+
static get consumerScreenDataChannelPacketSize(): number;
|
|
581
650
|
static get screenShareWebmBuilder(): boolean;
|
|
582
651
|
static get noiseSuppression(): boolean;
|
|
583
652
|
static set noiseSuppression(value: boolean);
|
|
@@ -592,12 +661,16 @@ export default abstract class Params {
|
|
|
592
661
|
static get breakVideoPayloadTypes(): boolean;
|
|
593
662
|
static get filteredMessages(): boolean;
|
|
594
663
|
static get useParticipantListChunk(): boolean;
|
|
664
|
+
static get useRooms(): boolean;
|
|
595
665
|
static get participantListChunkInitIndex(): number;
|
|
596
666
|
static get participantListChunkInitCount(): number;
|
|
597
667
|
static get serverAudioRed(): boolean;
|
|
598
668
|
static get p2pAudioRed(): boolean;
|
|
669
|
+
static get h264spsPpsIdrInKeyframe(): boolean;
|
|
599
670
|
static get batchParticipantsOnStart(): boolean;
|
|
600
671
|
static get filterObservers(): boolean;
|
|
601
672
|
static get muteMode(): boolean;
|
|
602
673
|
static get preserveAudioTracks(): boolean;
|
|
674
|
+
static get audioShareCapabilityEnabled(): boolean;
|
|
675
|
+
static get screenShareCongestionControl(): boolean;
|
|
603
676
|
}
|
package/static/Utils.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import VideoSettings from '../types/VideoSettings';
|
|
|
6
6
|
export declare const PARAMETERS_SEPARATOR = ":";
|
|
7
7
|
export declare const DEVICE_IDX_PARAMETER = "d";
|
|
8
8
|
declare namespace Utils {
|
|
9
|
-
function patchSDP(sdp: string, preferH264: boolean, brokenH264: boolean, preferVP9: boolean, isAudioNack?: boolean, preferRed?: boolean): string;
|
|
9
|
+
function patchSDP(sdp: string, preferH264: boolean, brokenH264: boolean, preferVP9: boolean, h264spsPpsIdrInKeyframe: boolean, isAudioNack?: boolean, preferRed?: boolean): string;
|
|
10
10
|
function getPeerIdString(peerId: SignalingMessage.PeerId): string;
|
|
11
11
|
function comparePeerId(peerId1: SignalingMessage.PeerId, peerId2: SignalingMessage.PeerId): boolean;
|
|
12
12
|
function getPeerConnectionHostInfo(pc: RTCPeerConnection): Promise<any>;
|
|
@@ -60,5 +60,9 @@ declare namespace Utils {
|
|
|
60
60
|
* https://stash.odkl.ru/projects/ODKL/repos/odnoklassniki-webrtc/browse/src/main/java/one/webrtc/domain/conversation/ParticipantIndex.java#67-78
|
|
61
61
|
*/
|
|
62
62
|
function participantMarkerCompare(marker1: ExternalParticipantListMarker | undefined, marker2: ExternalParticipantListMarker | undefined): number;
|
|
63
|
+
/** убирает все ключи со значением `V` на 1 уровне */
|
|
64
|
+
function objectFilterOutValues<T extends Record<string, V>, V = unknown>(obj: T, value?: V | V[]): Partial<T>;
|
|
65
|
+
function objectReduce<R, T extends Object>(obj: T, callback: (acc: R, value: T[keyof T], key: keyof T) => R, initialValue: R): R;
|
|
66
|
+
const setImmediate: (fn: VoidFunction) => VoidFunction;
|
|
63
67
|
}
|
|
64
68
|
export default Utils;
|
package/static/WebRTCUtils.d.ts
CHANGED
|
@@ -66,7 +66,7 @@ declare namespace WebRTCUtils {
|
|
|
66
66
|
/**
|
|
67
67
|
* Запрашивает трансляцию экрана пользователя
|
|
68
68
|
*/
|
|
69
|
-
function getScreenMedia(): Promise<MediaStream>;
|
|
69
|
+
function getScreenMedia(withAudioShare: boolean): Promise<MediaStream>;
|
|
70
70
|
/**
|
|
71
71
|
* Запрашивает камеру пользователя
|
|
72
72
|
*
|
|
@@ -146,5 +146,6 @@ declare namespace WebRTCUtils {
|
|
|
146
146
|
* Возвращает подверсию браузера (если она есть)
|
|
147
147
|
*/
|
|
148
148
|
function browserSubVersion(): string;
|
|
149
|
+
function isAudioShareSupported(): boolean;
|
|
149
150
|
}
|
|
150
151
|
export default WebRTCUtils;
|
package/types/Asr.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import MediaOption from '../enums/MediaOption';
|
|
2
|
+
import MediaSettings from './MediaSettings';
|
|
3
|
+
import { Participant } from './Participant';
|
|
4
|
+
export interface IProcessMuteStateParams {
|
|
5
|
+
mediaOptions?: MediaOption[];
|
|
6
|
+
muteAll?: boolean;
|
|
7
|
+
unmute?: boolean;
|
|
8
|
+
serverSettings?: MediaSettings | null;
|
|
9
|
+
admin?: Participant | null;
|
|
10
|
+
stateUpdated?: boolean;
|
|
11
|
+
requestedMedia?: MediaOption[];
|
|
12
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CompositeUserId } from './Participant';
|
|
2
|
+
import { ExternalParticipantId } from './ExternalId';
|
|
3
|
+
interface IFeedbackItem {
|
|
4
|
+
participantId: CompositeUserId;
|
|
5
|
+
/** event timestamps for this participant, chronologically */
|
|
6
|
+
times: number[];
|
|
7
|
+
}
|
|
8
|
+
export interface IFeedbackItemExternal extends Omit<IFeedbackItem, 'participantId'> {
|
|
9
|
+
participantId: ExternalParticipantId;
|
|
10
|
+
}
|
|
11
|
+
export interface IFeedback {
|
|
12
|
+
/** feedback ID; key values should be negotiated by clients themselves, like in ParticipantState, and have just the same restrictions; on backend the values of these keys are not bound in any way to those in ParticipantState */
|
|
13
|
+
key: string;
|
|
14
|
+
/** total amount of reactions of this type from the start of this call */
|
|
15
|
+
totalCount: number;
|
|
16
|
+
/** list of items containing initiator & all related data, if any */
|
|
17
|
+
items: IFeedbackItem[];
|
|
18
|
+
}
|
|
19
|
+
export interface IFeedbackExternal extends Omit<IFeedback, 'items'> {
|
|
20
|
+
items: IFeedbackItemExternal[];
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Layout, RequestKeyFrame, StopStream } from './ParticipantLayout';
|
|
2
|
+
export declare const REQUEST_KEY_FRAME_CODE = "kf";
|
|
3
|
+
export declare function isStopStreaming(layout: Layout | StopStream | RequestKeyFrame): layout is StopStream;
|
|
4
|
+
export declare function isRequestKeyFrame(layout: Layout | StopStream | RequestKeyFrame): layout is RequestKeyFrame;
|
|
5
|
+
export declare function layoutToString(layout: Layout | StopStream | RequestKeyFrame): string;
|
package/types/MediaSettings.d.ts
CHANGED
|
@@ -14,6 +14,10 @@ export declare type MediaSettings = {
|
|
|
14
14
|
* Включена ли трансляция экрана
|
|
15
15
|
*/
|
|
16
16
|
isScreenSharingEnabled: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Включена ли трансляция звука
|
|
19
|
+
*/
|
|
20
|
+
isAudioSharingEnabled: boolean;
|
|
17
21
|
videoStreams: VideoStreamInfo[];
|
|
18
22
|
};
|
|
19
23
|
export declare type VideoStreamInfo = {
|
package/types/MovieShare.d.ts
CHANGED
|
@@ -1,16 +1,41 @@
|
|
|
1
|
+
import LiveStatus from '../enums/LiveStatus';
|
|
1
2
|
import { OkUserId, CompositeUserId } from './Participant';
|
|
2
3
|
import { MediaType } from './ParticipantStreamDescription';
|
|
4
|
+
export interface IMoviePreview {
|
|
5
|
+
url: string;
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
}
|
|
3
9
|
export interface IAddMovieParams {
|
|
4
10
|
movieId: string;
|
|
5
11
|
gain?: number;
|
|
12
|
+
metadata?: {
|
|
13
|
+
title?: string;
|
|
14
|
+
thumbnails?: IMoviePreview[];
|
|
15
|
+
};
|
|
6
16
|
}
|
|
7
|
-
export declare type ISharedMovieStateResponse = [
|
|
17
|
+
export declare type ISharedMovieStateResponse = [
|
|
18
|
+
number,
|
|
19
|
+
number,
|
|
20
|
+
boolean,
|
|
21
|
+
number,
|
|
22
|
+
boolean,
|
|
23
|
+
number
|
|
24
|
+
];
|
|
8
25
|
export interface ISharedMovieState {
|
|
9
26
|
participantId: CompositeUserId;
|
|
10
27
|
gain?: number;
|
|
11
28
|
pause?: boolean;
|
|
12
29
|
offset?: number;
|
|
13
|
-
|
|
30
|
+
mute?: boolean;
|
|
31
|
+
liveStatus?: LiveStatus;
|
|
32
|
+
}
|
|
33
|
+
export interface IUpdateMovieData {
|
|
34
|
+
movieId: string;
|
|
35
|
+
gain?: number;
|
|
36
|
+
pause?: boolean;
|
|
37
|
+
offset?: number;
|
|
38
|
+
mute?: boolean;
|
|
14
39
|
}
|
|
15
40
|
export interface ISharedMovieInfo {
|
|
16
41
|
movieId: OkUserId;
|
|
@@ -19,14 +44,15 @@ export interface ISharedMovieInfo {
|
|
|
19
44
|
source: MediaType;
|
|
20
45
|
externalMovieId: string;
|
|
21
46
|
duration: number;
|
|
22
|
-
|
|
23
|
-
thumbnailMedium: string;
|
|
24
|
-
thumbnailBig: string;
|
|
25
|
-
thumbnailHigh: string;
|
|
26
|
-
thumbnailHd: string;
|
|
47
|
+
thumbnails: IMoviePreview[];
|
|
27
48
|
}
|
|
28
49
|
export interface ISharedMovieStoppedInfo {
|
|
29
50
|
movieId: OkUserId;
|
|
30
51
|
initiatorId: CompositeUserId;
|
|
31
52
|
source: MediaType;
|
|
32
53
|
}
|
|
54
|
+
export interface IOnRemoteMovieData {
|
|
55
|
+
streamName: string;
|
|
56
|
+
stream: MediaStream | null;
|
|
57
|
+
mediaType: MediaType;
|
|
58
|
+
}
|
package/types/Participant.d.ts
CHANGED
|
@@ -31,10 +31,16 @@ export declare type StopStream = {
|
|
|
31
31
|
*/
|
|
32
32
|
stopStream: true;
|
|
33
33
|
};
|
|
34
|
+
/**
|
|
35
|
+
* Request key frame from source. Should not be called often, negatively impacts video quality.
|
|
36
|
+
*/
|
|
37
|
+
export declare type RequestKeyFrame = {
|
|
38
|
+
keyFrameRequested: true;
|
|
39
|
+
};
|
|
34
40
|
/**
|
|
35
41
|
* Лейаут собеседника в звонке
|
|
36
42
|
*/
|
|
37
|
-
export declare type ParticipantLayout = (Layout | StopStream) & {
|
|
43
|
+
export declare type ParticipantLayout = (Layout | StopStream | RequestKeyFrame) & {
|
|
38
44
|
/**
|
|
39
45
|
* Внешний ID пользователя
|
|
40
46
|
*/
|
|
@@ -10,4 +10,6 @@ export interface ParticipantListChunkParameters {
|
|
|
10
10
|
backward?: boolean;
|
|
11
11
|
/** If true then resulting chunk will start from Participant with specified marker, if such Participant (still) exists */
|
|
12
12
|
includeMarker?: boolean;
|
|
13
|
+
/** optional, id of the room to get chunk for, main call if unspecified */
|
|
14
|
+
roomId?: number;
|
|
13
15
|
}
|
|
@@ -6,7 +6,8 @@ export declare enum MediaType {
|
|
|
6
6
|
CAMERA = "CAMERA",
|
|
7
7
|
SCREEN = "SCREEN",
|
|
8
8
|
STREAM = "STREAM",
|
|
9
|
-
MOVIE = "MOVIE"
|
|
9
|
+
MOVIE = "MOVIE",
|
|
10
|
+
AUDIOSHARE = "AUDIOSHARE"
|
|
10
11
|
}
|
|
11
12
|
export declare function serializeParticipantStreamDescription(description: ParticipantStreamDescription): string;
|
|
12
13
|
export declare function parseParticipantStreamDescription(descriptionString: string): ParticipantStreamDescription;
|
package/types/Room.d.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { ExternalParticipant, ExternalParticipantId, ExternalParticipantListChunk } from './ExternalId';
|
|
2
|
+
import { ParticipantListMarkers } from './Participant';
|
|
3
|
+
export interface Room {
|
|
4
|
+
id: number;
|
|
5
|
+
/**
|
|
6
|
+
* name of this room
|
|
7
|
+
*/
|
|
8
|
+
name: string;
|
|
9
|
+
/**
|
|
10
|
+
* count of participants (read/write, optional)
|
|
11
|
+
*/
|
|
12
|
+
participantCount: number;
|
|
13
|
+
/**
|
|
14
|
+
* ids of all participants (read/write, optional)
|
|
15
|
+
*/
|
|
16
|
+
participantIds: ExternalParticipantId[];
|
|
17
|
+
/**
|
|
18
|
+
* ids of participants to be added to this room (read/write, optional)
|
|
19
|
+
*/
|
|
20
|
+
addParticipantIds?: ExternalParticipantId[];
|
|
21
|
+
/**
|
|
22
|
+
* ids of participants to be removed from this room (read/write, optional)
|
|
23
|
+
*/
|
|
24
|
+
removeParticipantIds?: ExternalParticipantId[];
|
|
25
|
+
/**
|
|
26
|
+
* if participant requested then contains first chunk of participants in this rooms
|
|
27
|
+
* (if client fails to support chunks, then contains all participant in this room)
|
|
28
|
+
* (read, optional)
|
|
29
|
+
*/
|
|
30
|
+
participants?: ExternalParticipantListChunk;
|
|
31
|
+
/**
|
|
32
|
+
* if this room is active (read/write, optional)
|
|
33
|
+
*/
|
|
34
|
+
active?: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Initial rooms state
|
|
38
|
+
*/
|
|
39
|
+
export interface Rooms {
|
|
40
|
+
rooms: Room[];
|
|
41
|
+
/**
|
|
42
|
+
* current room id of participant. if null then the partipant is in the main call
|
|
43
|
+
*/
|
|
44
|
+
roomId?: number;
|
|
45
|
+
}
|
|
46
|
+
export interface RoomsUpdate {
|
|
47
|
+
rooms?: Room[];
|
|
48
|
+
roomIds?: number[];
|
|
49
|
+
deactivated?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface RoomParticipantUpdate {
|
|
52
|
+
roomId: number;
|
|
53
|
+
/**
|
|
54
|
+
* total number of participants in the room
|
|
55
|
+
*/
|
|
56
|
+
participantCount: number;
|
|
57
|
+
/**
|
|
58
|
+
* ids of added participants, always present (if any) so participants would be able
|
|
59
|
+
* to identify their presence in particular room
|
|
60
|
+
*/
|
|
61
|
+
addedParticipantIds?: ExternalParticipantId[];
|
|
62
|
+
/**
|
|
63
|
+
* optional, data for added participants
|
|
64
|
+
*/
|
|
65
|
+
addedParticipants?: ExternalParticipant[];
|
|
66
|
+
/**
|
|
67
|
+
* optional, depending on the context may contain either markers
|
|
68
|
+
* for all (sorted) lists available or be empty (if client fails to support chunked participants)
|
|
69
|
+
*/
|
|
70
|
+
removedParticipantMarkers?: ParticipantListMarkers[];
|
|
71
|
+
removedParticipantIds?: ExternalParticipantId[];
|
|
72
|
+
}
|