@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.
@@ -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(screenEnabled: boolean, audioShareEnabled: boolean): Promise<void>;
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: MediaOption[], roomId: number | null): Promise<void>;
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: string;
284
+ movieId: number;
278
285
  streamType: string;
279
286
  }>;
280
287
  updateMovie(params: IUpdateMovieData): Promise<void>;
281
- removeMovie(movieId: string): Promise<void>;
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;
@@ -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(captureScreen: boolean, captureAudio: boolean): Promise<void>;
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
- constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number);
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
  }
@@ -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
- roomId: number | null;
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: number | null): Promise<SignalingMessage>;
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;
@@ -3,6 +3,7 @@ declare const enum DataChannelLabel {
3
3
  producerCommand = "producerCommand",
4
4
  consumerScreenShare = "consumerScreenShare",
5
5
  producerScreenShare = "producerScreenShare",
6
- asr = "asr"
6
+ asr = "asr",
7
+ animoji = "animoji"
7
8
  }
8
9
  export default DataChannelLabel;
@@ -6,6 +6,7 @@ declare enum MediaOption {
6
6
  VIDEO = "VIDEO",
7
7
  SCREEN_SHARING = "SCREEN_SHARING",
8
8
  MOVIE_SHARING = "MOVIE_SHARING",
9
- AUDIO_SHARING = "AUDIO_SHARING"
9
+ AUDIO_SHARING = "AUDIO_SHARING",
10
+ ANIMOJI = "ANIMOJI"
10
11
  }
11
12
  export default MediaOption;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/calls-sdk",
3
- "version": "2.6.3-dev.1fd3364.0",
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",
@@ -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
  *
@@ -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 screenFrameRate(): number;
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 audioShareCapabilityEnabled(): boolean;
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
  }
@@ -49,7 +49,9 @@ declare class MediaConstraints {
49
49
  * @hidden
50
50
  */
51
51
  export declare class ScreenConstraints extends MediaConstraints {
52
- constructor(width: number, height: number, withAudioShare: boolean);
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
@@ -9,3 +9,7 @@ export interface AsrTranscription {
9
9
  timestamp: number;
10
10
  duration: number;
11
11
  }
12
+ export interface IAsrStartParams {
13
+ /** Наименование файла в который сохранится расшифровка */
14
+ name: string;
15
+ }
@@ -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 = {