@vkontakte/calls-sdk 2.6.3-dev.1fd3364.0 → 2.6.3-dev.3b25f7c.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 +40 -12
- package/abstract/BaseSignaling.d.ts +4 -5
- package/calls-sdk.cjs.js +8 -8
- package/calls-sdk.esm.js +8 -8
- package/classes/Conversation.d.ts +23 -10
- package/classes/MediaSource.d.ts +16 -2
- package/classes/codec/WebCodecsEncoder.d.ts +3 -1
- package/classes/screenshare/ScreenCaptureSender.d.ts +2 -1
- package/classes/screenshare/ScreenCongestionControl.d.ts +3 -1
- package/classes/transport/DirectTransport.d.ts +12 -0
- package/classes/transport/ServerTransport.d.ts +12 -1
- package/classes/transport/Transport.d.ts +6 -1
- package/default/Signaling.d.ts +6 -7
- package/enums/DataChannelLabel.d.ts +2 -1
- package/enums/MediaOption.d.ts +2 -1
- package/package.json +2 -1
- package/static/External.d.ts +3 -2
- package/static/Params.d.ts +54 -10
- package/static/WebRTCUtils.d.ts +7 -2
- package/types/Asr.d.ts +4 -0
- package/types/MediaSettings.d.ts +8 -0
- package/types/MovieShare.d.ts +138 -9
- package/types/MuteStates.d.ts +3 -3
- package/types/ParticipantStreamDescription.d.ts +2 -1
- package/types/ScreenCaptureSettings.d.ts +14 -0
- package/types/SignalingMessage.d.ts +1 -0
- package/types/Streams.d.ts +3 -0
|
@@ -12,7 +12,7 @@ import UpdateDisplayLayoutErrorReason from '../enums/UpdateDisplayLayoutErrorRea
|
|
|
12
12
|
import UserRole from '../enums/UserRole';
|
|
13
13
|
import UserType from '../enums/UserType';
|
|
14
14
|
import { JSONObject } from '../static/Json';
|
|
15
|
-
import { AsrInfo } from '../types/Asr';
|
|
15
|
+
import { AsrInfo, IAsrStartParams } from '../types/Asr';
|
|
16
16
|
import { IFeaturesPerRole } from '../types/ConversationFeature';
|
|
17
17
|
import { ExternalParticipant, ExternalParticipantId, ExternalParticipantListChunk, ExternalUserId } from '../types/ExternalId';
|
|
18
18
|
import MediaModifiers from '../types/MediaModifiers';
|
|
@@ -24,6 +24,7 @@ import { ParticipantLayout } from '../types/ParticipantLayout';
|
|
|
24
24
|
import { ParticipantListChunkParameters } from '../types/ParticipantListChunk';
|
|
25
25
|
import ParticipantPriority from '../types/ParticipantPriority';
|
|
26
26
|
import { ParticipantStreamDescription } from '../types/ParticipantStreamDescription';
|
|
27
|
+
import { ScreenCaptureSettings } from '../types/ScreenCaptureSettings';
|
|
27
28
|
import SignalingMessage, { RecordInfo } from '../types/SignalingMessage';
|
|
28
29
|
import { WaitingHallResponse } from '../types/WaitingHall';
|
|
29
30
|
import EventEmitter from './EventEmitter';
|
|
@@ -177,15 +178,12 @@ export default class Conversation extends EventEmitter {
|
|
|
177
178
|
* Обрабатывает данные connection из сигналинга. Должен вызываться после `_registerParticipants`
|
|
178
179
|
*
|
|
179
180
|
* @param connection
|
|
180
|
-
* @private
|
|
181
|
-
* @hidden
|
|
182
181
|
*/
|
|
183
182
|
private _processConnectionData;
|
|
184
183
|
/**
|
|
185
184
|
* Обрабатывает информацию о сессионных залах
|
|
185
|
+
*
|
|
186
186
|
* @param connection
|
|
187
|
-
* @private
|
|
188
|
-
* @hidden
|
|
189
187
|
*/
|
|
190
188
|
private _processRooms;
|
|
191
189
|
/**
|
|
@@ -219,7 +217,16 @@ export default class Conversation extends EventEmitter {
|
|
|
219
217
|
private _onAddParticipant;
|
|
220
218
|
private _onRemoveParticipant;
|
|
221
219
|
changeDevice(kind: MediaDeviceKind): Promise<void>;
|
|
222
|
-
toggleScreenCapturing(
|
|
220
|
+
toggleScreenCapturing(settings: ScreenCaptureSettings): Promise<void>;
|
|
221
|
+
disableScreenCapturing(): Promise<void>;
|
|
222
|
+
toggleAnimojiCapturing(state: boolean): void;
|
|
223
|
+
setAnimojiSvg(
|
|
224
|
+
/** svg в незашифрованном (string) или зашифрованном (ArrayBuffer) виде */
|
|
225
|
+
svg: string | ArrayBuffer,
|
|
226
|
+
/** participantId внешнего участника звонка, не требуется для текущего участника (текущего пользователя клиента) */
|
|
227
|
+
participantId?: ParticipantId | null,
|
|
228
|
+
/** ключ расшифровки svg внешнего пользователя или кастомный ключ, не требуется для незашифрованных svg */
|
|
229
|
+
decryptionKey?: string | null): void;
|
|
223
230
|
setVideoStream(stream: MediaStream, isScreen?: boolean): Promise<void>;
|
|
224
231
|
setAudioStream(stream: MediaStream): Promise<void>;
|
|
225
232
|
toggleLocalVideo(enabled: boolean): Promise<void>;
|
|
@@ -252,10 +259,10 @@ export default class Conversation extends EventEmitter {
|
|
|
252
259
|
private _isCallAdmin;
|
|
253
260
|
private _checkAdminRole;
|
|
254
261
|
grantRoles(participantId: CompositeUserId, roles: UserRole[], revoke: boolean): Promise<void>;
|
|
255
|
-
startAsr(): Promise<void>;
|
|
262
|
+
startAsr(params: IAsrStartParams): Promise<void>;
|
|
256
263
|
stopAsr(): Promise<void>;
|
|
257
264
|
requestAsr(request: boolean): Promise<void>;
|
|
258
|
-
muteParticipant(participantId: ParticipantId | null, muteStates: MuteStates, requestedMedia
|
|
265
|
+
muteParticipant(participantId: ParticipantId | null, muteStates: MuteStates, requestedMedia?: MediaOption[], roomId?: number | null): Promise<void>;
|
|
259
266
|
enableFeatureForRoles(feature: ConversationFeature, roles: UserRole[]): Promise<void>;
|
|
260
267
|
pinParticipant(participantId: ParticipantId, unpin: boolean): Promise<void>;
|
|
261
268
|
updateMediaModifiers(mediaModifiers: MediaModifiers): Promise<void>;
|
|
@@ -274,11 +281,11 @@ export default class Conversation extends EventEmitter {
|
|
|
274
281
|
createJoinLink(): Promise<string>;
|
|
275
282
|
removeJoinLink(): Promise<never>;
|
|
276
283
|
addMovie({ movieId, gain, metadata }: IAddMovieParams): Promise<{
|
|
277
|
-
movieId:
|
|
284
|
+
movieId: number;
|
|
278
285
|
streamType: string;
|
|
279
286
|
}>;
|
|
280
287
|
updateMovie(params: IUpdateMovieData): Promise<void>;
|
|
281
|
-
removeMovie(movieId:
|
|
288
|
+
removeMovie(movieId: number): Promise<void>;
|
|
282
289
|
updateRooms(rooms: SignalingMessage.Room[], assignRandomly: boolean): Promise<void>;
|
|
283
290
|
activateRooms(roomIds: number[], deactivate: boolean): Promise<void>;
|
|
284
291
|
switchRoom(toRoomId: number | null, participantId?: ParticipantId): Promise<void>;
|
|
@@ -337,6 +344,12 @@ export default class Conversation extends EventEmitter {
|
|
|
337
344
|
private _onOptionsChanged;
|
|
338
345
|
private _onNetworkStatus;
|
|
339
346
|
private _onRemoteStreamSecond;
|
|
347
|
+
/**
|
|
348
|
+
* Коллбек, вызывающийся при получении/остановке стрима от AnimojiReceiver
|
|
349
|
+
* @param participantId - участник, к которому относится стрим
|
|
350
|
+
* @param stream - стрим анимированного аватара, null в случае остановки стрима
|
|
351
|
+
*/
|
|
352
|
+
private _onAnimojiStream;
|
|
340
353
|
private _onPeerConnectionClosed;
|
|
341
354
|
private _changeFeatureSet;
|
|
342
355
|
private _changeNeedRate;
|
package/classes/MediaSource.d.ts
CHANGED
|
@@ -2,10 +2,12 @@ import type { IEffect } from '@vkontakte/calls-video-effects';
|
|
|
2
2
|
import EventEmitter from '../classes/EventEmitter';
|
|
3
3
|
import MediaOption from '../enums/MediaOption';
|
|
4
4
|
import MediaSettings from '../types/MediaSettings';
|
|
5
|
+
import { ScreenCaptureSettings } from '../types/ScreenCaptureSettings';
|
|
5
6
|
export declare const enum MediaSourceEvent {
|
|
6
7
|
SOURCE_CHANGED = "SOURCE_CHANGED",
|
|
7
8
|
TRACK_REPLACED = "TRACK_REPLACED",
|
|
8
|
-
SCREEN_STATUS = "SCREEN_STATUS"
|
|
9
|
+
SCREEN_STATUS = "SCREEN_STATUS",
|
|
10
|
+
ANIMOJI_STATUS = "ANIMOJI_STATUS"
|
|
9
11
|
}
|
|
10
12
|
/**
|
|
11
13
|
* Тип трека
|
|
@@ -29,12 +31,17 @@ export declare class MediaSource extends EventEmitter {
|
|
|
29
31
|
private _videoStatusOnScreenCapturingEnabled;
|
|
30
32
|
private _effect;
|
|
31
33
|
private _onDeviceChange;
|
|
34
|
+
/** MediaSource занят при переключении камеры или микрофона */
|
|
35
|
+
private _sourceBusy;
|
|
36
|
+
/** Состояние выключателя Animoji в UI */
|
|
37
|
+
private _animojiEnabled;
|
|
32
38
|
constructor();
|
|
33
39
|
request(mediaOptions?: MediaOption[], needEmptyTracks?: boolean): Promise<void>;
|
|
34
40
|
getStream(): MediaStream | null;
|
|
35
41
|
getScreenTrack(): MediaStreamTrack | null;
|
|
36
42
|
getSendVideoTrack(noDataChannel?: boolean): MediaStreamTrack | null;
|
|
37
43
|
private _getSendAudioTrack;
|
|
44
|
+
getAnimojiEnabled(): boolean;
|
|
38
45
|
addTrackToPeerConnection(pc: RTCPeerConnection, observer: boolean, noDataChannel: boolean, audioRed: boolean): void;
|
|
39
46
|
getMediaSettings(): MediaSettings;
|
|
40
47
|
changeDevice(kind: MediaDeviceKind): Promise<void>;
|
|
@@ -57,10 +64,13 @@ export declare class MediaSource extends EventEmitter {
|
|
|
57
64
|
* Может использоваться для тестирования.
|
|
58
65
|
*/
|
|
59
66
|
setAudioStream(stream: MediaStream): Promise<void>;
|
|
67
|
+
private _busy;
|
|
68
|
+
private _free;
|
|
60
69
|
private _changeAudioInput;
|
|
61
70
|
private _changeScreen;
|
|
62
71
|
private _disableScreenCapture;
|
|
63
72
|
private disableAudioShare;
|
|
73
|
+
private stopAudioShareTrack;
|
|
64
74
|
private getSilentAudioShareTrack;
|
|
65
75
|
private _replaceLocalTrack;
|
|
66
76
|
private _stopLocalTrack;
|
|
@@ -68,9 +78,13 @@ export declare class MediaSource extends EventEmitter {
|
|
|
68
78
|
/** останавливает и удаляет сохраненный трек с камеры пользователя */
|
|
69
79
|
private _stopAndRemoveTrackVideoStreamBackup;
|
|
70
80
|
destroy(): void;
|
|
71
|
-
toggleScreenCapturing(
|
|
81
|
+
toggleScreenCapturing(settings: ScreenCaptureSettings): Promise<void>;
|
|
82
|
+
disableScreenCapturing(): Promise<void>;
|
|
72
83
|
toggleVideo(enabled: boolean): Promise<void>;
|
|
73
84
|
toggleAudio(enabled: boolean): Promise<void>;
|
|
85
|
+
toggleAnimojiCapturing(enabled: boolean): void;
|
|
86
|
+
onAnimojiSender(created: boolean): void;
|
|
87
|
+
onAnimojiStream(stream?: MediaStream | null): Promise<void>;
|
|
74
88
|
setResolution(width: number, height: number): Promise<void>;
|
|
75
89
|
updateNoiseSuppression(): Promise<void>;
|
|
76
90
|
videoEffect(effect: IEffect | null): Promise<void>;
|
|
@@ -7,7 +7,9 @@ export default class WebCodecsEncoder extends WorkerBase implements IEncoder {
|
|
|
7
7
|
private readonly _onFrame;
|
|
8
8
|
private readonly _useCongestionControl;
|
|
9
9
|
private readonly _maxBitrate;
|
|
10
|
-
|
|
10
|
+
private readonly _useCbr;
|
|
11
|
+
private readonly _frameRate;
|
|
12
|
+
constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number, useCbr: boolean, frameRate: number);
|
|
11
13
|
init(): Promise<void>;
|
|
12
14
|
requestFrame(keyFrame?: boolean): void;
|
|
13
15
|
setBitrate(bitrate: number, useCbr: boolean): void;
|
|
@@ -3,6 +3,7 @@ export default class ScreenCaptureSender {
|
|
|
3
3
|
private readonly _encoder;
|
|
4
4
|
private readonly _datachannel;
|
|
5
5
|
private readonly _signaling;
|
|
6
|
+
private readonly _fastSharing;
|
|
6
7
|
private _destroyed;
|
|
7
8
|
private _needKeyframe;
|
|
8
9
|
private readonly DATA_SIZE;
|
|
@@ -13,7 +14,7 @@ export default class ScreenCaptureSender {
|
|
|
13
14
|
private _feedback;
|
|
14
15
|
private _lastSharingStat;
|
|
15
16
|
private _congestionControlEnabled;
|
|
16
|
-
constructor(track: MediaStreamTrack, datachannel: RTCDataChannel, signaling: BaseSignaling);
|
|
17
|
+
constructor(track: MediaStreamTrack, datachannel: RTCDataChannel, signaling: BaseSignaling, fastSharing: boolean);
|
|
17
18
|
private _requestFrame;
|
|
18
19
|
private _wrapHeader;
|
|
19
20
|
private _stopPacket;
|
|
@@ -3,6 +3,7 @@ import { SharingStatReport } from './SharingStatReport';
|
|
|
3
3
|
export default class ScreenCongestionControl {
|
|
4
4
|
private readonly _onCongestion;
|
|
5
5
|
private readonly _ccEnabled;
|
|
6
|
+
private readonly _fastSharing;
|
|
6
7
|
private _minBitrate;
|
|
7
8
|
private _maxBitrate;
|
|
8
9
|
private _targetBitrate;
|
|
@@ -17,8 +18,9 @@ export default class ScreenCongestionControl {
|
|
|
17
18
|
private _minDelay;
|
|
18
19
|
private _maxDelay;
|
|
19
20
|
private _largeDelayDuration;
|
|
20
|
-
constructor(onCongestion: OnCongestionCallback, minBitrate: number, maxBitrate: number, ccEnabled: boolean);
|
|
21
|
+
constructor(onCongestion: OnCongestionCallback, minBitrate: number, maxBitrate: number, ccEnabled: boolean, fastSharing: boolean);
|
|
21
22
|
checkDelay(frameNum: number, delay: number, bitrateK: number): void;
|
|
23
|
+
private _setBitrate;
|
|
22
24
|
private _calcDelay;
|
|
23
25
|
reconfigure(minBitrate: number, maxBitrate: number): void;
|
|
24
26
|
getStat(): SharingStatReport;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AnimojiSvgData } from '@vkontakte/calls-vmoji';
|
|
1
2
|
import BaseSignaling from '../../abstract/BaseSignaling';
|
|
2
3
|
import { ParticipantId } from '../../types/Participant';
|
|
3
4
|
import ServerSettings from '../../types/ServerSettings';
|
|
@@ -13,6 +14,10 @@ export default class DirectTransport extends EventEmitter {
|
|
|
13
14
|
private _remoteSDP;
|
|
14
15
|
private _remoteCandidates;
|
|
15
16
|
private _state;
|
|
17
|
+
private _animojiDataChannel;
|
|
18
|
+
private _animojiReceiver;
|
|
19
|
+
private _animojiSender;
|
|
20
|
+
private _animojiSvgDataByParticipantId;
|
|
16
21
|
private _isOpen;
|
|
17
22
|
private _remotePeerId;
|
|
18
23
|
private _statInterval;
|
|
@@ -39,6 +44,7 @@ export default class DirectTransport extends EventEmitter {
|
|
|
39
44
|
preventRestart(): void;
|
|
40
45
|
allowRestart(): void;
|
|
41
46
|
close(error?: Error): void;
|
|
47
|
+
setAnimojiSvg(participantId: ParticipantId, svgData: AnimojiSvgData): void;
|
|
42
48
|
private _setState;
|
|
43
49
|
private _onSignalingNotification;
|
|
44
50
|
private _handleTransmittedData;
|
|
@@ -58,6 +64,7 @@ export default class DirectTransport extends EventEmitter {
|
|
|
58
64
|
private _createAnswer;
|
|
59
65
|
private static _patchDescription;
|
|
60
66
|
private _onReplacedTrack;
|
|
67
|
+
private _onAnimojiStatus;
|
|
61
68
|
private _startStatInterval;
|
|
62
69
|
private _stopStatInterval;
|
|
63
70
|
private _checkBadNetwork;
|
|
@@ -65,4 +72,9 @@ export default class DirectTransport extends EventEmitter {
|
|
|
65
72
|
private _stopSettingsInterval;
|
|
66
73
|
private _calcFingerprint;
|
|
67
74
|
private _applySettings;
|
|
75
|
+
private _createDataChannel;
|
|
76
|
+
private _createAnimojiReceiver;
|
|
77
|
+
private _removeAnimojiReceiver;
|
|
78
|
+
private _createAnimojiSender;
|
|
79
|
+
private _removeAnimojiSender;
|
|
68
80
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AnimojiSvgData } from '@vkontakte/calls-vmoji';
|
|
1
2
|
import BaseSignaling from '../../abstract/BaseSignaling';
|
|
2
3
|
import { ParticipantId } from '../../types/Participant';
|
|
3
4
|
import ServerSettings from '../../types/ServerSettings';
|
|
@@ -14,6 +15,10 @@ export default class ServerTransport extends EventEmitter {
|
|
|
14
15
|
private _producerScreen;
|
|
15
16
|
private _consumerScreen;
|
|
16
17
|
private _asr;
|
|
18
|
+
private _animojiDataChannel;
|
|
19
|
+
private _animojiReceiver;
|
|
20
|
+
private _animojiSender;
|
|
21
|
+
private _animojiSvgDataByParticipantId;
|
|
17
22
|
private _isOpen;
|
|
18
23
|
private _observer;
|
|
19
24
|
private _reconnectionPrevented;
|
|
@@ -36,7 +41,7 @@ export default class ServerTransport extends EventEmitter {
|
|
|
36
41
|
private _rtpReceiversByStreamId;
|
|
37
42
|
private _producerSessionId;
|
|
38
43
|
private _newAudioShareTrack;
|
|
39
|
-
constructor(signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings);
|
|
44
|
+
constructor(signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, animojiSvgDataByParticipantId?: Record<ParticipantId, AnimojiSvgData>);
|
|
40
45
|
getState(): TransportState;
|
|
41
46
|
updateStatisticsInterval(): void;
|
|
42
47
|
open(observer?: boolean): void;
|
|
@@ -45,6 +50,7 @@ export default class ServerTransport extends EventEmitter {
|
|
|
45
50
|
preventRestart(): void;
|
|
46
51
|
allowRestart(): void;
|
|
47
52
|
updateSettings(settings: ServerSettings): void;
|
|
53
|
+
setAnimojiSvg(participantId: ParticipantId, svgData: AnimojiSvgData): void;
|
|
48
54
|
private _closeConnection;
|
|
49
55
|
private static _closeDataChannel;
|
|
50
56
|
private _createDataChannel;
|
|
@@ -60,8 +66,13 @@ export default class ServerTransport extends EventEmitter {
|
|
|
60
66
|
private _removeCaptureSender;
|
|
61
67
|
private _createCaptureReceiver;
|
|
62
68
|
private _removeCaptureReceiver;
|
|
69
|
+
private _createAnimojiSender;
|
|
70
|
+
private _removeAnimojiSender;
|
|
71
|
+
private _createAnimojiReceiver;
|
|
72
|
+
private _removeAnimojiReceiver;
|
|
63
73
|
private _applyConsumerSettings;
|
|
64
74
|
private _onScreenSharingStatus;
|
|
75
|
+
private _onAnimojiStatus;
|
|
65
76
|
private _setState;
|
|
66
77
|
private _startStatInterval;
|
|
67
78
|
private _stopStatInterval;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AnimojiSvgData } from '@vkontakte/calls-vmoji/types';
|
|
1
2
|
import BaseSignaling from '../../abstract/BaseSignaling';
|
|
2
3
|
import { ParticipantId } from '../../types/Participant';
|
|
3
4
|
import ServerSettings from '../../types/ServerSettings';
|
|
@@ -17,7 +18,8 @@ export declare const enum TransportEvent {
|
|
|
17
18
|
TOPOLOGY_CHANGED = "TOPOLOGY_CHANGED",
|
|
18
19
|
NETWORK_STATUS = "NETWORK_STATUS",
|
|
19
20
|
PEER_CONNECTION_CLOSED = "PEER_CONNECTION_CLOSED",
|
|
20
|
-
ASR_TRANSCRIPTION = "ASR_TRANSCRIPTION"
|
|
21
|
+
ASR_TRANSCRIPTION = "ASR_TRANSCRIPTION",
|
|
22
|
+
ANIMOJI_STREAM = "ANIMOJI_STREAM"
|
|
21
23
|
}
|
|
22
24
|
export declare const enum TransportState {
|
|
23
25
|
IDLE = "IDLE",
|
|
@@ -45,6 +47,7 @@ export declare class Transport extends EventEmitter {
|
|
|
45
47
|
private _stListeners;
|
|
46
48
|
private _states;
|
|
47
49
|
private _localState;
|
|
50
|
+
private _animojiSvgDataByParticipantId;
|
|
48
51
|
constructor(topology: TransportTopology, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings);
|
|
49
52
|
updateSettings(settings: ServerSettings): void;
|
|
50
53
|
updateStatisticsInterval(): void;
|
|
@@ -57,6 +60,7 @@ export declare class Transport extends EventEmitter {
|
|
|
57
60
|
allocated(): string[];
|
|
58
61
|
opened(): string[];
|
|
59
62
|
getState(): TransportState;
|
|
63
|
+
setAnimojiSvg(participantId: ParticipantId, svgData: AnimojiSvgData): void;
|
|
60
64
|
private _setStates;
|
|
61
65
|
private _setState;
|
|
62
66
|
private _setLocalState;
|
|
@@ -83,5 +87,6 @@ export declare class Transport extends EventEmitter {
|
|
|
83
87
|
private _onServerRemoteTrackAdded;
|
|
84
88
|
private _onServerRemoteTrackRemoved;
|
|
85
89
|
private _onAsrTranscription;
|
|
90
|
+
private _onAnimojiStream;
|
|
86
91
|
getStreamWaitingTimeMs(streamId: string, targetRtpTimestamp: number): number;
|
|
87
92
|
}
|
package/default/Signaling.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ import SignalingCommandType from '../enums/SignalingCommandType';
|
|
|
11
11
|
import SignalingConnectionType from '../enums/SignalingConnectionType';
|
|
12
12
|
import UserRole from '../enums/UserRole';
|
|
13
13
|
import { JSONObject } from '../static/Json';
|
|
14
|
+
import { IAsrStartParams } from '../types/Asr';
|
|
14
15
|
import MediaModifiers from '../types/MediaModifiers';
|
|
15
16
|
import MediaSettings from '../types/MediaSettings';
|
|
16
17
|
import { IAddMovieParams, IUpdateMovieData } from '../types/MovieShare';
|
|
@@ -19,7 +20,7 @@ import { CompositeUserId, ParticipantId } from '../types/Participant';
|
|
|
19
20
|
import ParticipantLayout, { RequestKeyFrame, StopStream } from '../types/ParticipantLayout';
|
|
20
21
|
import { ParticipantListChunkParameters } from '../types/ParticipantListChunk';
|
|
21
22
|
import SignalingMessage from '../types/SignalingMessage';
|
|
22
|
-
import { IStartStreamData } from '../types/Streams';
|
|
23
|
+
import { IStartStreamData, IStopStreamData } from '../types/Streams';
|
|
23
24
|
import { WaitingParticipantId } from '../types/WaitingHall';
|
|
24
25
|
export default class Signaling extends BaseSignaling {
|
|
25
26
|
private socket;
|
|
@@ -112,10 +113,8 @@ export default class Signaling extends BaseSignaling {
|
|
|
112
113
|
getRooms(withParticipants: boolean): Promise<SignalingMessage>;
|
|
113
114
|
removeRooms(roomIds: number[]): Promise<SignalingMessage>;
|
|
114
115
|
startStream(data: IStartStreamData): Promise<SignalingMessage>;
|
|
115
|
-
stopStream(data?:
|
|
116
|
-
|
|
117
|
-
}): Promise<SignalingMessage>;
|
|
118
|
-
recordSetRole(participantId: ParticipantId, role: RecordRole | null, roomId: number | null): Promise<SignalingMessage>;
|
|
116
|
+
stopStream(data?: IStopStreamData): Promise<SignalingMessage>;
|
|
117
|
+
recordSetRole(participantId: ParticipantId, role: RecordRole | null, roomId?: number | null): Promise<SignalingMessage>;
|
|
119
118
|
getRecordStatus(): Promise<SignalingMessage>;
|
|
120
119
|
switchTopology(topology: TransportTopology, force?: boolean): Promise<SignalingMessage>;
|
|
121
120
|
requestRealloc(): Promise<SignalingMessage>;
|
|
@@ -125,7 +124,7 @@ export default class Signaling extends BaseSignaling {
|
|
|
125
124
|
chatHistory(count: number): Promise<SignalingMessage>;
|
|
126
125
|
customData(data: JSONObject, participantId: ParticipantId | null): Promise<SignalingMessage>;
|
|
127
126
|
grantRoles(participantId: CompositeUserId, roles: UserRole[], revoke: boolean): Promise<SignalingMessage>;
|
|
128
|
-
muteParticipant(participantId: ParticipantId | null, muteStates: MuteStates, requestedMedia: MediaOption[], roomId
|
|
127
|
+
muteParticipant(participantId: ParticipantId | null, muteStates: MuteStates, requestedMedia: MediaOption[], roomId?: number | null): Promise<SignalingMessage>;
|
|
129
128
|
enableFeatureForRoles(feature: ConversationFeature, roles: UserRole[]): Promise<SignalingMessage>;
|
|
130
129
|
pinParticipant(participantId: ParticipantId, unpin: boolean): Promise<SignalingMessage>;
|
|
131
130
|
updateMediaModifiers(mediaModifiers: MediaModifiers): Promise<SignalingMessage>;
|
|
@@ -148,7 +147,7 @@ export default class Signaling extends BaseSignaling {
|
|
|
148
147
|
readyToSend(): void;
|
|
149
148
|
getParticipantListChunk(participantListChunkParameters: ParticipantListChunkParameters): Promise<SignalingMessage>;
|
|
150
149
|
getParticipants(externalIds: SignalingMessage.ExternalId[]): Promise<SignalingMessage>;
|
|
151
|
-
startAsr(): Promise<SignalingMessage>;
|
|
150
|
+
startAsr(params: IAsrStartParams): Promise<SignalingMessage>;
|
|
152
151
|
stopAsr(): Promise<SignalingMessage>;
|
|
153
152
|
requestAsr(request: boolean): Promise<SignalingMessage>;
|
|
154
153
|
setAsrDataChannel(dataChannel: RTCDataChannel): void;
|
package/enums/MediaOption.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vkontakte/calls-sdk",
|
|
3
|
-
"version": "2.6.3-dev.
|
|
3
|
+
"version": "2.6.3-dev.3b25f7c.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",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
],
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@vkontakte/calls-video-effects": "1.0.6-beta.18",
|
|
18
|
+
"@vkontakte/calls-vmoji": "1.0.5-beta.2",
|
|
18
19
|
"@vkontakte/libvpx": "2.0.9",
|
|
19
20
|
"bit-buffer": "0.2.5",
|
|
20
21
|
"messagepack": "1.1.12",
|
package/static/External.d.ts
CHANGED
|
@@ -215,8 +215,9 @@ declare namespace External {
|
|
|
215
215
|
* Ошибка получения трека с камеры или микрофона
|
|
216
216
|
*
|
|
217
217
|
* @param error
|
|
218
|
+
* @param original
|
|
218
219
|
*/
|
|
219
|
-
function onPermissionsError(error: FatalError): void;
|
|
220
|
+
function onPermissionsError(error: FatalError, original: Error): void;
|
|
220
221
|
/**
|
|
221
222
|
* Пользователь отключился от звонка
|
|
222
223
|
*
|
|
@@ -451,7 +452,7 @@ declare namespace External {
|
|
|
451
452
|
/**
|
|
452
453
|
* Получена новая реакция
|
|
453
454
|
*/
|
|
454
|
-
function onFeedback(feedback: IFeedbackExternal[]): void;
|
|
455
|
+
function onFeedback(feedback: IFeedbackExternal[], roomId?: number | null): void;
|
|
455
456
|
/**
|
|
456
457
|
* Изменилось состояние пермиссий фич в звонке
|
|
457
458
|
*
|
package/static/Params.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { VideoEffects } from '@vkontakte/calls-video-effects';
|
|
2
|
+
import type * as Vmoji from '@vkontakte/calls-vmoji';
|
|
2
3
|
import { ConversationData } from '../classes/Conversation';
|
|
3
4
|
import HangupReason from '../classes/HangupReason';
|
|
4
5
|
import { MediaTrackKind } from '../classes/MediaSource';
|
|
@@ -119,6 +120,12 @@ export declare type ParamsObject = {
|
|
|
119
120
|
* _По умолчанию: `15`_
|
|
120
121
|
*/
|
|
121
122
|
screenFrameRate: number;
|
|
123
|
+
/**
|
|
124
|
+
* Вариант захвата экрана. Поддерживается в Chrome 107+
|
|
125
|
+
* @see https://developer.chrome.com/docs/web-platform/screen-sharing-controls/
|
|
126
|
+
* @hidden
|
|
127
|
+
*/
|
|
128
|
+
displaySurface: DisplayCaptureSurfaceType;
|
|
122
129
|
/**
|
|
123
130
|
* Экземпляр класса `VideoEffects` из `@vkontakte/calls-video-effects`
|
|
124
131
|
*
|
|
@@ -137,6 +144,12 @@ export declare type ParamsObject = {
|
|
|
137
144
|
* _По умолчанию: `480`_
|
|
138
145
|
*/
|
|
139
146
|
videoEffectMaxHeight: number;
|
|
147
|
+
/**
|
|
148
|
+
* Экземпляр класса `Vmoji` из `@vkontakte/calls-vmoji`
|
|
149
|
+
*
|
|
150
|
+
* Можно установить позднее методом `setVmoji`
|
|
151
|
+
*/
|
|
152
|
+
vmoji: typeof Vmoji | null;
|
|
140
153
|
iceRestartWaitTime: number;
|
|
141
154
|
transportConnectionWaitTime: number;
|
|
142
155
|
/**
|
|
@@ -273,8 +286,7 @@ export declare type ParamsObject = {
|
|
|
273
286
|
/**
|
|
274
287
|
* Добавлять флаг spsPpsIdrInKeyframe для h264 кодека. В результате ключевые фреймы без sps и pps
|
|
275
288
|
* не используются как ключевые. Решает проблему с артефактами на видео в случае потерь пакетов.
|
|
276
|
-
*
|
|
277
|
-
* _По умолчанию: `false`_
|
|
289
|
+
* @hidden
|
|
278
290
|
*/
|
|
279
291
|
h264spsPpsIdrInKeyframe: boolean;
|
|
280
292
|
/**
|
|
@@ -305,6 +317,22 @@ export declare type ParamsObject = {
|
|
|
305
317
|
* @hidden
|
|
306
318
|
*/
|
|
307
319
|
screenShareCongestionControl: boolean;
|
|
320
|
+
/**
|
|
321
|
+
* Включить возможность захвата звука при трансляции экрана
|
|
322
|
+
*
|
|
323
|
+
* _По умолчанию: `false`_
|
|
324
|
+
*/
|
|
325
|
+
audioShare: boolean;
|
|
326
|
+
/**
|
|
327
|
+
* Настройки api
|
|
328
|
+
*/
|
|
329
|
+
api: {
|
|
330
|
+
/** таймаут для батчинга на получение externalId */
|
|
331
|
+
userIdsByOkBatchedTimeout: number;
|
|
332
|
+
};
|
|
333
|
+
fastScreenShareFrameRate: number;
|
|
334
|
+
fastScreenShareWidth: number;
|
|
335
|
+
fastScreenShareHeight: number;
|
|
308
336
|
/**
|
|
309
337
|
* Получен локальный стрим с камеры/микрофона
|
|
310
338
|
*/
|
|
@@ -409,7 +437,7 @@ export declare type ParamsObject = {
|
|
|
409
437
|
/**
|
|
410
438
|
* Ошибка получения трека с камеры или микрофона
|
|
411
439
|
*/
|
|
412
|
-
onPermissionsError?: (error: FatalError) => void;
|
|
440
|
+
onPermissionsError?: (error: FatalError, original: Error) => void;
|
|
413
441
|
/**
|
|
414
442
|
* Пользователь отключился от звонка
|
|
415
443
|
*/
|
|
@@ -577,11 +605,7 @@ export declare type ParamsObject = {
|
|
|
577
605
|
* Получены новые реакции в звонке
|
|
578
606
|
* @param feedback массив с реакциями
|
|
579
607
|
*/
|
|
580
|
-
onFeedback?: (feedback: IFeedbackExternal[]) => void;
|
|
581
|
-
/**
|
|
582
|
-
* Включать capability c аудио шарой
|
|
583
|
-
*/
|
|
584
|
-
audioShareCapabilityEnabled: boolean;
|
|
608
|
+
onFeedback?: (feedback: IFeedbackExternal[], roomId: number | null) => void;
|
|
585
609
|
/**
|
|
586
610
|
* Изменился список ролей, которым доступны ConversationFeatures
|
|
587
611
|
*
|
|
@@ -589,6 +613,16 @@ export declare type ParamsObject = {
|
|
|
589
613
|
* (если ключ фичи отсутствует, или в ролях пустой массив, считаем фичу доступной для всех пользователей)
|
|
590
614
|
*/
|
|
591
615
|
onFeaturesPerRoleChanged?: (featuresPerRole: IFeaturesPerRole) => void;
|
|
616
|
+
/**
|
|
617
|
+
* Начата текстовая расшифровка звонка
|
|
618
|
+
* @param initiatorId Id пользователя, запустившего расшифровку звонка
|
|
619
|
+
* @param movieId Id расшифровки
|
|
620
|
+
*/
|
|
621
|
+
onAsrStarted?: (initiatorId: ExternalParticipantId, movieId: number) => void;
|
|
622
|
+
/**
|
|
623
|
+
* Закончена текстовая расшифровка звонка
|
|
624
|
+
*/
|
|
625
|
+
onAsrStopped?: () => void;
|
|
592
626
|
};
|
|
593
627
|
export default abstract class Params {
|
|
594
628
|
private static _params;
|
|
@@ -642,13 +676,16 @@ export default abstract class Params {
|
|
|
642
676
|
static get videoAspectRatio(): number;
|
|
643
677
|
static get videoFrameRate(): number;
|
|
644
678
|
static get videoFacingMode(): FacingMode;
|
|
645
|
-
static get
|
|
679
|
+
static get displaySurface(): DisplayCaptureSurfaceType;
|
|
646
680
|
static get videoEffects(): VideoEffects | null;
|
|
647
681
|
static set videoEffects(value: VideoEffects | null);
|
|
648
682
|
static get videoEffectMaxWidth(): number;
|
|
649
683
|
static set videoEffectMaxWidth(value: number);
|
|
650
684
|
static get videoEffectMaxHeight(): number;
|
|
651
685
|
static set videoEffectMaxHeight(value: number);
|
|
686
|
+
static get useVmoji(): boolean;
|
|
687
|
+
static get vmoji(): typeof Vmoji | null;
|
|
688
|
+
static set vmoji(value: typeof Vmoji | null);
|
|
652
689
|
static get voiceParams(): {
|
|
653
690
|
[key: string]: number;
|
|
654
691
|
};
|
|
@@ -691,6 +728,13 @@ export default abstract class Params {
|
|
|
691
728
|
static get filterObservers(): boolean;
|
|
692
729
|
static get muteMode(): boolean;
|
|
693
730
|
static get preserveAudioTracks(): boolean;
|
|
694
|
-
static get
|
|
731
|
+
static get audioShare(): boolean;
|
|
695
732
|
static get screenShareCongestionControl(): boolean;
|
|
733
|
+
static get api(): {
|
|
734
|
+
/** таймаут для батчинга на получение externalId */
|
|
735
|
+
userIdsByOkBatchedTimeout: number;
|
|
736
|
+
};
|
|
737
|
+
static get fastScreenShareWidth(): number;
|
|
738
|
+
static get fastScreenShareHeight(): number;
|
|
739
|
+
static getScreenFrameRate(fastScreenShare: boolean): number;
|
|
696
740
|
}
|
package/static/WebRTCUtils.d.ts
CHANGED
|
@@ -49,7 +49,9 @@ declare class MediaConstraints {
|
|
|
49
49
|
* @hidden
|
|
50
50
|
*/
|
|
51
51
|
export declare class ScreenConstraints extends MediaConstraints {
|
|
52
|
-
|
|
52
|
+
readonly captureController: CaptureController | null;
|
|
53
|
+
constructor(width: number, height: number, frameRate: number, withAudioShare: boolean);
|
|
54
|
+
getNative(): object;
|
|
53
55
|
}
|
|
54
56
|
declare namespace WebRTCUtils {
|
|
55
57
|
/**
|
|
@@ -107,7 +109,7 @@ declare namespace WebRTCUtils {
|
|
|
107
109
|
/**
|
|
108
110
|
* Запрашивает трансляцию экрана пользователя с опциональным захватом звука
|
|
109
111
|
*/
|
|
110
|
-
function getScreenMedia(withAudioShare: boolean): Promise<MediaStream>;
|
|
112
|
+
function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean): Promise<MediaStream>;
|
|
111
113
|
/**
|
|
112
114
|
* Запрашивает камеру пользователя
|
|
113
115
|
*
|
|
@@ -178,6 +180,9 @@ declare namespace WebRTCUtils {
|
|
|
178
180
|
* Возвращает подверсию браузера (если она есть)
|
|
179
181
|
*/
|
|
180
182
|
function browserSubVersion(): string;
|
|
183
|
+
/**
|
|
184
|
+
* Браузер поддерживает захват звука при трансляции экрана
|
|
185
|
+
*/
|
|
181
186
|
function isAudioShareSupported(): boolean;
|
|
182
187
|
}
|
|
183
188
|
export default WebRTCUtils;
|
package/types/Asr.d.ts
CHANGED
package/types/MediaSettings.d.ts
CHANGED
|
@@ -14,10 +14,18 @@ export declare type MediaSettings = {
|
|
|
14
14
|
* Включена ли трансляция экрана
|
|
15
15
|
*/
|
|
16
16
|
isScreenSharingEnabled: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Режим динамического контента при трансляция экрана (быстрая шара)
|
|
19
|
+
*/
|
|
20
|
+
isFastScreenSharingEnabled: boolean;
|
|
17
21
|
/**
|
|
18
22
|
* Включена ли трансляция звука
|
|
19
23
|
*/
|
|
20
24
|
isAudioSharingEnabled: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Включена ли трансляция вимоджи
|
|
27
|
+
*/
|
|
28
|
+
isAnimojiEnabled: boolean;
|
|
21
29
|
videoStreams: VideoStreamInfo[];
|
|
22
30
|
};
|
|
23
31
|
export declare type VideoStreamInfo = {
|