@vkontakte/calls-sdk 2.4.4-beta.2 → 2.4.4-beta.20
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/calls-sdk.esm.js +9 -8
- package/classes/Conversation.d.ts +6 -3
- package/classes/MediaSource.d.ts +11 -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 +1 -0
- package/package.json +4 -2
- package/static/External.d.ts +2 -1
- package/static/Params.d.ts +3 -3
- package/types/MediaSettings.d.ts +5 -1
- package/types/SignalingMessage.d.ts +3 -1
- package/utils/Media.d.ts +4 -0
|
@@ -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';
|
|
@@ -194,7 +195,7 @@ export default class Conversation extends EventEmitter {
|
|
|
194
195
|
private _isCallAdmin;
|
|
195
196
|
private _checkAdminRole;
|
|
196
197
|
grantRoles(participantId: CompositeUserId, roles: UserRole[], revoke: boolean): Promise<void>;
|
|
197
|
-
muteParticipant(participantId: CompositeUserId | null, muteStates: MuteStates): Promise<void>;
|
|
198
|
+
muteParticipant(participantId: CompositeUserId | null, muteStates: MuteStates, requestedMedia?: MediaOption[]): Promise<void>;
|
|
198
199
|
pinParticipant(participantId: CompositeUserId, unpin: boolean): Promise<void>;
|
|
199
200
|
updateMediaModifiers(mediaModifiers: MediaModifiers): Promise<void>;
|
|
200
201
|
changeOptions(changes: {
|
|
@@ -215,7 +216,7 @@ export default class Conversation extends EventEmitter {
|
|
|
215
216
|
movieId: string;
|
|
216
217
|
streamType: string;
|
|
217
218
|
}>;
|
|
218
|
-
updateMovie(movieId: string, gain?: number): Promise<void>;
|
|
219
|
+
updateMovie(movieId: string, gain?: number, offset?: string, pause?: boolean): Promise<void>;
|
|
219
220
|
removeMovie(movieId: string): Promise<void>;
|
|
220
221
|
startStream(isRecord?: boolean, name?: string | null, movieId?: string | null, privacy?: 'PUBLIC' | 'FRIENDS' | 'DIRECT_LINK', groupId?: string | null): Promise<SignalingMessage>;
|
|
221
222
|
stopStream(): Promise<SignalingMessage>;
|
|
@@ -224,7 +225,9 @@ export default class Conversation extends EventEmitter {
|
|
|
224
225
|
movieId: any;
|
|
225
226
|
preview: any;
|
|
226
227
|
}>;
|
|
227
|
-
setLocalResolution(width: number, height: number
|
|
228
|
+
setLocalResolution(width: number, height: number, params?: {
|
|
229
|
+
effect: IVideoDimentions;
|
|
230
|
+
}): Promise<void>;
|
|
228
231
|
videoEffect(effect: IEffect | null): Promise<void>;
|
|
229
232
|
private _onLocalMediaStreamChanged;
|
|
230
233
|
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>;
|
|
@@ -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
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.20",
|
|
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
|
* Количество входящих видео-треков.
|
|
@@ -296,7 +297,7 @@ export declare type ParamsObject = {
|
|
|
296
297
|
/**
|
|
297
298
|
* Изменились состояния устройств пользователя или разрешения включать камеру/микрофон
|
|
298
299
|
*/
|
|
299
|
-
onMuteStates?: (muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll: boolean, unmute: boolean, userId: ExternalId | null) => void;
|
|
300
|
+
onMuteStates?: (muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll: boolean, unmute: boolean, userId: ExternalId | null, adminId: ExternalId | null) => void;
|
|
300
301
|
/**
|
|
301
302
|
* Изменились роли собеседника в звонке
|
|
302
303
|
*/
|
|
@@ -480,9 +481,8 @@ export default abstract class Params {
|
|
|
480
481
|
static get producerNotificationDataChannel(): boolean;
|
|
481
482
|
static get producerCommandDataChannel(): boolean;
|
|
482
483
|
static get consumerScreenDataChannel(): boolean;
|
|
483
|
-
static set consumerScreenDataChannel(value: boolean);
|
|
484
484
|
static get producerScreenDataChannel(): boolean;
|
|
485
|
-
static
|
|
485
|
+
static get screenShareWebmBuilder(): boolean;
|
|
486
486
|
static get noiseSuppression(): boolean;
|
|
487
487
|
static set noiseSuppression(value: boolean);
|
|
488
488
|
static get preferH264(): boolean;
|
package/types/MediaSettings.d.ts
CHANGED
|
@@ -17,9 +17,13 @@ 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
22
|
};
|
|
23
23
|
export default MediaSettings;
|
|
24
24
|
export declare function compareMediaSettings(ms1: MediaSettings, ms2: MediaSettings): boolean;
|
|
25
25
|
export declare function createMediaSettingsWithDefaults(ms?: Partial<MediaSettings>): MediaSettings;
|
|
26
|
+
export interface IVideoDimentions {
|
|
27
|
+
width: number;
|
|
28
|
+
height: number;
|
|
29
|
+
}
|
|
@@ -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;
|