@vkontakte/calls-sdk 2.8.5-dev.f13957b5.0 → 2.8.5-dev.f1e8c4ec.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 +23 -7
- package/abstract/BaseApi.d.ts +2 -1
- package/calls-sdk.cjs.js +8 -8
- package/calls-sdk.esm.js +8 -8
- package/classes/Conversation.d.ts +10 -3
- package/classes/HangupReason.d.ts +13 -0
- package/classes/Logger.d.ts +3 -0
- package/classes/MediaSource.d.ts +13 -5
- package/classes/codec/IDecoder.d.ts +1 -1
- package/classes/codec/LibVPxDecoder.d.ts +1 -1
- package/classes/codec/LibVPxEncoder.d.ts +0 -3
- package/classes/codec/WebCodecsDecoder.d.ts +1 -1
- package/classes/transport/DirectStatReporter.d.ts +2 -1
- package/classes/transport/DirectTransport.d.ts +5 -0
- package/default/Api.d.ts +2 -1
- package/enums/HangupType.d.ts +2 -1
- package/package.json +3 -2
- package/static/ApiTransport.d.ts +1 -1
- package/static/ConversationDebugLogger.d.ts +13 -0
- package/static/External.d.ts +4 -2
- package/static/Params.d.ts +41 -24
- package/static/Utils.d.ts +3 -3
- package/static/WebRTCUtils.d.ts +6 -2
- package/types/Conversation.d.ts +0 -2
- package/types/GetLogUploadUrlParams.d.ts +6 -0
- package/types/GetLogUploadUrlResponse.d.ts +3 -0
- package/types/Participant.d.ts +1 -0
- package/types/SignalingMessage.d.ts +5 -0
- package/types/VideoSettings.d.ts +1 -1
- package/utils/Conversation.d.ts +3 -1
- package/utils/DebugStorage.d.ts +6 -0
|
@@ -2,7 +2,7 @@ import type { IEffect } from '@vkontakte/calls-video-effects';
|
|
|
2
2
|
import type { RGBTuple } from '@vkontakte/calls-vmoji';
|
|
3
3
|
import BaseApi from '../abstract/BaseApi';
|
|
4
4
|
import BaseLogger from '../abstract/BaseLogger';
|
|
5
|
-
import
|
|
5
|
+
import { AddParticipantParams } from '../abstract/BaseSignaling';
|
|
6
6
|
import CallType from '../enums/CallType';
|
|
7
7
|
import ConversationFeature from '../enums/ConversationFeature';
|
|
8
8
|
import ConversationOption from '../enums/ConversationOption';
|
|
@@ -14,7 +14,7 @@ import { JSONObject } from '../static/Json';
|
|
|
14
14
|
import { IAsrStartParams, IAsrStopParams } from '../types/Asr';
|
|
15
15
|
import { AudienceModeHandsResponse } from '../types/AudienceMode';
|
|
16
16
|
import { ConversationData } from '../types/Conversation';
|
|
17
|
-
import { ExternalParticipant, ExternalParticipantId, ExternalParticipantListChunk, ExternalUserId } from '../types/ExternalId';
|
|
17
|
+
import { ExternalId, ExternalParticipant, ExternalParticipantId, ExternalParticipantListChunk, ExternalUserId } from '../types/ExternalId';
|
|
18
18
|
import MediaModifiers from '../types/MediaModifiers';
|
|
19
19
|
import { IVideoDimentions } from '../types/MediaSettings';
|
|
20
20
|
import { IAddMovieParams, IUpdateMovieData } from '../types/MovieShare';
|
|
@@ -62,7 +62,7 @@ export default class Conversation extends EventEmitter {
|
|
|
62
62
|
private _cooldownTimestampByStreamDescription;
|
|
63
63
|
private _cooldownQueueCleanupTimer;
|
|
64
64
|
private readonly _statFirstMediaReceived;
|
|
65
|
-
constructor(api: BaseApi,
|
|
65
|
+
constructor(api: BaseApi, externalLogger: BaseLogger | null);
|
|
66
66
|
static current(): Conversation | null;
|
|
67
67
|
static hangupAfterInit(): void;
|
|
68
68
|
static id(): string | null;
|
|
@@ -76,12 +76,15 @@ export default class Conversation extends EventEmitter {
|
|
|
76
76
|
payload?: string;
|
|
77
77
|
}): Promise<ConversationData>;
|
|
78
78
|
private _onJoinPart2;
|
|
79
|
+
private _extractExternalRooms;
|
|
80
|
+
private _extractExternalRoomsData;
|
|
79
81
|
onPush(conversationId: string, type?: UserType, peerId?: number): Promise<void>;
|
|
80
82
|
private _isInWaitingHall;
|
|
81
83
|
private _isRestricted;
|
|
82
84
|
private _isAudienceMode;
|
|
83
85
|
private _isAudienceModeListener;
|
|
84
86
|
private _acceptConcurrent;
|
|
87
|
+
private _getMainRoomParticipants;
|
|
85
88
|
accept(mediaOptions: MediaOption[]): Promise<ConversationData>;
|
|
86
89
|
decline(): Promise<void>;
|
|
87
90
|
hangup(): Promise<void>;
|
|
@@ -139,6 +142,7 @@ export default class Conversation extends EventEmitter {
|
|
|
139
142
|
* @param connection
|
|
140
143
|
*/
|
|
141
144
|
private _processRooms;
|
|
145
|
+
private _extractConnectionPersonalMuteStates;
|
|
142
146
|
/**
|
|
143
147
|
* Обрабатывает информацию о мьютах в основном и сессионных залах
|
|
144
148
|
* @param connection
|
|
@@ -228,6 +232,7 @@ export default class Conversation extends EventEmitter {
|
|
|
228
232
|
private _getWaitingTime;
|
|
229
233
|
private _isCallAdmin;
|
|
230
234
|
private _checkAdminRole;
|
|
235
|
+
private _isCalledState;
|
|
231
236
|
grantRoles(participantId: ParticipantId, roles: UserRole[], revoke: boolean): Promise<void>;
|
|
232
237
|
startAsr(params: IAsrStartParams): Promise<void>;
|
|
233
238
|
stopAsr(params?: IAsrStopParams): Promise<void>;
|
|
@@ -281,6 +286,8 @@ export default class Conversation extends EventEmitter {
|
|
|
281
286
|
effect?: IVideoDimentions;
|
|
282
287
|
}): Promise<void | undefined>;
|
|
283
288
|
videoEffect(effect: IEffect | null): Promise<void | undefined>;
|
|
289
|
+
audioEffect(effects: string[] | null, isPreset?: boolean): Promise<void | undefined>;
|
|
290
|
+
_convertExternalIdsToServerExternalIds(externalIds: ExternalId[]): SignalingMessage.ExternalId[];
|
|
284
291
|
getParticipants(parameters: IGetParticipantsParameters): Promise<ExternalParticipant[]>;
|
|
285
292
|
getParticipantListChunk(participantListChunkParameters: ParticipantListChunkParameters): Promise<ExternalParticipantListChunk>;
|
|
286
293
|
private _getInitialParticiapntListChunk;
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import FatalError from '../enums/FatalError';
|
|
2
2
|
import HangupType from '../enums/HangupType';
|
|
3
|
+
interface CustomError {
|
|
4
|
+
vchat_detailed_api_error: VChatDetailedApiError;
|
|
5
|
+
}
|
|
6
|
+
interface VChatDetailedApiError {
|
|
7
|
+
code: string;
|
|
8
|
+
error_id: string;
|
|
9
|
+
}
|
|
3
10
|
/**
|
|
4
11
|
* Сообщение о завершении звонка
|
|
5
12
|
*/
|
|
@@ -7,6 +14,7 @@ export interface HangupReasonData {
|
|
|
7
14
|
message?: string;
|
|
8
15
|
code?: number;
|
|
9
16
|
remote?: boolean;
|
|
17
|
+
custom_error?: CustomError;
|
|
10
18
|
}
|
|
11
19
|
/**
|
|
12
20
|
* Сообщение о завершении звонка
|
|
@@ -32,5 +40,10 @@ export default class HangupReason extends Error {
|
|
|
32
40
|
* Звонок завершился сервером
|
|
33
41
|
*/
|
|
34
42
|
readonly remote: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Новый формат ошибок
|
|
45
|
+
*/
|
|
46
|
+
readonly custom_error: CustomError | null;
|
|
35
47
|
constructor(type: HangupType | FatalError, data?: HangupReasonData);
|
|
36
48
|
}
|
|
49
|
+
export {};
|
package/classes/Logger.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export default class Logger extends BaseLogger {
|
|
|
9
9
|
private _batchedClientStats;
|
|
10
10
|
private _batchedClientEvents;
|
|
11
11
|
private _batchTimeout;
|
|
12
|
+
private _serverTimeDelta;
|
|
12
13
|
private static _instance;
|
|
13
14
|
constructor(api: BaseApi, externalLogger: BaseLogger | null);
|
|
14
15
|
private _sendLogItems;
|
|
@@ -17,6 +18,8 @@ export default class Logger extends BaseLogger {
|
|
|
17
18
|
private _sendBatch;
|
|
18
19
|
private _startTimeout;
|
|
19
20
|
private _stopTimeout;
|
|
21
|
+
private _calculateServerTimeDelta;
|
|
22
|
+
private _now;
|
|
20
23
|
log(name: Stat, value?: string, immediately?: boolean): void;
|
|
21
24
|
logCustom(name: string, params: Record<string, string | number>, immediately?: boolean): void;
|
|
22
25
|
logClientStats(data: Record<string, string | number | undefined | null>, immediately?: boolean): void;
|
package/classes/MediaSource.d.ts
CHANGED
|
@@ -18,6 +18,10 @@ export declare const enum MediaTrackKind {
|
|
|
18
18
|
'screen' = "screen",
|
|
19
19
|
'audioshare' = "audioshare"
|
|
20
20
|
}
|
|
21
|
+
interface AudioEffectParams {
|
|
22
|
+
effects: string[];
|
|
23
|
+
isPreset?: boolean;
|
|
24
|
+
}
|
|
21
25
|
export declare class MediaSource extends EventEmitter {
|
|
22
26
|
/** Стрим с камеры и микрофона пользователя */
|
|
23
27
|
protected _stream: MediaStream | null;
|
|
@@ -25,14 +29,17 @@ export declare class MediaSource extends EventEmitter {
|
|
|
25
29
|
private _audioShareTrack;
|
|
26
30
|
/** Трек для отправки в медиа-канал. Может отличаться при скриншаринге в дата-канал */
|
|
27
31
|
private _sendVideoTrack;
|
|
28
|
-
/** Трек с камеры. В стриме будет другой трек при включенных эффектах */
|
|
32
|
+
/** Трек с камеры. В стриме будет другой трек при включенных видео эффектах */
|
|
29
33
|
private _cameraVideoTrack;
|
|
34
|
+
/** Трек с микрофона. В стриме будет другой трек при включенных аудио эффектах */
|
|
35
|
+
private _micAudioTrack;
|
|
36
|
+
/** Трек аудио эффектов. Не изменяется на протяжении всего времени */
|
|
37
|
+
private _audioEffectsTrack;
|
|
30
38
|
private _mediaSettings;
|
|
31
39
|
private _videoStatusOnScreenCapturingEnabled;
|
|
32
40
|
private _effect;
|
|
41
|
+
private _audioEffectParams;
|
|
33
42
|
private _onDeviceChange;
|
|
34
|
-
/** MediaSource занят при переключении камеры или микрофона */
|
|
35
|
-
private _sourceBusy;
|
|
36
43
|
/** Состояние выключателя Animoji в UI */
|
|
37
44
|
private _animojiEnabled;
|
|
38
45
|
constructor();
|
|
@@ -60,13 +67,12 @@ export declare class MediaSource extends EventEmitter {
|
|
|
60
67
|
* Может использоваться для тестирования.
|
|
61
68
|
*/
|
|
62
69
|
setAudioStream(stream: MediaStream): Promise<void>;
|
|
63
|
-
private _busy;
|
|
64
|
-
private _free;
|
|
65
70
|
private _changeAudioInput;
|
|
66
71
|
private _changeScreen;
|
|
67
72
|
private _disableScreenCapture;
|
|
68
73
|
private disableAudioShare;
|
|
69
74
|
private stopAudioShareTrack;
|
|
75
|
+
private _applyAudioEffect;
|
|
70
76
|
protected getSilentAudioShareTrack(): MediaStreamTrack;
|
|
71
77
|
protected _replaceLocalTrack(newTrack: MediaStreamTrack, sendTrack?: MediaStreamTrack): Promise<void>;
|
|
72
78
|
private _setEffect;
|
|
@@ -84,5 +90,7 @@ export declare class MediaSource extends EventEmitter {
|
|
|
84
90
|
}): Promise<void>;
|
|
85
91
|
updateNoiseSuppression(): Promise<void>;
|
|
86
92
|
videoEffect(effect: IEffect | null): Promise<void>;
|
|
93
|
+
audioEffect(audioEffectParams: AudioEffectParams | null): Promise<void>;
|
|
87
94
|
getAudioShareTrack(): MediaStreamTrack | null;
|
|
88
95
|
}
|
|
96
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export default interface IDecoder {
|
|
2
|
-
init(onFrameImage: (image: VideoFrame | ImageData) => void): Promise<void>;
|
|
2
|
+
init(onFrameImage: (image: VideoFrame | ImageData) => void, onFrameError?: (error: unknown) => void): Promise<void>;
|
|
3
3
|
decodeFrame(timestamp: number, data: Uint8Array, isVP9: boolean, keyFrame?: boolean): void;
|
|
4
4
|
destroy(): void;
|
|
5
5
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import IDecoder from './IDecoder';
|
|
2
2
|
import WorkerBase from './WorkerBase';
|
|
3
3
|
export default class LibVPxDecoder extends WorkerBase implements IDecoder {
|
|
4
|
-
init(onFrameImage: (image: ImageData) => void): Promise<void>;
|
|
4
|
+
init(onFrameImage: (image: ImageData) => void, onFrameError: (error: unknown) => void): Promise<void>;
|
|
5
5
|
decodeFrame(timestamp: number, data: Uint8Array, isVP9: boolean, keyFrame?: boolean): void;
|
|
6
6
|
destroy(): void;
|
|
7
7
|
static isBrowserSupported(): boolean;
|
|
@@ -11,8 +11,6 @@ export default class LibVPxEncoder extends WorkerBase implements IEncoder {
|
|
|
11
11
|
private _imageCapture;
|
|
12
12
|
private _canvas;
|
|
13
13
|
private _canvasCtx;
|
|
14
|
-
private _stream;
|
|
15
|
-
private _track;
|
|
16
14
|
private _frameReadTimeout;
|
|
17
15
|
private _lastFrame;
|
|
18
16
|
constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number);
|
|
@@ -23,7 +21,6 @@ export default class LibVPxEncoder extends WorkerBase implements IEncoder {
|
|
|
23
21
|
private _drawFrameVideo;
|
|
24
22
|
private _getFrameBitmap;
|
|
25
23
|
private _drawFrameData;
|
|
26
|
-
private _requestCanvasFrame;
|
|
27
24
|
init(): Promise<void>;
|
|
28
25
|
private _encode;
|
|
29
26
|
private _requestFrameVideo;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import IDecoder from './IDecoder';
|
|
2
2
|
import WorkerBase from './WorkerBase';
|
|
3
3
|
export default class WebCodecsDecoder extends WorkerBase implements IDecoder {
|
|
4
|
-
init(onFrameImage: (frame: VideoFrame) => void): Promise<void>;
|
|
4
|
+
init(onFrameImage: (frame: VideoFrame) => void, onFrameError: (error: unknown) => void): Promise<void>;
|
|
5
5
|
decodeFrame(timestamp: number, data: Uint8Array, isVP9: boolean, keyFrame?: boolean): void;
|
|
6
6
|
destroy(): void;
|
|
7
7
|
static isBrowserSupported(): boolean;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import BaseSignaling from '../../abstract/BaseSignaling';
|
|
2
|
+
import { StatResult } from '../../types/Statistics';
|
|
2
3
|
import EventEmitter from '../EventEmitter';
|
|
3
4
|
import { WeightedAverage } from '../stat/WeightedAverage';
|
|
4
5
|
interface NetworkStat {
|
|
@@ -66,6 +66,11 @@ export default class DirectTransport extends BaseTransport {
|
|
|
66
66
|
private static _patchRemoteDescription;
|
|
67
67
|
private _onReplacedTrack;
|
|
68
68
|
private _startStatInterval;
|
|
69
|
+
/**
|
|
70
|
+
* Check SVC support
|
|
71
|
+
* @see https://webrtc.internaut.com/mc/
|
|
72
|
+
*/
|
|
73
|
+
private _isSVCSupported;
|
|
69
74
|
private _checkPPTNetwork;
|
|
70
75
|
private _stopStatInterval;
|
|
71
76
|
private _onNetworkStatus;
|
package/default/Api.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export default class Api extends BaseApi {
|
|
|
17
17
|
log(items: LogItem[]): void;
|
|
18
18
|
logClientStats(items: ClientStats[]): void;
|
|
19
19
|
logClientEvents(items: ClientEvent[]): void;
|
|
20
|
-
|
|
20
|
+
uploadDebugLogs(conversationId: string, startTime: number, endTime: number, log: string): Promise<void>;
|
|
21
21
|
joinConversation(conversationId: string, isVideo?: boolean, chatId?: string): Promise<ConversationResponse>;
|
|
22
22
|
createConversation(conversationId: string, payload?: string, requireAuthToJoin?: boolean, { onlyAdminCanShareMovie, audienceMode, audioOnly, }?: {
|
|
23
23
|
onlyAdminCanShareMovie?: boolean;
|
|
@@ -64,4 +64,5 @@ export default class Api extends BaseApi {
|
|
|
64
64
|
removeHistoryRecords(recordIds: number[]): Promise<void>;
|
|
65
65
|
cleanup(): void;
|
|
66
66
|
private _getExternalIdsByOkIds;
|
|
67
|
+
getServerTime(): Promise<number>;
|
|
67
68
|
}
|
package/enums/HangupType.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ declare enum HangupType {
|
|
|
26
26
|
ENDED = "ENDED",
|
|
27
27
|
KILLED_WITHOUT_DELETE = "KILLED_WITHOUT_DELETE",
|
|
28
28
|
ANOTHER_DEVICE = "ANOTHER_DEVICE",
|
|
29
|
-
NOT_FOUND = "NOT_FOUND"
|
|
29
|
+
NOT_FOUND = "NOT_FOUND",
|
|
30
|
+
VCHAT_DETAILED_ERROR = "VCHAT_DETAILED_ERROR"
|
|
30
31
|
}
|
|
31
32
|
export default HangupType;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vkontakte/calls-sdk",
|
|
3
|
-
"version": "2.8.5-dev.
|
|
3
|
+
"version": "2.8.5-dev.f1e8c4ec.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,9 @@
|
|
|
14
14
|
"**/*.d.ts"
|
|
15
15
|
],
|
|
16
16
|
"dependencies": {
|
|
17
|
+
"@vkontakte/calls-audio-effects": "1.2.5",
|
|
17
18
|
"@vkontakte/calls-video-effects": "2.2.3-beta.2",
|
|
18
|
-
"@vkontakte/calls-vmoji": "1.0.10-beta.
|
|
19
|
+
"@vkontakte/calls-vmoji": "1.0.10-beta.13",
|
|
19
20
|
"@vkontakte/libvpx": "2.0.9",
|
|
20
21
|
"bit-buffer": "0.2.5",
|
|
21
22
|
"messagepack": "1.1.12",
|
package/static/ApiTransport.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { IApiEnv } from '../types/Params';
|
|
2
2
|
export declare function _resolveApiEndpoint(apiEnv?: IApiEnv): Promise<string>;
|
|
3
|
-
export declare function init(): void;
|
|
4
3
|
export declare function sendBeakon(method: string, params?: {
|
|
5
4
|
[key: string]: any;
|
|
6
5
|
}, noSession?: boolean): Promise<void>;
|
|
7
6
|
export declare function request(method: string, params?: {
|
|
8
7
|
[key: string]: any;
|
|
9
8
|
}, noSession?: boolean, customEndpoint?: string): Promise<unknown>;
|
|
9
|
+
export declare function sendFormData(url: string, data: FormData): Promise<string>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CurrentLogItem } from '../utils/DebugStorage';
|
|
2
|
+
export declare class ConversationDebugLogger {
|
|
3
|
+
private static _list;
|
|
4
|
+
private static _conversationId;
|
|
5
|
+
static get startTime(): number;
|
|
6
|
+
static get endTime(): number;
|
|
7
|
+
static startSession(): void;
|
|
8
|
+
static get conversationId(): string | null;
|
|
9
|
+
static set conversationId(conversationId: string | null);
|
|
10
|
+
static add(item: CurrentLogItem): void;
|
|
11
|
+
private static _createContextLogs;
|
|
12
|
+
static collectLogs(): CurrentLogItem[];
|
|
13
|
+
}
|
package/static/External.d.ts
CHANGED
|
@@ -303,14 +303,16 @@ declare namespace External {
|
|
|
303
303
|
*
|
|
304
304
|
* @param userId Внешний ID пользователя
|
|
305
305
|
* @param roles Список ролей
|
|
306
|
+
* @param isInitial Коллбек вызван при инициализации (переподключение в звонок, заранее назначенный админ)
|
|
306
307
|
*/
|
|
307
|
-
function onRolesChanged(userId: ExternalId, roles: UserRole[]): void;
|
|
308
|
+
function onRolesChanged(userId: ExternalId, roles: UserRole[], isInitial?: boolean): void;
|
|
308
309
|
/**
|
|
309
310
|
* Изменились свои роли в звонке
|
|
310
311
|
*
|
|
311
312
|
* @param roles Список ролей
|
|
313
|
+
* @param isInitial Коллбек вызван при инициализации (переподключение в звонок, заранее назначенный админ)
|
|
312
314
|
*/
|
|
313
|
-
function onLocalRolesChanged(roles: UserRole[]): void;
|
|
315
|
+
function onLocalRolesChanged(roles: UserRole[], isInitial?: boolean): void;
|
|
314
316
|
/**
|
|
315
317
|
* Закрепляет/открепляет собеседника для всех
|
|
316
318
|
*
|
package/static/Params.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { VideoEffects } from '@vkontakte/calls-video-effects';
|
|
2
|
+
import type { EffectVoiceChange } from '@vkontakte/calls-audio-effects';
|
|
2
3
|
import type * as Vmoji from '@vkontakte/calls-vmoji';
|
|
3
4
|
import { IAsrData } from '../types/Asr';
|
|
4
5
|
import { ConversationData } from '../types/Conversation';
|
|
@@ -159,6 +160,12 @@ export type ParamsObject = {
|
|
|
159
160
|
* Можно установить позднее методом `setVideoEffects`
|
|
160
161
|
*/
|
|
161
162
|
videoEffects: VideoEffects | null;
|
|
163
|
+
/**
|
|
164
|
+
* Экземпляр класса `AudioEffects` из [`@vkontakte/calls-audio-effects`](https://npmjs.com/package/@vkontakte/calls-audio-effects)
|
|
165
|
+
*
|
|
166
|
+
* Можно установить позднее методом `setAudioEffects`
|
|
167
|
+
*/
|
|
168
|
+
audioEffects: EffectVoiceChange | null;
|
|
162
169
|
/**
|
|
163
170
|
* Максимальная ширина видео в пикселях для видео эффекта
|
|
164
171
|
*
|
|
@@ -227,14 +234,6 @@ export type ParamsObject = {
|
|
|
227
234
|
perfStatReportEnabled: boolean;
|
|
228
235
|
/** @hidden */
|
|
229
236
|
callStatReportEnabled: boolean;
|
|
230
|
-
/**
|
|
231
|
-
* Включает использование обновленного API и формата
|
|
232
|
-
* логирования статистики качества аудио/видео.
|
|
233
|
-
*
|
|
234
|
-
* _По умолчанию: `false`_
|
|
235
|
-
* @hidden
|
|
236
|
-
*/
|
|
237
|
-
useCallStatReportNewAPI: boolean;
|
|
238
237
|
/**
|
|
239
238
|
* Включает логирование событий продуктовой статистики.
|
|
240
239
|
*
|
|
@@ -242,16 +241,6 @@ export type ParamsObject = {
|
|
|
242
241
|
* @hidden
|
|
243
242
|
*/
|
|
244
243
|
clientEventsLoggingEnabled: boolean;
|
|
245
|
-
/** @hidden */
|
|
246
|
-
networkStatReportEnabled: boolean;
|
|
247
|
-
/**
|
|
248
|
-
* Включает извлечение `remote-inbound-rtp` для использования в статистике.
|
|
249
|
-
* Используется для вычисления `video_loss` и `audio_loss`.
|
|
250
|
-
*
|
|
251
|
-
* _По умолчанию: `false`_
|
|
252
|
-
* @hidden
|
|
253
|
-
*/
|
|
254
|
-
includeRemoteRtpsInCallStat: boolean;
|
|
255
244
|
/**
|
|
256
245
|
* Отдавать приоритет кодеку H264 для исходящего видео
|
|
257
246
|
*
|
|
@@ -262,7 +251,7 @@ export type ParamsObject = {
|
|
|
262
251
|
* Отдавать приоритет кодеку VP9 для исходящего видео,
|
|
263
252
|
* если preferH264 тоже выставлен в true то первый приоритет будет у VP9, второй у H264
|
|
264
253
|
*
|
|
265
|
-
* _По умолчанию: `
|
|
254
|
+
* _По умолчанию: `false`_
|
|
266
255
|
*/
|
|
267
256
|
preferVP9: boolean;
|
|
268
257
|
/** @hidden */
|
|
@@ -609,11 +598,11 @@ export type ParamsObject = {
|
|
|
609
598
|
/**
|
|
610
599
|
* Изменились роли собеседника в звонке
|
|
611
600
|
*/
|
|
612
|
-
onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[]) => void;
|
|
601
|
+
onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[], isInitial?: boolean) => void;
|
|
613
602
|
/**
|
|
614
603
|
* Изменились свои роли в звонке
|
|
615
604
|
*/
|
|
616
|
-
onLocalRolesChanged?: (roles: UserRole[]) => void;
|
|
605
|
+
onLocalRolesChanged?: (roles: UserRole[], isInitial?: boolean) => void;
|
|
617
606
|
/**
|
|
618
607
|
* Закрепляет/открепляет собеседника для всех
|
|
619
608
|
*/
|
|
@@ -901,6 +890,8 @@ export default abstract class Params {
|
|
|
901
890
|
static get videoFacingMode(): FacingMode | null;
|
|
902
891
|
static set videoFacingMode(value: FacingMode | null);
|
|
903
892
|
static get displaySurface(): DisplayCaptureSurfaceType;
|
|
893
|
+
static get audioEffects(): EffectVoiceChange | null;
|
|
894
|
+
static set audioEffects(value: EffectVoiceChange | null);
|
|
904
895
|
static get videoEffects(): VideoEffects | null;
|
|
905
896
|
static set videoEffects(value: VideoEffects | null);
|
|
906
897
|
static get videoEffectMaxWidth(): number;
|
|
@@ -924,11 +915,8 @@ export default abstract class Params {
|
|
|
924
915
|
static get networkStatisticsInterval(): number;
|
|
925
916
|
static get perfStatReportEnabled(): boolean;
|
|
926
917
|
static get callStatReportEnabled(): boolean;
|
|
927
|
-
static get useCallStatReportNewAPI(): boolean;
|
|
928
918
|
static get clientEventsLoggingEnabled(): boolean;
|
|
929
|
-
static get networkStatReportEnabled(): boolean;
|
|
930
919
|
static get enableLogPerfStatReport(): boolean;
|
|
931
|
-
static get includeRemoteRtpsInCallStat(): boolean;
|
|
932
920
|
static get producerNotificationDataChannel(): boolean;
|
|
933
921
|
static get producerCommandDataChannel(): boolean;
|
|
934
922
|
static get consumerScreenDataChannel(): boolean;
|
|
@@ -969,4 +957,33 @@ export default abstract class Params {
|
|
|
969
957
|
static get enumerateDevicesDelay(): number;
|
|
970
958
|
static getScreenFrameRate(fastScreenShare: boolean): number;
|
|
971
959
|
static get switchVideoAtBadNetwork(): boolean;
|
|
960
|
+
static toJSON(): {
|
|
961
|
+
apiKey: string;
|
|
962
|
+
apiEnv: string;
|
|
963
|
+
audioShare: boolean;
|
|
964
|
+
useCallsToContacts: boolean;
|
|
965
|
+
useParticipantListChunk: boolean;
|
|
966
|
+
useRooms: boolean;
|
|
967
|
+
useChatRooms: boolean;
|
|
968
|
+
fastScreenShare: boolean;
|
|
969
|
+
participantListChunkInitCount: number | null;
|
|
970
|
+
screenShareCongestionControl: boolean;
|
|
971
|
+
screenShareCongestionControlThreshold: number;
|
|
972
|
+
videoTracksCount: number;
|
|
973
|
+
asrDataChannel: boolean;
|
|
974
|
+
videoMaxHeight: number;
|
|
975
|
+
videoMaxWidth: number;
|
|
976
|
+
videoEffectMaxHeight: number;
|
|
977
|
+
videoEffectMaxWidth: number;
|
|
978
|
+
videoSuspend: boolean;
|
|
979
|
+
debugLog: boolean;
|
|
980
|
+
callStatReportEnabled: boolean;
|
|
981
|
+
joinFromMultipleDevices: boolean;
|
|
982
|
+
movieShare: boolean;
|
|
983
|
+
newMuteRules: boolean;
|
|
984
|
+
clientType: string;
|
|
985
|
+
clientStatsPlatform: string;
|
|
986
|
+
consumerScreenDataChannelPacketSize: number;
|
|
987
|
+
switchVideoAtBadNetwork: boolean;
|
|
988
|
+
};
|
|
972
989
|
}
|
package/static/Utils.d.ts
CHANGED
|
@@ -7,8 +7,8 @@ export declare const PARAMETERS_SEPARATOR = ":";
|
|
|
7
7
|
export declare const DEVICE_IDX_PARAMETER = "d";
|
|
8
8
|
/** @hidden */
|
|
9
9
|
declare namespace Utils {
|
|
10
|
-
function patchLocalSDP(sdp: string, preferH264: boolean,
|
|
11
|
-
function patchRemoteSDP(sdp: string, oldDataChannelDescription: boolean, preferH264: boolean, brokenH264: boolean, preferVP9: boolean, brokenVP9Encoder: boolean): string;
|
|
10
|
+
function patchLocalSDP(sdp: string, preferH264: boolean, brokenH264Decoder: boolean, preferVP9: boolean, h264spsPpsIdrInKeyframe: boolean, isAudioNack?: boolean, preferRed?: boolean): string;
|
|
11
|
+
function patchRemoteSDP(sdp: string, oldDataChannelDescription: boolean, preferH264: boolean, brokenH264: boolean, preferVP9: boolean, brokenVP9Encoder: boolean, brokenVP9Decoder: boolean): string;
|
|
12
12
|
function getPeerIdString(peerId: SignalingMessage.PeerId): string;
|
|
13
13
|
function comparePeerId(peerId1: SignalingMessage.PeerId, peerId2: SignalingMessage.PeerId): boolean;
|
|
14
14
|
function getPeerConnectionHostInfo(pc: RTCPeerConnection): Promise<{
|
|
@@ -31,7 +31,7 @@ declare namespace Utils {
|
|
|
31
31
|
deviceIdx: number;
|
|
32
32
|
};
|
|
33
33
|
function uuid(): string;
|
|
34
|
-
function
|
|
34
|
+
function debounce<F extends (...args: Parameters<F>) => ReturnType<F>>(func: F, ms: number): (this: any, ..._args: Parameters<F>) => void;
|
|
35
35
|
function sdpFingerprint(sdp: string): bigint | null;
|
|
36
36
|
function delay(time: number): Promise<unknown>;
|
|
37
37
|
function applySettings(pc: RTCPeerConnection, videoSettings: VideoSettings, prevSettings: any): any;
|
package/static/WebRTCUtils.d.ts
CHANGED
|
@@ -121,13 +121,17 @@ declare namespace WebRTCUtils {
|
|
|
121
121
|
*/
|
|
122
122
|
function isScreenCapturingSupported(): boolean;
|
|
123
123
|
/**
|
|
124
|
-
* В некоторых браузерах H264 сломан
|
|
124
|
+
* В некоторых браузерах H264 decoder сломан
|
|
125
125
|
*/
|
|
126
|
-
function
|
|
126
|
+
function isBrokenH264Decoder(): boolean;
|
|
127
127
|
/**
|
|
128
128
|
* В некоторых браузерах VP9 encoder сломан
|
|
129
129
|
*/
|
|
130
130
|
function isBrokenVP9Encoder(): boolean;
|
|
131
|
+
/**
|
|
132
|
+
* В некоторых браузерах VP9 decoder сломан
|
|
133
|
+
*/
|
|
134
|
+
function isBrokenVP9Decoder(): boolean;
|
|
131
135
|
/**
|
|
132
136
|
* Изменился формат описания датаканала в SDP
|
|
133
137
|
* @link https://blog.mozilla.org/webrtc/how-to-avoid-data-channel-breaking/
|
package/types/Conversation.d.ts
CHANGED
|
@@ -8,7 +8,6 @@ import { AsrInfo } from './Asr';
|
|
|
8
8
|
import { IFeaturesPerRole } from './ConversationFeature';
|
|
9
9
|
import { ExternalParticipantId } from './ExternalId';
|
|
10
10
|
import MediaModifiers from './MediaModifiers';
|
|
11
|
-
import MediaSettings from './MediaSettings';
|
|
12
11
|
import MuteStates from './MuteStates';
|
|
13
12
|
import { OkUserId, Participant, ParticipantId } from './Participant';
|
|
14
13
|
import { IRoomId, RoomUrlSharingInfo } from './Room';
|
|
@@ -17,7 +16,6 @@ export interface IProcessMuteStateParams {
|
|
|
17
16
|
mediaOptions?: MediaOption[];
|
|
18
17
|
muteAll?: boolean;
|
|
19
18
|
unmute?: boolean;
|
|
20
|
-
serverSettings?: MediaSettings | null;
|
|
21
19
|
admin?: Participant | null;
|
|
22
20
|
stateUpdated?: boolean;
|
|
23
21
|
requestedMedia?: MediaOption[];
|
package/types/Participant.d.ts
CHANGED
|
@@ -47,6 +47,7 @@ export interface ParticipantStateMapped {
|
|
|
47
47
|
export type ParticipantsStateList = {
|
|
48
48
|
externalId: ExternalParticipantId;
|
|
49
49
|
participantState: ParticipantStateMapped;
|
|
50
|
+
markers: ExternalParticipantListMarkers | null;
|
|
50
51
|
}[];
|
|
51
52
|
export interface Participant {
|
|
52
53
|
/**
|
|
@@ -6,6 +6,7 @@ import ConversationOption from '../enums/ConversationOption';
|
|
|
6
6
|
import FatalError from '../enums/FatalError';
|
|
7
7
|
import HangupType from '../enums/HangupType';
|
|
8
8
|
import MediaOption from '../enums/MediaOption';
|
|
9
|
+
import MuteState from '../enums/MuteState';
|
|
9
10
|
import ParticipantState from '../enums/ParticipantState';
|
|
10
11
|
import RoomsEventType from '../enums/RoomsEventType';
|
|
11
12
|
import SignalingCommandType from '../enums/SignalingCommandType';
|
|
@@ -332,6 +333,8 @@ declare namespace SignalingMessage {
|
|
|
332
333
|
mediaModifiers: MediaModifiers;
|
|
333
334
|
conversation: Conversation;
|
|
334
335
|
participants?: ParticipantListChunk;
|
|
336
|
+
muteState?: MuteState;
|
|
337
|
+
muteOptions?: MediaOption[];
|
|
335
338
|
}
|
|
336
339
|
export interface ChatRoomUpdated extends Notification {
|
|
337
340
|
eventType: ChatRoomEventType;
|
|
@@ -368,6 +371,8 @@ declare namespace SignalingMessage {
|
|
|
368
371
|
rooms: Room[];
|
|
369
372
|
roomId?: number;
|
|
370
373
|
};
|
|
374
|
+
muteState?: MuteState;
|
|
375
|
+
muteOptions?: MediaOption[];
|
|
371
376
|
}
|
|
372
377
|
export interface Feedback extends Notification {
|
|
373
378
|
feedback: IFeedback[];
|
package/types/VideoSettings.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export type VideoSettings = {
|
|
|
19
19
|
* Настройка деградации - понижаем фпс или разрешение
|
|
20
20
|
* https://www.w3.org/TR/mst-content-hint/#dom-rtcdegradationpreference
|
|
21
21
|
*/
|
|
22
|
-
degradationPreference:
|
|
22
|
+
degradationPreference: RTCDegradationPreference;
|
|
23
23
|
/**
|
|
24
24
|
* Настройка временных слоев
|
|
25
25
|
* https://www.w3.org/TR/webrtc-svc/
|
package/utils/Conversation.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import MediaOption from '../enums/MediaOption';
|
|
2
|
+
import MuteState from '../enums/MuteState';
|
|
3
|
+
import MuteStates from '../types/MuteStates';
|
|
2
4
|
export declare const getMediaOptionsByMuteState: (muteStates: MuteStates, value: MuteState) => MediaOption[];
|
package/utils/DebugStorage.d.ts
CHANGED