@vkontakte/calls-sdk 2.8.5-dev.15448543.0 → 2.8.5-dev.16bee4a1.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 -4
- package/abstract/BaseApi.d.ts +1 -0
- package/abstract/BaseSignaling.d.ts +8 -1
- package/calls-sdk.cjs.js +8 -8
- package/calls-sdk.esm.js +8 -8
- package/classes/AudioFix.d.ts +4 -0
- package/classes/AudioOutput.d.ts +3 -0
- package/classes/Conversation.d.ts +10 -14
- package/classes/HangupReason.d.ts +13 -0
- package/classes/MediaSource.d.ts +18 -5
- package/classes/VideoEffectsFpsLimiter.d.ts +23 -0
- 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/stat/StatFirstMediaReceived.d.ts +6 -5
- package/classes/transport/DirectTransport.d.ts +5 -0
- package/default/Api.d.ts +1 -0
- package/default/Signaling.d.ts +1 -1
- package/enums/FatalError.d.ts +2 -1
- package/enums/HangupType.d.ts +2 -1
- package/package.json +4 -3
- package/static/ApiTransport.d.ts +1 -0
- package/static/ConversationDebugLogger.d.ts +13 -0
- package/static/External.d.ts +4 -2
- package/static/Params.d.ts +51 -24
- package/static/Utils.d.ts +2 -2
- package/static/WebRTCUtils.d.ts +4 -3
- package/types/Conversation.d.ts +2 -14
- package/types/GetLogUploadUrlParams.d.ts +6 -0
- package/types/GetLogUploadUrlResponse.d.ts +3 -0
- package/types/Params.d.ts +1 -1
- package/types/SignalingMessage.d.ts +5 -0
- package/types/VideoSettings.d.ts +1 -1
- package/utils/Conversation.d.ts +4 -0
- package/utils/DebugStorage.d.ts +6 -0
- package/utils/Media.d.ts +1 -2
- package/utils/NavigatorPermissions.d.ts +13 -0
package/classes/AudioFix.d.ts
CHANGED
|
@@ -9,8 +9,12 @@ export default class AudioFix {
|
|
|
9
9
|
private _mediaSource;
|
|
10
10
|
private _lastPacketsSent;
|
|
11
11
|
private _lastPacketsSentTime;
|
|
12
|
+
private _toggleAudioPromise;
|
|
13
|
+
private _fixNoPacketsAppliedVideo;
|
|
12
14
|
constructor(mediaSource: MediaSource);
|
|
13
15
|
private _fixAudioDeviceNoPackets;
|
|
14
16
|
private _fixAudioDeviceTooManyPackets;
|
|
15
17
|
fix(rtps: any[]): void;
|
|
18
|
+
/** важно вызывать ___после___ метода `fix()` */
|
|
19
|
+
fixVideo(rtps: any[]): void;
|
|
16
20
|
}
|
package/classes/AudioOutput.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { StatFirstMediaReceived } from './stat/StatFirstMediaReceived';
|
|
1
2
|
type ParticipantAudioOutput = {
|
|
2
3
|
audioElement?: HTMLAudioElement;
|
|
3
4
|
audioTrack?: MediaStreamTrack;
|
|
@@ -6,6 +7,8 @@ export default class AudioOutput {
|
|
|
6
7
|
protected _output: ParticipantAudioOutput | null;
|
|
7
8
|
private _volume;
|
|
8
9
|
private readonly _features;
|
|
10
|
+
private readonly _statFirstMediaReceived;
|
|
11
|
+
constructor(statFirstMediaReceived: StatFirstMediaReceived);
|
|
9
12
|
add(track: MediaStreamTrack): void;
|
|
10
13
|
remove(track: MediaStreamTrack): void;
|
|
11
14
|
get volume(): number;
|
|
@@ -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';
|
|
@@ -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>;
|
|
@@ -127,24 +130,13 @@ export default class Conversation extends EventEmitter {
|
|
|
127
130
|
private _registerParticipantAndSetMarkersIfChunkEnabled;
|
|
128
131
|
private _warnParticipantNotInConversation;
|
|
129
132
|
private _denormalizeMarkers;
|
|
130
|
-
/**
|
|
131
|
-
* Обрабатывает данные connection из сигналинга. Должен вызываться после `_registerParticipants`
|
|
132
|
-
*
|
|
133
|
-
* @param connection
|
|
134
|
-
*/
|
|
135
|
-
private _processConnectionData;
|
|
136
133
|
/**
|
|
137
134
|
* Обрабатывает информацию о сессионных залах
|
|
138
135
|
*
|
|
139
136
|
* @param connection
|
|
140
137
|
*/
|
|
141
138
|
private _processRooms;
|
|
142
|
-
/**
|
|
143
|
-
* Обрабатывает информацию о мьютах в основном и сессионных залах
|
|
144
|
-
* @param connection
|
|
145
|
-
* @private
|
|
146
|
-
* @hidden
|
|
147
|
-
*/
|
|
139
|
+
/** Обрабатывает информацию о мьютах в основном и сессионных залах */
|
|
148
140
|
private _processMuteStates;
|
|
149
141
|
/**
|
|
150
142
|
* Обрабатывает информацию о записи/трансляции в основном и сессионных залах
|
|
@@ -228,6 +220,7 @@ export default class Conversation extends EventEmitter {
|
|
|
228
220
|
private _getWaitingTime;
|
|
229
221
|
private _isCallAdmin;
|
|
230
222
|
private _checkAdminRole;
|
|
223
|
+
private _isCalledState;
|
|
231
224
|
grantRoles(participantId: ParticipantId, roles: UserRole[], revoke: boolean): Promise<void>;
|
|
232
225
|
startAsr(params: IAsrStartParams): Promise<void>;
|
|
233
226
|
stopAsr(params?: IAsrStopParams): Promise<void>;
|
|
@@ -248,7 +241,7 @@ export default class Conversation extends EventEmitter {
|
|
|
248
241
|
getWaitingHall(pageMarker: string | null, count?: number, backward?: boolean): Promise<WaitingHallResponse>;
|
|
249
242
|
private _resolveWaitingHallExternalIds;
|
|
250
243
|
getAudienceModeHands(): Promise<AudienceModeHandsResponse>;
|
|
251
|
-
promoteParticipant(participantId
|
|
244
|
+
promoteParticipant(participantId?: CompositeUserId, demote?: boolean): Promise<void>;
|
|
252
245
|
requestPromotion(unrequest?: boolean): Promise<void>;
|
|
253
246
|
acceptPromotion(reject?: boolean): Promise<void>;
|
|
254
247
|
chatMessage(message: string, participantId?: CompositeUserId | null): Promise<void>;
|
|
@@ -281,6 +274,8 @@ export default class Conversation extends EventEmitter {
|
|
|
281
274
|
effect?: IVideoDimentions;
|
|
282
275
|
}): Promise<void | undefined>;
|
|
283
276
|
videoEffect(effect: IEffect | null): Promise<void | undefined>;
|
|
277
|
+
audioEffect(effects: string[] | null, isPreset?: boolean): Promise<void | undefined>;
|
|
278
|
+
_convertExternalIdsToServerExternalIds(externalIds: ExternalId[]): SignalingMessage.ExternalId[];
|
|
284
279
|
getParticipants(parameters: IGetParticipantsParameters): Promise<ExternalParticipant[]>;
|
|
285
280
|
getParticipantListChunk(participantListChunkParameters: ParticipantListChunkParameters): Promise<ExternalParticipantListChunk>;
|
|
286
281
|
private _getInitialParticiapntListChunk;
|
|
@@ -360,6 +355,7 @@ export default class Conversation extends EventEmitter {
|
|
|
360
355
|
private _onRemoteSignalledStall;
|
|
361
356
|
private _onRemoteDataStats;
|
|
362
357
|
private _fixAudioDevice;
|
|
358
|
+
private _fixVideoDevice;
|
|
363
359
|
private _toggleJoinAvailability;
|
|
364
360
|
private _updateDisplayLayoutFromCache;
|
|
365
361
|
private _setParticipantsStatus;
|
|
@@ -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/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,16 +29,21 @@ 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;
|
|
45
|
+
/** вычисляем низкую производительность видео эффектов */
|
|
46
|
+
private readonly _videoEffectsFpsLimiter?;
|
|
38
47
|
constructor();
|
|
39
48
|
request(mediaOptions?: MediaOption[], needEmptyTracks?: boolean): Promise<void>;
|
|
40
49
|
getStream(): MediaStream | null;
|
|
@@ -60,13 +69,12 @@ export declare class MediaSource extends EventEmitter {
|
|
|
60
69
|
* Может использоваться для тестирования.
|
|
61
70
|
*/
|
|
62
71
|
setAudioStream(stream: MediaStream): Promise<void>;
|
|
63
|
-
private _busy;
|
|
64
|
-
private _free;
|
|
65
72
|
private _changeAudioInput;
|
|
66
73
|
private _changeScreen;
|
|
67
74
|
private _disableScreenCapture;
|
|
68
75
|
private disableAudioShare;
|
|
69
76
|
private stopAudioShareTrack;
|
|
77
|
+
private _applyAudioEffect;
|
|
70
78
|
protected getSilentAudioShareTrack(): MediaStreamTrack;
|
|
71
79
|
protected _replaceLocalTrack(newTrack: MediaStreamTrack, sendTrack?: MediaStreamTrack): Promise<void>;
|
|
72
80
|
private _setEffect;
|
|
@@ -84,5 +92,10 @@ export declare class MediaSource extends EventEmitter {
|
|
|
84
92
|
}): Promise<void>;
|
|
85
93
|
updateNoiseSuppression(): Promise<void>;
|
|
86
94
|
videoEffect(effect: IEffect | null): Promise<void>;
|
|
95
|
+
audioEffect(audioEffectParams: AudioEffectParams | null): Promise<void>;
|
|
87
96
|
getAudioShareTrack(): MediaStreamTrack | null;
|
|
97
|
+
private handleVideoEffectsLowFps;
|
|
98
|
+
private get _frameRate();
|
|
99
|
+
private _applyVideoConstraints;
|
|
88
100
|
}
|
|
101
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { VideoEffects } from '@vkontakte/calls-video-effects';
|
|
2
|
+
import EventEmitter from './EventEmitter';
|
|
3
|
+
export declare enum VideoEffectsFpsLimiterEvent {
|
|
4
|
+
FpsLimit = "fps-limit"
|
|
5
|
+
}
|
|
6
|
+
export declare class VideoEffectsFpsLimiter extends EventEmitter {
|
|
7
|
+
private readonly FPS_LIMITS;
|
|
8
|
+
private readonly THRESHOLD;
|
|
9
|
+
private readonly HISTORY_LENGTH;
|
|
10
|
+
private _fpsMeterUnsubscribe;
|
|
11
|
+
private readonly _fpsHistory;
|
|
12
|
+
private _fpsLimitCursor;
|
|
13
|
+
get fpsLimit(): number;
|
|
14
|
+
watch(videoEffect: VideoEffects | null): void;
|
|
15
|
+
private _handleFpsMeter;
|
|
16
|
+
/** для совместимости со старыми версиями, где может не быть метода */
|
|
17
|
+
private _assertsVideoEffect;
|
|
18
|
+
addEventListener(event: VideoEffectsFpsLimiterEvent, fn: (fpsLimit: number) => void): {
|
|
19
|
+
dispose: Function;
|
|
20
|
+
};
|
|
21
|
+
private _cleanup;
|
|
22
|
+
destroy(): void;
|
|
23
|
+
}
|
|
@@ -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,3 @@
|
|
|
1
|
-
import SignalingMessage from '../../types/SignalingMessage';
|
|
2
1
|
import { TransportTopology } from '../transport/Transport';
|
|
3
2
|
/** связанный с операцией `first_media_received` тип логируемого звонка */
|
|
4
3
|
declare enum ECallType {
|
|
@@ -11,11 +10,13 @@ declare enum ECallType {
|
|
|
11
10
|
export declare class StatFirstMediaReceived {
|
|
12
11
|
/** уже поставили засечку на приём звонка */
|
|
13
12
|
protected _isCallMarked: boolean;
|
|
14
|
-
protected
|
|
15
|
-
|
|
13
|
+
protected _isFinished: boolean;
|
|
14
|
+
protected _callType: ECallType | null;
|
|
16
15
|
markAcceptCall(topology: TransportTopology): void;
|
|
17
|
-
markAcceptedCall(topology
|
|
16
|
+
markAcceptedCall(topology?: TransportTopology): void;
|
|
18
17
|
markParticipantJoined(topology: TransportTopology): void;
|
|
19
|
-
|
|
18
|
+
markOnJoin(topology: TransportTopology): void;
|
|
19
|
+
private mark;
|
|
20
|
+
measure(): void;
|
|
20
21
|
}
|
|
21
22
|
export {};
|
|
@@ -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,6 +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
|
+
uploadDebugLogs(conversationId: string, startTime: number, endTime: number, log: string): Promise<void>;
|
|
20
21
|
joinConversation(conversationId: string, isVideo?: boolean, chatId?: string): Promise<ConversationResponse>;
|
|
21
22
|
createConversation(conversationId: string, payload?: string, requireAuthToJoin?: boolean, { onlyAdminCanShareMovie, audienceMode, audioOnly, }?: {
|
|
22
23
|
onlyAdminCanShareMovie?: boolean;
|
package/default/Signaling.d.ts
CHANGED
|
@@ -136,7 +136,7 @@ export default class Signaling extends BaseSignaling {
|
|
|
136
136
|
[key in ConversationOption]?: boolean;
|
|
137
137
|
}): Promise<SignalingMessage>;
|
|
138
138
|
getWaitingHall(fromId?: SignalingMessage.WaitingParticipantId | null, count?: number, backward?: boolean): Promise<SignalingMessage>;
|
|
139
|
-
promoteParticipant(participantId
|
|
139
|
+
promoteParticipant(participantId?: CompositeUserId, demote?: boolean): Promise<SignalingMessage>;
|
|
140
140
|
requestPromotion(unrequest?: boolean): Promise<SignalingMessage>;
|
|
141
141
|
acceptPromotion(reject?: boolean): Promise<SignalingMessage>;
|
|
142
142
|
feedback(key: string): Promise<SignalingMessage>;
|
package/enums/FatalError.d.ts
CHANGED
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.16bee4a1.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-
|
|
18
|
-
"@vkontakte/calls-
|
|
17
|
+
"@vkontakte/calls-audio-effects": "1.2.8",
|
|
18
|
+
"@vkontakte/calls-video-effects": "2.2.3-beta.5",
|
|
19
|
+
"@vkontakte/calls-vmoji": "1.0.10-beta.16",
|
|
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
|
@@ -6,3 +6,4 @@ export declare function sendBeakon(method: string, params?: {
|
|
|
6
6
|
export declare function request(method: string, params?: {
|
|
7
7
|
[key: string]: any;
|
|
8
8
|
}, noSession?: boolean, customEndpoint?: string): Promise<unknown>;
|
|
9
|
+
export declare function sendFormData(url: string, data: FormData): Promise<void>;
|
|
@@ -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';
|
|
@@ -47,6 +48,12 @@ export type ParamsObject = {
|
|
|
47
48
|
apiKey: string;
|
|
48
49
|
/** @hidden */
|
|
49
50
|
apiEnv: IApiEnv;
|
|
51
|
+
/**
|
|
52
|
+
* Базовый урл для запросов к API одноклассников
|
|
53
|
+
* Позволяет задать значение независимо от apiEnv
|
|
54
|
+
* @hidden
|
|
55
|
+
*/
|
|
56
|
+
apiBaseUrl?: string;
|
|
50
57
|
/** @hidden */
|
|
51
58
|
apiAuth?: {
|
|
52
59
|
sessionKey?: string;
|
|
@@ -159,6 +166,12 @@ export type ParamsObject = {
|
|
|
159
166
|
* Можно установить позднее методом `setVideoEffects`
|
|
160
167
|
*/
|
|
161
168
|
videoEffects: VideoEffects | null;
|
|
169
|
+
/**
|
|
170
|
+
* Экземпляр класса `AudioEffects` из [`@vkontakte/calls-audio-effects`](https://npmjs.com/package/@vkontakte/calls-audio-effects)
|
|
171
|
+
*
|
|
172
|
+
* Можно установить позднее методом `setAudioEffects`
|
|
173
|
+
*/
|
|
174
|
+
audioEffects: EffectVoiceChange | null;
|
|
162
175
|
/**
|
|
163
176
|
* Максимальная ширина видео в пикселях для видео эффекта
|
|
164
177
|
*
|
|
@@ -227,14 +240,6 @@ export type ParamsObject = {
|
|
|
227
240
|
perfStatReportEnabled: boolean;
|
|
228
241
|
/** @hidden */
|
|
229
242
|
callStatReportEnabled: boolean;
|
|
230
|
-
/**
|
|
231
|
-
* Включает использование обновленного API и формата
|
|
232
|
-
* логирования статистики качества аудио/видео.
|
|
233
|
-
*
|
|
234
|
-
* _По умолчанию: `false`_
|
|
235
|
-
* @hidden
|
|
236
|
-
*/
|
|
237
|
-
useCallStatReportNewAPI: boolean;
|
|
238
243
|
/**
|
|
239
244
|
* Включает логирование событий продуктовой статистики.
|
|
240
245
|
*
|
|
@@ -242,16 +247,6 @@ export type ParamsObject = {
|
|
|
242
247
|
* @hidden
|
|
243
248
|
*/
|
|
244
249
|
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
250
|
/**
|
|
256
251
|
* Отдавать приоритет кодеку H264 для исходящего видео
|
|
257
252
|
*
|
|
@@ -262,7 +257,7 @@ export type ParamsObject = {
|
|
|
262
257
|
* Отдавать приоритет кодеку VP9 для исходящего видео,
|
|
263
258
|
* если preferH264 тоже выставлен в true то первый приоритет будет у VP9, второй у H264
|
|
264
259
|
*
|
|
265
|
-
* _По умолчанию: `
|
|
260
|
+
* _По умолчанию: `false`_
|
|
266
261
|
*/
|
|
267
262
|
preferVP9: boolean;
|
|
268
263
|
/** @hidden */
|
|
@@ -609,11 +604,11 @@ export type ParamsObject = {
|
|
|
609
604
|
/**
|
|
610
605
|
* Изменились роли собеседника в звонке
|
|
611
606
|
*/
|
|
612
|
-
onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[]) => void;
|
|
607
|
+
onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[], isInitial?: boolean) => void;
|
|
613
608
|
/**
|
|
614
609
|
* Изменились свои роли в звонке
|
|
615
610
|
*/
|
|
616
|
-
onLocalRolesChanged?: (roles: UserRole[]) => void;
|
|
611
|
+
onLocalRolesChanged?: (roles: UserRole[], isInitial?: boolean) => void;
|
|
617
612
|
/**
|
|
618
613
|
* Закрепляет/открепляет собеседника для всех
|
|
619
614
|
*/
|
|
@@ -844,6 +839,8 @@ export type ParamsObject = {
|
|
|
844
839
|
* _По умолчанию: `false`_
|
|
845
840
|
*/
|
|
846
841
|
switchVideoAtBadNetwork: boolean;
|
|
842
|
+
/** включает деградацию фпс для видео с камеры при низком фпс с включенными вирт фонами */
|
|
843
|
+
enableVideoEffectsFpsDegradation: boolean;
|
|
847
844
|
};
|
|
848
845
|
export default abstract class Params {
|
|
849
846
|
private static _params;
|
|
@@ -867,6 +864,7 @@ export default abstract class Params {
|
|
|
867
864
|
static get device(): string;
|
|
868
865
|
static get apiKey(): string;
|
|
869
866
|
static get apiEnv(): IApiEnv;
|
|
867
|
+
static get apiBaseUrl(): string | undefined;
|
|
870
868
|
static apiEndpoint(apiEnv?: IApiEnv): string;
|
|
871
869
|
static get authToken(): string;
|
|
872
870
|
static set authToken(value: string);
|
|
@@ -901,6 +899,8 @@ export default abstract class Params {
|
|
|
901
899
|
static get videoFacingMode(): FacingMode | null;
|
|
902
900
|
static set videoFacingMode(value: FacingMode | null);
|
|
903
901
|
static get displaySurface(): DisplayCaptureSurfaceType;
|
|
902
|
+
static get audioEffects(): EffectVoiceChange | null;
|
|
903
|
+
static set audioEffects(value: EffectVoiceChange | null);
|
|
904
904
|
static get videoEffects(): VideoEffects | null;
|
|
905
905
|
static set videoEffects(value: VideoEffects | null);
|
|
906
906
|
static get videoEffectMaxWidth(): number;
|
|
@@ -924,11 +924,8 @@ export default abstract class Params {
|
|
|
924
924
|
static get networkStatisticsInterval(): number;
|
|
925
925
|
static get perfStatReportEnabled(): boolean;
|
|
926
926
|
static get callStatReportEnabled(): boolean;
|
|
927
|
-
static get useCallStatReportNewAPI(): boolean;
|
|
928
927
|
static get clientEventsLoggingEnabled(): boolean;
|
|
929
|
-
static get networkStatReportEnabled(): boolean;
|
|
930
928
|
static get enableLogPerfStatReport(): boolean;
|
|
931
|
-
static get includeRemoteRtpsInCallStat(): boolean;
|
|
932
929
|
static get producerNotificationDataChannel(): boolean;
|
|
933
930
|
static get producerCommandDataChannel(): boolean;
|
|
934
931
|
static get consumerScreenDataChannel(): boolean;
|
|
@@ -969,4 +966,34 @@ export default abstract class Params {
|
|
|
969
966
|
static get enumerateDevicesDelay(): number;
|
|
970
967
|
static getScreenFrameRate(fastScreenShare: boolean): number;
|
|
971
968
|
static get switchVideoAtBadNetwork(): boolean;
|
|
969
|
+
static get enableVideoEffectsFpsDegradation(): boolean;
|
|
970
|
+
static toJSON(): {
|
|
971
|
+
apiKey: string;
|
|
972
|
+
apiEnv: string;
|
|
973
|
+
audioShare: boolean;
|
|
974
|
+
useCallsToContacts: boolean;
|
|
975
|
+
useParticipantListChunk: boolean;
|
|
976
|
+
useRooms: boolean;
|
|
977
|
+
useChatRooms: boolean;
|
|
978
|
+
fastScreenShare: boolean;
|
|
979
|
+
participantListChunkInitCount: number | null;
|
|
980
|
+
screenShareCongestionControl: boolean;
|
|
981
|
+
screenShareCongestionControlThreshold: number;
|
|
982
|
+
videoTracksCount: number;
|
|
983
|
+
asrDataChannel: boolean;
|
|
984
|
+
videoMaxHeight: number;
|
|
985
|
+
videoMaxWidth: number;
|
|
986
|
+
videoEffectMaxHeight: number;
|
|
987
|
+
videoEffectMaxWidth: number;
|
|
988
|
+
videoSuspend: boolean;
|
|
989
|
+
debugLog: boolean;
|
|
990
|
+
callStatReportEnabled: boolean;
|
|
991
|
+
joinFromMultipleDevices: boolean;
|
|
992
|
+
movieShare: boolean;
|
|
993
|
+
newMuteRules: boolean;
|
|
994
|
+
clientType: string;
|
|
995
|
+
clientStatsPlatform: string;
|
|
996
|
+
consumerScreenDataChannelPacketSize: number;
|
|
997
|
+
switchVideoAtBadNetwork: boolean;
|
|
998
|
+
};
|
|
972
999
|
}
|
package/static/Utils.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ 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,
|
|
10
|
+
function patchLocalSDP(sdp: string, preferH264: boolean, brokenH264Decoder: boolean, preferVP9: boolean, h264spsPpsIdrInKeyframe: boolean, isAudioNack?: boolean, preferRed?: boolean): string;
|
|
11
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;
|
|
@@ -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
|
@@ -23,7 +23,7 @@ declare namespace WebRTCUtils {
|
|
|
23
23
|
/**
|
|
24
24
|
* Инициализирует устройства. До вызова этого метода бесполезно опрашивать другие публичные методы
|
|
25
25
|
*/
|
|
26
|
-
function init(): Promise<
|
|
26
|
+
function init(): Promise<void>;
|
|
27
27
|
/**
|
|
28
28
|
* Возвращает все подключенные камеры
|
|
29
29
|
*/
|
|
@@ -68,6 +68,7 @@ declare namespace WebRTCUtils {
|
|
|
68
68
|
* Проверяет получен ли доступ к микрофону
|
|
69
69
|
*/
|
|
70
70
|
function hasMicrophonePermission(): boolean;
|
|
71
|
+
function getMicrophonePermissionState(): PermissionState | null;
|
|
71
72
|
/**
|
|
72
73
|
* Проверяет получены ли разрешения, необходимые для текущего звонка
|
|
73
74
|
*/
|
|
@@ -121,9 +122,9 @@ declare namespace WebRTCUtils {
|
|
|
121
122
|
*/
|
|
122
123
|
function isScreenCapturingSupported(): boolean;
|
|
123
124
|
/**
|
|
124
|
-
* В некоторых браузерах H264 сломан
|
|
125
|
+
* В некоторых браузерах H264 decoder сломан
|
|
125
126
|
*/
|
|
126
|
-
function
|
|
127
|
+
function isBrokenH264Decoder(): boolean;
|
|
127
128
|
/**
|
|
128
129
|
* В некоторых браузерах VP9 encoder сломан
|
|
129
130
|
*/
|
package/types/Conversation.d.ts
CHANGED
|
@@ -2,27 +2,15 @@ import { TransportTopology } from '../classes/transport/Transport';
|
|
|
2
2
|
import CallDirection from '../enums/CallDirection';
|
|
3
3
|
import ConversationFeature from '../enums/ConversationFeature';
|
|
4
4
|
import ConversationOption from '../enums/ConversationOption';
|
|
5
|
-
import MediaOption from '../enums/MediaOption';
|
|
6
5
|
import UserRole from '../enums/UserRole';
|
|
7
6
|
import { AsrInfo } from './Asr';
|
|
8
7
|
import { IFeaturesPerRole } from './ConversationFeature';
|
|
9
8
|
import { ExternalParticipantId } from './ExternalId';
|
|
10
9
|
import MediaModifiers from './MediaModifiers';
|
|
11
|
-
import MediaSettings from './MediaSettings';
|
|
12
10
|
import MuteStates from './MuteStates';
|
|
13
|
-
import { OkUserId,
|
|
11
|
+
import { OkUserId, ParticipantId } from './Participant';
|
|
14
12
|
import { IRoomId, RoomUrlSharingInfo } from './Room';
|
|
15
13
|
import { RecordInfo } from './SignalingMessage';
|
|
16
|
-
export interface IProcessMuteStateParams {
|
|
17
|
-
mediaOptions?: MediaOption[];
|
|
18
|
-
muteAll?: boolean;
|
|
19
|
-
unmute?: boolean;
|
|
20
|
-
serverSettings?: MediaSettings | null;
|
|
21
|
-
admin?: Participant | null;
|
|
22
|
-
stateUpdated?: boolean;
|
|
23
|
-
requestedMedia?: MediaOption[];
|
|
24
|
-
roomId?: IRoomId;
|
|
25
|
-
}
|
|
26
14
|
/**
|
|
27
15
|
* Данные текущего звонка
|
|
28
16
|
*/
|
|
@@ -70,7 +58,7 @@ export type ConversationData = {
|
|
|
70
58
|
mediaModifiers: MediaModifiers;
|
|
71
59
|
options: ConversationOption[];
|
|
72
60
|
muteStates: Map<IRoomId, MuteStates>;
|
|
73
|
-
|
|
61
|
+
muteStatesPersonal: MuteStates;
|
|
74
62
|
networkRating: number;
|
|
75
63
|
waitingHall: boolean;
|
|
76
64
|
observer: boolean;
|