@vkontakte/calls-sdk 2.4.4-beta.2 → 2.4.4-beta.23
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 +10 -6
- package/abstract/BaseApi.d.ts +1 -1
- package/abstract/BaseSignaling.d.ts +2 -1
- package/calls-sdk.cjs.js +9 -8
- package/classes/Conversation.d.ts +6 -4
- package/classes/MediaSource.d.ts +11 -0
- package/classes/ParticipantIdRegistry.d.ts +1 -0
- package/classes/screenshare/BaseStreamBuilder.d.ts +25 -0
- package/classes/screenshare/StreamBuilder.d.ts +4 -8
- package/classes/screenshare/WebmBuilder.d.ts +19 -0
- package/default/Api.d.ts +1 -1
- package/default/Signaling.d.ts +2 -1
- package/enums/HangupType.d.ts +2 -0
- package/package.json +4 -2
- package/static/External.d.ts +2 -1
- package/static/LibraryManager.d.ts +2 -0
- package/static/Params.d.ts +5 -3
- package/static/Utils.d.ts +1 -1
- package/types/MediaSettings.d.ts +6 -1
- package/types/SignalingMessage.d.ts +3 -1
- package/utils/Media.d.ts +4 -0
- package/calls-sdk.esm.js +0 -11
|
@@ -14,6 +14,7 @@ import UserType from '../enums/UserType';
|
|
|
14
14
|
import { JSONObject } from '../static/Json';
|
|
15
15
|
import { ExternalId } from '../types/ExternalId';
|
|
16
16
|
import MediaModifiers from '../types/MediaModifiers';
|
|
17
|
+
import { IVideoDimentions } from '../types/MediaSettings';
|
|
17
18
|
import MuteStates from '../types/MuteStates';
|
|
18
19
|
import { CompositeUserId, OkUserId } from '../types/Participant';
|
|
19
20
|
import { ParticipantLayout } from '../types/ParticipantLayout';
|
|
@@ -85,7 +86,6 @@ export default class Conversation extends EventEmitter {
|
|
|
85
86
|
private _activeSpeakerId;
|
|
86
87
|
private _lastSignalledActiveSpeakerId;
|
|
87
88
|
private _serverSettings;
|
|
88
|
-
private _signalingServerSettings;
|
|
89
89
|
private static _current;
|
|
90
90
|
private static _activationMutex;
|
|
91
91
|
private static _delayedHangup;
|
|
@@ -194,7 +194,7 @@ export default class Conversation extends EventEmitter {
|
|
|
194
194
|
private _isCallAdmin;
|
|
195
195
|
private _checkAdminRole;
|
|
196
196
|
grantRoles(participantId: CompositeUserId, roles: UserRole[], revoke: boolean): Promise<void>;
|
|
197
|
-
muteParticipant(participantId: CompositeUserId | null, muteStates: MuteStates): Promise<void>;
|
|
197
|
+
muteParticipant(participantId: CompositeUserId | null, muteStates: MuteStates, requestedMedia?: MediaOption[]): Promise<void>;
|
|
198
198
|
pinParticipant(participantId: CompositeUserId, unpin: boolean): Promise<void>;
|
|
199
199
|
updateMediaModifiers(mediaModifiers: MediaModifiers): Promise<void>;
|
|
200
200
|
changeOptions(changes: {
|
|
@@ -215,7 +215,7 @@ export default class Conversation extends EventEmitter {
|
|
|
215
215
|
movieId: string;
|
|
216
216
|
streamType: string;
|
|
217
217
|
}>;
|
|
218
|
-
updateMovie(movieId: string, gain?: number): Promise<void>;
|
|
218
|
+
updateMovie(movieId: string, gain?: number, offset?: string, pause?: boolean): Promise<void>;
|
|
219
219
|
removeMovie(movieId: string): Promise<void>;
|
|
220
220
|
startStream(isRecord?: boolean, name?: string | null, movieId?: string | null, privacy?: 'PUBLIC' | 'FRIENDS' | 'DIRECT_LINK', groupId?: string | null): Promise<SignalingMessage>;
|
|
221
221
|
stopStream(): Promise<SignalingMessage>;
|
|
@@ -224,7 +224,9 @@ export default class Conversation extends EventEmitter {
|
|
|
224
224
|
movieId: any;
|
|
225
225
|
preview: any;
|
|
226
226
|
}>;
|
|
227
|
-
setLocalResolution(width: number, height: number
|
|
227
|
+
setLocalResolution(width: number, height: number, params?: {
|
|
228
|
+
effect: IVideoDimentions;
|
|
229
|
+
}): Promise<void>;
|
|
228
230
|
videoEffect(effect: IEffect | null): Promise<void>;
|
|
229
231
|
private _onLocalMediaStreamChanged;
|
|
230
232
|
private _onScreenSharingStatus;
|
package/classes/MediaSource.d.ts
CHANGED
|
@@ -16,8 +16,12 @@ export declare const enum MediaTrackKind {
|
|
|
16
16
|
'screen' = "screen"
|
|
17
17
|
}
|
|
18
18
|
export declare class MediaSource extends EventEmitter {
|
|
19
|
+
/** Стрим с камеры и микрофона пользователя */
|
|
19
20
|
private _stream;
|
|
21
|
+
/** Последний сохраненный оригинальный видео трек с камеры */
|
|
22
|
+
private _trackVideoStreamBackup;
|
|
20
23
|
private _screenTrack;
|
|
24
|
+
/** Трек для отправки в медиа-канал. Может отличаться при скриншаринге в дата-канал */
|
|
21
25
|
private _sendVideoTrack;
|
|
22
26
|
private _mediaSettings;
|
|
23
27
|
private _videoStatusOnScreenCapturingEnabled;
|
|
@@ -39,6 +43,11 @@ export declare class MediaSource extends EventEmitter {
|
|
|
39
43
|
setVideoStream(stream: MediaStream, isScreen: boolean): Promise<void>;
|
|
40
44
|
private _initDeviceChangeListener;
|
|
41
45
|
private _changeVideoInput;
|
|
46
|
+
/**
|
|
47
|
+
* хелпер для получения трека для передаче либе эффектов. нужен для сохранения оригинального трека с камеры.
|
|
48
|
+
* рассчитываем, что либы при очистке останавливают треки, поэтому передаем копию.
|
|
49
|
+
*/
|
|
50
|
+
private _getVideoEffectTrack;
|
|
42
51
|
/**
|
|
43
52
|
* Установка кастомного стрима для аудио, например аудио-трек вместо звука с микрофона.
|
|
44
53
|
* Может использоваться для тестирования.
|
|
@@ -50,6 +59,8 @@ export declare class MediaSource extends EventEmitter {
|
|
|
50
59
|
private _replaceLocalTrack;
|
|
51
60
|
private _stopLocalTrack;
|
|
52
61
|
private _videoEffect;
|
|
62
|
+
/** останавливает и удаляет сохраненный трек с камеры пользователя */
|
|
63
|
+
private _stopAndRemoveTrackVideoStreamBackup;
|
|
53
64
|
destroy(): void;
|
|
54
65
|
toggleScreenCapturing(enabled: boolean): Promise<void>;
|
|
55
66
|
toggleVideo(enabled: boolean): Promise<void>;
|
|
@@ -2,6 +2,7 @@ import { ParticipantStreamDescription } from '../types/ParticipantStreamDescript
|
|
|
2
2
|
import SignalingMessage from '../types/SignalingMessage';
|
|
3
3
|
export declare class ParticipantIdRegistry {
|
|
4
4
|
private streamDescriptionByCompactId;
|
|
5
|
+
constructor();
|
|
5
6
|
getStreamDescription(compactedId: number): ParticipantStreamDescription | undefined;
|
|
6
7
|
handleMessage(data: ArrayBuffer): SignalingMessage | null;
|
|
7
8
|
private _createParticipantSourcesUpdateNotification;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { CompositeUserId } from '../../types/Participant';
|
|
2
|
+
import { FrameChunk } from './Utils';
|
|
3
|
+
export declare abstract class BaseStreamBuilder {
|
|
4
|
+
protected readonly _participantId: CompositeUserId;
|
|
5
|
+
protected readonly _onStream: (stream: MediaStream) => void;
|
|
6
|
+
protected _chunks: FrameChunk[];
|
|
7
|
+
protected constructor(participantId: CompositeUserId, onStream: (stream: MediaStream) => void);
|
|
8
|
+
appendChunk(chunk: FrameChunk): void;
|
|
9
|
+
destroy(): void;
|
|
10
|
+
protected abstract _processFrame(frame: FrameData): void;
|
|
11
|
+
private _processFrameData;
|
|
12
|
+
static getFrameSize(frameData: Uint8Array): {
|
|
13
|
+
width: number;
|
|
14
|
+
height: number;
|
|
15
|
+
};
|
|
16
|
+
static isBrowserSupported(): boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface FrameData {
|
|
19
|
+
timestamp: number;
|
|
20
|
+
frameData: Uint8Array;
|
|
21
|
+
isVP9: boolean;
|
|
22
|
+
keyframe: boolean;
|
|
23
|
+
width: number;
|
|
24
|
+
height: number;
|
|
25
|
+
}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { CompositeUserId } from '../../types/Participant';
|
|
2
|
-
import {
|
|
3
|
-
export default class StreamBuilder {
|
|
2
|
+
import { BaseStreamBuilder, FrameData } from './BaseStreamBuilder';
|
|
3
|
+
export default class StreamBuilder extends BaseStreamBuilder {
|
|
4
4
|
private readonly _decoder;
|
|
5
5
|
private _decoderReady;
|
|
6
6
|
private _decoderQueue;
|
|
7
|
-
private readonly _participantId;
|
|
8
|
-
private _chunks;
|
|
9
7
|
private readonly _useImageBitmap;
|
|
10
|
-
private _onStream;
|
|
11
8
|
private _canvas;
|
|
12
9
|
private _canvasContext;
|
|
13
10
|
private _stream;
|
|
@@ -15,11 +12,10 @@ export default class StreamBuilder {
|
|
|
15
12
|
constructor(participantId: CompositeUserId, onStream: (stream: MediaStream) => void);
|
|
16
13
|
private _createStream;
|
|
17
14
|
private _removeStream;
|
|
18
|
-
private _processFrameData;
|
|
19
15
|
private _requestCanvasFrame;
|
|
20
16
|
private _drawImage;
|
|
21
|
-
|
|
17
|
+
protected _processFrame(frame: FrameData): void;
|
|
22
18
|
private _decodeQueue;
|
|
23
|
-
appendChunk(chunk: FrameChunk): void;
|
|
24
19
|
destroy(): void;
|
|
20
|
+
static isBrowserSupported(): boolean;
|
|
25
21
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CompositeUserId } from '../../types/Participant';
|
|
2
|
+
import { BaseStreamBuilder, FrameData } from './BaseStreamBuilder';
|
|
3
|
+
export default class WebmBuilder extends BaseStreamBuilder {
|
|
4
|
+
private _mediaBuffer;
|
|
5
|
+
private _video;
|
|
6
|
+
private _stream;
|
|
7
|
+
private _earliestTimestamp;
|
|
8
|
+
private _clusterStartTime;
|
|
9
|
+
private _lastFrameTimestamp;
|
|
10
|
+
constructor(participantId: CompositeUserId, onStream: (stream: MediaStream) => void);
|
|
11
|
+
private static _intToU16BE;
|
|
12
|
+
private static _genWebmHeader;
|
|
13
|
+
private static _genSegmentHeader;
|
|
14
|
+
private static _genClusterHeader;
|
|
15
|
+
private _createVideo;
|
|
16
|
+
protected _processFrame(frame: FrameData): void;
|
|
17
|
+
destroy(): void;
|
|
18
|
+
static isBrowserSupported(): boolean;
|
|
19
|
+
}
|
package/default/Api.d.ts
CHANGED
|
@@ -39,7 +39,7 @@ export default class Api extends BaseApi {
|
|
|
39
39
|
getExternalIdsByOkIds(uids: OkUserId[]): Promise<ExternalId[]>;
|
|
40
40
|
getCachedOkIdByExternalId(externalId: ExternalId): CompositeUserId | null;
|
|
41
41
|
cacheExternalId(participantId: CompositeUserId, externalId: ExternalId): void;
|
|
42
|
-
getConversationParams(): Promise<ConversationParams>;
|
|
42
|
+
getConversationParams(conversationId?: string): Promise<ConversationParams>;
|
|
43
43
|
getUserId(): OkUserId | null;
|
|
44
44
|
setUserId(userId: OkUserId): void;
|
|
45
45
|
hangupConversation(conversationId: string): void;
|
package/default/Signaling.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { ParticipantIdRegistry } from '../classes/ParticipantIdRegistry';
|
|
|
3
3
|
import { PerfStatReport } from '../classes/transport/PerfStatReporter';
|
|
4
4
|
import { TransportTopology } from '../classes/transport/Transport';
|
|
5
5
|
import ConversationOption from '../enums/ConversationOption';
|
|
6
|
+
import MediaOption from '../enums/MediaOption';
|
|
6
7
|
import RecordRole from '../enums/RecordRole';
|
|
7
8
|
import SignalingCommandType from '../enums/SignalingCommandType';
|
|
8
9
|
import SignalingConnectionType from '../enums/SignalingConnectionType';
|
|
@@ -104,7 +105,7 @@ export default class Signaling extends BaseSignaling {
|
|
|
104
105
|
chatHistory(count: number): Promise<SignalingMessage>;
|
|
105
106
|
customData(data: JSONObject, participantId: CompositeUserId | null): Promise<SignalingMessage>;
|
|
106
107
|
grantRoles(participantId: CompositeUserId, roles: UserRole[], revoke: boolean): Promise<SignalingMessage>;
|
|
107
|
-
muteParticipant(participantId: CompositeUserId | null, muteStates: MuteStates): Promise<SignalingMessage>;
|
|
108
|
+
muteParticipant(participantId: CompositeUserId | null, muteStates: MuteStates, requestedMedia: MediaOption[]): Promise<SignalingMessage>;
|
|
108
109
|
pinParticipant(participantId: CompositeUserId, unpin: boolean): Promise<SignalingMessage>;
|
|
109
110
|
updateMediaModifiers(mediaModifiers: MediaModifiers): Promise<SignalingMessage>;
|
|
110
111
|
changeOptions(changes: {
|
package/enums/HangupType.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ declare enum HangupType {
|
|
|
10
10
|
BUSY = "BUSY",
|
|
11
11
|
FAILED = "FAILED",
|
|
12
12
|
NETWORK_ERROR = "NETWORK_ERROR",
|
|
13
|
+
KILLED = "KILLED",
|
|
14
|
+
BANNED = "BANNED",
|
|
13
15
|
CALLER_IS_BLOCKED = "CALLER_IS_BLOCKED",
|
|
14
16
|
NOT_FRIENDS = "NOT_FRIENDS",
|
|
15
17
|
CALLEE_IS_OFFLINE = "CALLEE_IS_OFFLINE",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vkontakte/calls-sdk",
|
|
3
|
-
"version": "2.4.4-beta.
|
|
3
|
+
"version": "2.4.4-beta.23",
|
|
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,10 +14,12 @@
|
|
|
14
14
|
"**/*.d.ts"
|
|
15
15
|
],
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@vkontakte/calls-video-effects": "^1.0.6-beta.
|
|
17
|
+
"@vkontakte/calls-video-effects": "^1.0.6-beta.18",
|
|
18
18
|
"@vkontakte/libvpx": "2.0.9",
|
|
19
19
|
"big-integer": "1.6.48",
|
|
20
|
+
"bit-buffer": "0.2.5",
|
|
20
21
|
"messagepack": "1.1.12",
|
|
22
|
+
"simple-ebml-builder": "^0.2.2",
|
|
21
23
|
"webrtc-adapter": "7.7.0"
|
|
22
24
|
}
|
|
23
25
|
}
|
package/static/External.d.ts
CHANGED
|
@@ -166,8 +166,9 @@ declare namespace External {
|
|
|
166
166
|
* @param muteAll Команда распространяется на всех участников звонка
|
|
167
167
|
* @param unmute Разрешение включить устройство
|
|
168
168
|
* @param userId Пользователь, для которого изменились разрешения или `null` для текущего пользователя
|
|
169
|
+
* @param adminId Пользователь, который изменил разрешения
|
|
169
170
|
*/
|
|
170
|
-
function onMuteStates(muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll?: boolean, unmute?: boolean, userId?: ExternalId | null): void;
|
|
171
|
+
function onMuteStates(muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll?: boolean, unmute?: boolean, userId?: ExternalId | null, adminId?: ExternalId | null): void;
|
|
171
172
|
/**
|
|
172
173
|
* Изменились роли собеседника в звонке
|
|
173
174
|
*
|
package/static/Params.d.ts
CHANGED
|
@@ -196,6 +196,7 @@ export declare type ParamsObject = {
|
|
|
196
196
|
producerCommandDataChannel: boolean;
|
|
197
197
|
consumerScreenDataChannel: boolean;
|
|
198
198
|
producerScreenDataChannel: boolean;
|
|
199
|
+
screenShareWebmBuilder: boolean;
|
|
199
200
|
noiseSuppression: boolean;
|
|
200
201
|
/**
|
|
201
202
|
* Количество входящих видео-треков.
|
|
@@ -211,6 +212,7 @@ export declare type ParamsObject = {
|
|
|
211
212
|
* он хочет видеть, через вызов updateDisplayLayout
|
|
212
213
|
*/
|
|
213
214
|
videoTracksCount: number;
|
|
215
|
+
movieShare: boolean;
|
|
214
216
|
filteredMessages: boolean;
|
|
215
217
|
breakVideoPayloadTypes: boolean;
|
|
216
218
|
/**
|
|
@@ -296,7 +298,7 @@ export declare type ParamsObject = {
|
|
|
296
298
|
/**
|
|
297
299
|
* Изменились состояния устройств пользователя или разрешения включать камеру/микрофон
|
|
298
300
|
*/
|
|
299
|
-
onMuteStates?: (muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll: boolean, unmute: boolean, userId: ExternalId | null) => void;
|
|
301
|
+
onMuteStates?: (muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll: boolean, unmute: boolean, userId: ExternalId | null, adminId: ExternalId | null) => void;
|
|
300
302
|
/**
|
|
301
303
|
* Изменились роли собеседника в звонке
|
|
302
304
|
*/
|
|
@@ -480,9 +482,8 @@ export default abstract class Params {
|
|
|
480
482
|
static get producerNotificationDataChannel(): boolean;
|
|
481
483
|
static get producerCommandDataChannel(): boolean;
|
|
482
484
|
static get consumerScreenDataChannel(): boolean;
|
|
483
|
-
static set consumerScreenDataChannel(value: boolean);
|
|
484
485
|
static get producerScreenDataChannel(): boolean;
|
|
485
|
-
static
|
|
486
|
+
static get screenShareWebmBuilder(): boolean;
|
|
486
487
|
static get noiseSuppression(): boolean;
|
|
487
488
|
static set noiseSuppression(value: boolean);
|
|
488
489
|
static get preferH264(): boolean;
|
|
@@ -491,6 +492,7 @@ export default abstract class Params {
|
|
|
491
492
|
static get consumerScreenTrack(): boolean;
|
|
492
493
|
static get producerScreenTrack(): boolean;
|
|
493
494
|
static isUnifiedPlanSupported(name: string, version: number): boolean;
|
|
495
|
+
static get movieShare(): boolean;
|
|
494
496
|
static get videoTracksCount(): number;
|
|
495
497
|
static get breakVideoPayloadTypes(): boolean;
|
|
496
498
|
static get filteredMessages(): boolean;
|
package/static/Utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BigInteger } from 'big-integer';
|
|
1
|
+
import type { BigInteger } from 'big-integer';
|
|
2
2
|
import UserType from '../enums/UserType';
|
|
3
3
|
import { ExternalParticipant } from '../types/ExternalId';
|
|
4
4
|
import { CompositeUserId, OkUserId, Participant, ParticipantStateMapped } from '../types/Participant';
|
package/types/MediaSettings.d.ts
CHANGED
|
@@ -17,9 +17,14 @@ export declare type MediaSettings = {
|
|
|
17
17
|
videoStreams: VideoStreamInfo[];
|
|
18
18
|
};
|
|
19
19
|
export declare type VideoStreamInfo = {
|
|
20
|
-
|
|
20
|
+
id: string;
|
|
21
21
|
source: string;
|
|
22
|
+
vkMovieId?: string;
|
|
22
23
|
};
|
|
23
24
|
export default MediaSettings;
|
|
24
25
|
export declare function compareMediaSettings(ms1: MediaSettings, ms2: MediaSettings): boolean;
|
|
25
26
|
export declare function createMediaSettingsWithDefaults(ms?: Partial<MediaSettings>): MediaSettings;
|
|
27
|
+
export interface IVideoDimentions {
|
|
28
|
+
width: number;
|
|
29
|
+
height: number;
|
|
30
|
+
}
|
|
@@ -120,9 +120,11 @@ declare namespace SignalingMessage {
|
|
|
120
120
|
roles?: UserRole[];
|
|
121
121
|
}
|
|
122
122
|
export interface MuteParticipant extends Notification {
|
|
123
|
+
adminId?: CompositeUserId;
|
|
123
124
|
participantId?: CompositeUserId;
|
|
124
|
-
muteStates
|
|
125
|
+
muteStates: MuteStates;
|
|
125
126
|
unmuteOptions?: MediaOption[];
|
|
127
|
+
mediaOptions: MediaOption[];
|
|
126
128
|
unmute?: boolean;
|
|
127
129
|
muteAll?: boolean;
|
|
128
130
|
}
|
package/utils/Media.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const stopMediaStreamTrack: (track: MediaStreamTrack) => void;
|
|
2
|
+
export declare const stopMediaStreamTracks: (stream: MediaStream) => void;
|
|
3
|
+
export declare const stopMediaStreamVideoTracks: (stream: MediaStream) => void;
|
|
4
|
+
export declare const cloneVideoTrack: (stream: MediaStream) => MediaStreamTrack;
|