@vkontakte/calls-sdk 2.6.2-dev.3e4fbdf.0 → 2.6.2-dev.459e12e.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 +63 -9
- package/abstract/BaseApi.d.ts +1 -1
- package/abstract/BaseSignaling.d.ts +11 -3
- package/calls-sdk.cjs.js +8 -8
- package/calls-sdk.esm.js +8 -8
- package/classes/Conversation.d.ts +35 -7
- package/classes/MediaSource.d.ts +7 -2
- package/classes/ProducerCommandSerializationService.d.ts +2 -0
- package/classes/codec/IEncoder.d.ts +3 -0
- package/classes/codec/LibVPxEncoder.d.ts +4 -1
- package/classes/codec/Types.d.ts +6 -1
- package/classes/codec/WebCodecsEncoder.d.ts +4 -1
- package/classes/screenshare/PacketHistory.d.ts +30 -0
- package/classes/screenshare/PacketHistory.test.d.ts +1 -0
- package/classes/screenshare/ScreenCaptureSender.d.ts +15 -1
- package/classes/screenshare/ScreenCongestionControl.d.ts +25 -0
- package/classes/screenshare/SharingStatReport.d.ts +6 -0
- package/classes/screenshare/Utils.d.ts +5 -0
- package/classes/transport/ServerTransport.d.ts +2 -1
- package/default/Api.d.ts +1 -1
- package/default/Signaling.d.ts +11 -3
- package/enums/LiveStatus.d.ts +7 -0
- package/enums/MediaOption.d.ts +2 -1
- package/enums/RoomsEventType.d.ts +6 -0
- package/enums/SignalingCommandType.d.ts +10 -1
- package/enums/SignalingNotification.d.ts +7 -1
- package/package.json +1 -1
- package/static/External.d.ts +46 -5
- package/static/Params.d.ts +61 -10
- package/static/Polyfills.d.ts +7 -0
- package/static/Utils.d.ts +2 -1
- package/static/WebRTCUtils.d.ts +44 -11
- package/static/WebRTCUtils.test.d.ts +1 -0
- package/types/Asr.d.ts +5 -0
- package/types/Conversation.d.ts +1 -0
- package/types/ConversationFeature.d.ts +3 -0
- package/types/MediaSettings.d.ts +4 -0
- package/types/MovieShare.d.ts +4 -1
- package/types/Participant.d.ts +1 -0
- package/types/ParticipantListChunk.d.ts +2 -0
- package/types/ParticipantStreamDescription.d.ts +2 -1
- package/types/Room.d.ts +77 -0
- package/types/SignalingMessage.d.ts +53 -2
- package/utils/ArrayDequeue.d.ts +24 -0
- package/utils/ArrayDequeue.spec.d.ts +1 -0
- package/worker/LibVPxEncoderWorker.d.ts +1 -1
|
@@ -12,6 +12,8 @@ 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 { IFeaturesPerRole } from '../types/ConversationFeature';
|
|
16
|
+
import { AsrInfo } from '../types/Asr';
|
|
15
17
|
import { ExternalParticipant, ExternalParticipantId, ExternalParticipantListChunk, ExternalUserId } from '../types/ExternalId';
|
|
16
18
|
import MediaModifiers from '../types/MediaModifiers';
|
|
17
19
|
import { IVideoDimentions } from '../types/MediaSettings';
|
|
@@ -38,7 +40,7 @@ export declare type ConversationData = {
|
|
|
38
40
|
*/
|
|
39
41
|
acceptTime: number | null;
|
|
40
42
|
features: ConversationFeature[];
|
|
41
|
-
featuresPerRole?:
|
|
43
|
+
featuresPerRole?: IFeaturesPerRole | null;
|
|
42
44
|
/**
|
|
43
45
|
* ID звонка
|
|
44
46
|
*/
|
|
@@ -48,8 +50,9 @@ export declare type ConversationData = {
|
|
|
48
50
|
direction: CallDirection;
|
|
49
51
|
concurrent: boolean;
|
|
50
52
|
needRate: boolean;
|
|
51
|
-
|
|
53
|
+
recordsInfo: Record<number | null, RecordInfo | null>;
|
|
52
54
|
chatId: string | null;
|
|
55
|
+
asrInfo: AsrInfo | null;
|
|
53
56
|
/**
|
|
54
57
|
* Роли пользователя
|
|
55
58
|
*/
|
|
@@ -116,6 +119,7 @@ export default class Conversation extends EventEmitter {
|
|
|
116
119
|
chatId?: string;
|
|
117
120
|
joinLink?: string;
|
|
118
121
|
observedIds?: ExternalUserId[];
|
|
122
|
+
payload?: string;
|
|
119
123
|
}): Promise<ConversationData>;
|
|
120
124
|
private _onJoinPart2;
|
|
121
125
|
onPush(conversationId: string, type?: UserType, peerId?: number): Promise<void>;
|
|
@@ -176,6 +180,13 @@ export default class Conversation extends EventEmitter {
|
|
|
176
180
|
* @hidden
|
|
177
181
|
*/
|
|
178
182
|
private _processConnectionData;
|
|
183
|
+
/**
|
|
184
|
+
* Обрабатывает информацию о записи/трансляции в основном и сессионных залах
|
|
185
|
+
* @param connection
|
|
186
|
+
* @private
|
|
187
|
+
* @hidden
|
|
188
|
+
*/
|
|
189
|
+
private _processRecordInfos;
|
|
179
190
|
private _allocateTransport;
|
|
180
191
|
private _createSpeakerDetector;
|
|
181
192
|
private _createSpecListener;
|
|
@@ -193,7 +204,7 @@ export default class Conversation extends EventEmitter {
|
|
|
193
204
|
private _onAddParticipant;
|
|
194
205
|
private _onRemoveParticipant;
|
|
195
206
|
changeDevice(kind: MediaDeviceKind): Promise<void>;
|
|
196
|
-
toggleScreenCapturing(
|
|
207
|
+
toggleScreenCapturing(screenEnabled: boolean, audioShareEnabled: boolean): Promise<void>;
|
|
197
208
|
setVideoStream(stream: MediaStream, isScreen?: boolean): Promise<void>;
|
|
198
209
|
setAudioStream(stream: MediaStream): Promise<void>;
|
|
199
210
|
toggleLocalVideo(enabled: boolean): Promise<void>;
|
|
@@ -215,14 +226,20 @@ export default class Conversation extends EventEmitter {
|
|
|
215
226
|
private _onChatRoomUpdated;
|
|
216
227
|
private _onSharedMovieUpdate;
|
|
217
228
|
private _onSharedMovieInfoStarted;
|
|
229
|
+
private _processSharedMovieInfos;
|
|
230
|
+
private _processSharedMovieInfo;
|
|
231
|
+
private _processConnectionSharedMovieInfo;
|
|
218
232
|
private _onSharedMovieInfoStopped;
|
|
233
|
+
private _onFeaturesPerRoleChanged;
|
|
219
234
|
private _waitForStreamIfNeeded;
|
|
220
235
|
private _matchStreamDescription;
|
|
221
236
|
private _getWaitingTime;
|
|
222
237
|
private _isCallAdmin;
|
|
223
238
|
private _checkAdminRole;
|
|
224
239
|
grantRoles(participantId: CompositeUserId, roles: UserRole[], revoke: boolean): Promise<void>;
|
|
225
|
-
|
|
240
|
+
startAsr(): Promise<void>;
|
|
241
|
+
stopAsr(): Promise<void>;
|
|
242
|
+
muteParticipant(participantId: ParticipantId | null, muteStates: MuteStates, requestedMedia: MediaOption[], roomId: number | null): Promise<void>;
|
|
226
243
|
enableFeatureForRoles(feature: ConversationFeature, roles: UserRole[]): Promise<void>;
|
|
227
244
|
pinParticipant(participantId: ParticipantId, unpin: boolean): Promise<void>;
|
|
228
245
|
updateMediaModifiers(mediaModifiers: MediaModifiers): Promise<void>;
|
|
@@ -246,9 +263,13 @@ export default class Conversation extends EventEmitter {
|
|
|
246
263
|
}>;
|
|
247
264
|
updateMovie(params: IUpdateMovieData): Promise<void>;
|
|
248
265
|
removeMovie(movieId: string): Promise<void>;
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
266
|
+
updateRooms(rooms: SignalingMessage.Room[], assignRandomly: boolean): Promise<void>;
|
|
267
|
+
activateRooms(roomIds: number[], deactivate: boolean): Promise<void>;
|
|
268
|
+
switchRoom(toRoomId: number | null, participantId?: ParticipantId): Promise<void>;
|
|
269
|
+
removeRooms(roomIds: number[]): Promise<void>;
|
|
270
|
+
startStream(isRecord?: boolean, name?: string | null, movieId?: string | null, privacy?: 'PUBLIC' | 'FRIENDS' | 'DIRECT_LINK', groupId?: string | null, roomId?: number | null): Promise<SignalingMessage>;
|
|
271
|
+
stopStream(roomId?: number | null): Promise<SignalingMessage>;
|
|
272
|
+
recordSetRole(participantId: ParticipantId, role: RecordRole | null, roomId?: number | null): Promise<void>;
|
|
252
273
|
getStreamInfo(): Promise<{
|
|
253
274
|
movieId: any;
|
|
254
275
|
preview: any;
|
|
@@ -286,11 +307,14 @@ export default class Conversation extends EventEmitter {
|
|
|
286
307
|
private _onChatMessage;
|
|
287
308
|
private _onCustomData;
|
|
288
309
|
private _onRecordInfo;
|
|
310
|
+
changeRecordInfoForRoom(roomId: number | null): Promise<void>;
|
|
311
|
+
private _onAsrInfo;
|
|
289
312
|
private _onRolesChanged;
|
|
290
313
|
/**
|
|
291
314
|
* Клиент должен немедленно выключить микрофон и/или камеру
|
|
292
315
|
*/
|
|
293
316
|
private _onMuteParticipant;
|
|
317
|
+
applyMuteStates(muteStates: MuteStates, mediaOptions: MediaOption[], roomId: number | null): void;
|
|
294
318
|
private _processMuteState;
|
|
295
319
|
private _onPinParticipant;
|
|
296
320
|
private _onOptionsChanged;
|
|
@@ -316,6 +340,10 @@ export default class Conversation extends EventEmitter {
|
|
|
316
340
|
private _updateDisplayLayoutFromCache;
|
|
317
341
|
private _setParticipantsStatus;
|
|
318
342
|
private _onJoinLinkChanged;
|
|
343
|
+
private _onRoomsUpdated;
|
|
344
|
+
private _onRoomUpdated;
|
|
345
|
+
private _convertRoomToExternal;
|
|
346
|
+
private _onRoomParticipantsUpdated;
|
|
319
347
|
/** получили из сингналинга сообщение о реакции пользователей */
|
|
320
348
|
private _onFeedback;
|
|
321
349
|
private _isMe;
|
package/classes/MediaSource.d.ts
CHANGED
|
@@ -13,7 +13,8 @@ export declare const enum MediaSourceEvent {
|
|
|
13
13
|
export declare const enum MediaTrackKind {
|
|
14
14
|
'audio' = "audio",
|
|
15
15
|
'video' = "video",
|
|
16
|
-
'screen' = "screen"
|
|
16
|
+
'screen' = "screen",
|
|
17
|
+
'audioshare' = "audioshare"
|
|
17
18
|
}
|
|
18
19
|
export declare class MediaSource extends EventEmitter {
|
|
19
20
|
/** Стрим с камеры и микрофона пользователя */
|
|
@@ -21,6 +22,7 @@ export declare class MediaSource extends EventEmitter {
|
|
|
21
22
|
/** Последний сохраненный оригинальный видео трек с камеры */
|
|
22
23
|
private _trackVideoStreamBackup;
|
|
23
24
|
private _screenTrack;
|
|
25
|
+
private _audioShareTrack;
|
|
24
26
|
/** Трек для отправки в медиа-канал. Может отличаться при скриншаринге в дата-канал */
|
|
25
27
|
private _sendVideoTrack;
|
|
26
28
|
private _mediaSettings;
|
|
@@ -58,16 +60,19 @@ export declare class MediaSource extends EventEmitter {
|
|
|
58
60
|
private _changeAudioInput;
|
|
59
61
|
private _changeScreen;
|
|
60
62
|
private _disableScreenCapture;
|
|
63
|
+
private disableAudioShare;
|
|
64
|
+
private getSilentAudioShareTrack;
|
|
61
65
|
private _replaceLocalTrack;
|
|
62
66
|
private _stopLocalTrack;
|
|
63
67
|
private _videoEffect;
|
|
64
68
|
/** останавливает и удаляет сохраненный трек с камеры пользователя */
|
|
65
69
|
private _stopAndRemoveTrackVideoStreamBackup;
|
|
66
70
|
destroy(): void;
|
|
67
|
-
toggleScreenCapturing(
|
|
71
|
+
toggleScreenCapturing(captureScreen: boolean, captureAudio: boolean): Promise<void>;
|
|
68
72
|
toggleVideo(enabled: boolean): Promise<void>;
|
|
69
73
|
toggleAudio(enabled: boolean): Promise<void>;
|
|
70
74
|
setResolution(width: number, height: number): Promise<void>;
|
|
71
75
|
updateNoiseSuppression(): Promise<void>;
|
|
72
76
|
videoEffect(effect: IEffect | null): Promise<void>;
|
|
77
|
+
getAudioShareTrack(): MediaStreamTrack | null;
|
|
73
78
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import ParticipantLayout, { RequestKeyFrame, StopStream } from '../types/ParticipantLayout';
|
|
2
2
|
import SignalingMessage from '../types/SignalingMessage';
|
|
3
|
+
import { SharingStatReport } from './screenshare/SharingStatReport';
|
|
3
4
|
import { ParticipantIdRegistry } from './ParticipantIdRegistry';
|
|
4
5
|
import { PerfStatReport } from './transport/PerfStatReporter';
|
|
5
6
|
export declare class ProducerCommandSerializationService {
|
|
@@ -11,6 +12,7 @@ export declare class ProducerCommandSerializationService {
|
|
|
11
12
|
private writeLayout;
|
|
12
13
|
private writeStreamDesc;
|
|
13
14
|
serializePerfStatReport(sequenceNumber: number, report: PerfStatReport): ArrayBuffer;
|
|
15
|
+
serializeSharingStatReport(sequenceNumber: number, report: SharingStatReport): ArrayBuffer;
|
|
14
16
|
deserializeCommandResponse(data: BufferSource | Blob): Promise<SignalingMessage | undefined>;
|
|
15
17
|
private deserializeUpdateDisplayLayoutResponse;
|
|
16
18
|
private deserializeReportPerfStatResponse;
|
|
@@ -4,6 +4,7 @@ export default interface IEncoder {
|
|
|
4
4
|
requestFrame(keyFrame: boolean): void;
|
|
5
5
|
isVP9(): boolean;
|
|
6
6
|
destroy(): void;
|
|
7
|
+
setBitrate(bitrate: number, useCbr: boolean): void;
|
|
7
8
|
}
|
|
8
9
|
export interface FrameMessage {
|
|
9
10
|
type: MessageType;
|
|
@@ -12,4 +13,6 @@ export interface FrameMessage {
|
|
|
12
13
|
duration?: number;
|
|
13
14
|
data?: ArrayBuffer;
|
|
14
15
|
error?: string;
|
|
16
|
+
width?: number;
|
|
17
|
+
height?: number;
|
|
15
18
|
}
|
|
@@ -4,6 +4,8 @@ import WorkerBase from './WorkerBase';
|
|
|
4
4
|
export default class LibVPxEncoder extends WorkerBase implements IEncoder {
|
|
5
5
|
private readonly _sourceTrack;
|
|
6
6
|
private readonly _onFrame;
|
|
7
|
+
private readonly _useCongestionControl;
|
|
8
|
+
private readonly _maxBitrate;
|
|
7
9
|
private readonly _useImageCapture;
|
|
8
10
|
private _video;
|
|
9
11
|
private _imageCapture;
|
|
@@ -13,7 +15,7 @@ export default class LibVPxEncoder extends WorkerBase implements IEncoder {
|
|
|
13
15
|
private _track;
|
|
14
16
|
private _frameReadTimeout;
|
|
15
17
|
private _lastFrame;
|
|
16
|
-
constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback);
|
|
18
|
+
constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number);
|
|
17
19
|
private _createDom;
|
|
18
20
|
private _removeDom;
|
|
19
21
|
private _createStream;
|
|
@@ -27,6 +29,7 @@ export default class LibVPxEncoder extends WorkerBase implements IEncoder {
|
|
|
27
29
|
private _requestFrameVideo;
|
|
28
30
|
private _requestFrameBitmap;
|
|
29
31
|
requestFrame(keyFrame?: boolean): void;
|
|
32
|
+
setBitrate(bitrate: number, useCbr?: boolean): void;
|
|
30
33
|
isVP9(): boolean;
|
|
31
34
|
destroy(): void;
|
|
32
35
|
static isBrowserSupported(): boolean;
|
package/classes/codec/Types.d.ts
CHANGED
|
@@ -6,9 +6,14 @@ export declare const enum MessageType {
|
|
|
6
6
|
INIT = "init",
|
|
7
7
|
READY = "ready",
|
|
8
8
|
FRAME = "frame",
|
|
9
|
+
SET_BITRATE = "set_bitrate",
|
|
9
10
|
ERROR = "error",
|
|
10
11
|
DEBUG = "debug",
|
|
11
12
|
LOG_ERROR = "log_error"
|
|
12
13
|
}
|
|
13
|
-
export declare type EncodedVideoFrame = Pick<EncodedVideoChunk, 'type' | 'timestamp' | 'duration' | 'byteLength' | 'data'
|
|
14
|
+
export declare type EncodedVideoFrame = Pick<EncodedVideoChunk, 'type' | 'timestamp' | 'duration' | 'byteLength' | 'data'> & {
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
};
|
|
14
18
|
export declare type OnFrameCallback = (chunk: EncodedVideoFrame | null, error?: string) => void;
|
|
19
|
+
export declare type OnCongestionCallback = (bitrate: number, useCbr: boolean) => void;
|
|
@@ -5,9 +5,12 @@ export default class WebCodecsEncoder extends WorkerBase implements IEncoder {
|
|
|
5
5
|
private readonly _sourceTrack;
|
|
6
6
|
private readonly _trackProcessor;
|
|
7
7
|
private readonly _onFrame;
|
|
8
|
-
|
|
8
|
+
private readonly _useCongestionControl;
|
|
9
|
+
private readonly _maxBitrate;
|
|
10
|
+
constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number);
|
|
9
11
|
init(): Promise<void>;
|
|
10
12
|
requestFrame(keyFrame?: boolean): void;
|
|
13
|
+
setBitrate(bitrate: number, useCbr: boolean): void;
|
|
11
14
|
isVP9(): boolean;
|
|
12
15
|
destroy(): void;
|
|
13
16
|
static isBrowserSupported(): boolean;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
declare type HistoryRecord = {
|
|
2
|
+
seq: number;
|
|
3
|
+
ts: number;
|
|
4
|
+
size: number;
|
|
5
|
+
sent: number;
|
|
6
|
+
start: boolean;
|
|
7
|
+
end: boolean;
|
|
8
|
+
ts2: number;
|
|
9
|
+
recv: number;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Class calculates server bitrate and delay, based on server cc feedback
|
|
13
|
+
* Ring buffer to keep sent packets info (HistoryRecord)
|
|
14
|
+
* Packet info is updated when cc feedback is received from server
|
|
15
|
+
*/
|
|
16
|
+
export default class PacketHistory {
|
|
17
|
+
private readonly _maxSize;
|
|
18
|
+
private _size;
|
|
19
|
+
private readonly _buffer;
|
|
20
|
+
private _head;
|
|
21
|
+
private _tail;
|
|
22
|
+
constructor(maxSize: number);
|
|
23
|
+
add(seq: number, ts: number, size: number, start: boolean, end: boolean): number;
|
|
24
|
+
update(seq: number, ts2: number): HistoryRecord;
|
|
25
|
+
get(seq: number): HistoryRecord;
|
|
26
|
+
getServerBitrateK(windowMs: number): number;
|
|
27
|
+
getCurrentDelay(): number;
|
|
28
|
+
getMaxBandwidth(): number;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
+
import BaseSignaling from '../../abstract/BaseSignaling';
|
|
1
2
|
export default class ScreenCaptureSender {
|
|
2
3
|
private readonly _encoder;
|
|
3
4
|
private readonly _datachannel;
|
|
5
|
+
private readonly _signaling;
|
|
4
6
|
private _destroyed;
|
|
5
7
|
private _needKeyframe;
|
|
6
8
|
private readonly DATA_SIZE;
|
|
7
|
-
|
|
9
|
+
private _congestionControl;
|
|
10
|
+
private _frameNum;
|
|
11
|
+
private _width;
|
|
12
|
+
private _height;
|
|
13
|
+
private _feedback;
|
|
14
|
+
private _lastSharingStat;
|
|
15
|
+
private _congestionControlEnabled;
|
|
16
|
+
constructor(track: MediaStreamTrack, datachannel: RTCDataChannel, signaling: BaseSignaling);
|
|
8
17
|
private _requestFrame;
|
|
9
18
|
private _wrapHeader;
|
|
10
19
|
private _stopPacket;
|
|
@@ -12,4 +21,9 @@ export default class ScreenCaptureSender {
|
|
|
12
21
|
private _sendChunk;
|
|
13
22
|
destroy(): void;
|
|
14
23
|
static isBrowserSupported(): boolean;
|
|
24
|
+
private _onCongestionCallback;
|
|
25
|
+
private _onResize;
|
|
26
|
+
private _calcMinMaxBitrate;
|
|
27
|
+
private _checkCcFeedback;
|
|
28
|
+
private _sendSharingStat;
|
|
15
29
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { OnCongestionCallback } from '../codec/Types';
|
|
2
|
+
import { SharingStatReport } from './SharingStatReport';
|
|
3
|
+
export default class ScreenCongestionControl {
|
|
4
|
+
private readonly _onCongestion;
|
|
5
|
+
private readonly _ccEnabled;
|
|
6
|
+
private _minBitrate;
|
|
7
|
+
private _maxBitrate;
|
|
8
|
+
private _targetBitrate;
|
|
9
|
+
private _lastDown;
|
|
10
|
+
private _lastUp;
|
|
11
|
+
private _lastProbing;
|
|
12
|
+
private _lastCheckDelay;
|
|
13
|
+
private _upPenalty;
|
|
14
|
+
private _probing;
|
|
15
|
+
private _delayAvgShort;
|
|
16
|
+
private _delayAvgLong;
|
|
17
|
+
private _minDelay;
|
|
18
|
+
private _maxDelay;
|
|
19
|
+
private _largeDelayDuration;
|
|
20
|
+
constructor(onCongestion: OnCongestionCallback, minBitrate: number, maxBitrate: number, ccEnabled: boolean);
|
|
21
|
+
checkDelay(frameNum: number, delay: number, bitrateK: number): void;
|
|
22
|
+
private _calcDelay;
|
|
23
|
+
reconfigure(minBitrate: number, maxBitrate: number): void;
|
|
24
|
+
getStat(): SharingStatReport;
|
|
25
|
+
}
|
|
@@ -15,3 +15,8 @@ export interface FrameChunk extends FrameChunkHeader {
|
|
|
15
15
|
export declare function wrapHeader(timestamp: number, start: boolean, end: boolean, keyframe: boolean, sequence: number, isVP9: boolean, data: ArrayBuffer | null): ArrayBuffer;
|
|
16
16
|
export declare function parseChunk(data: ArrayBuffer): FrameChunk;
|
|
17
17
|
export declare function isKeyframeRequested(data?: ArrayBuffer): boolean;
|
|
18
|
+
export interface CcFeedback {
|
|
19
|
+
seq: number;
|
|
20
|
+
ts2: number;
|
|
21
|
+
}
|
|
22
|
+
export declare function parseCcFeedback(data?: ArrayBuffer): CcFeedback;
|
|
@@ -33,6 +33,7 @@ export default class ServerTransport extends EventEmitter {
|
|
|
33
33
|
private _disabledSenders;
|
|
34
34
|
private _rtpReceiversByStreamId;
|
|
35
35
|
private _producerSessionId;
|
|
36
|
+
private _newAudioShareTrack;
|
|
36
37
|
constructor(signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings);
|
|
37
38
|
getState(): TransportState;
|
|
38
39
|
updateStatisticsInterval(): void;
|
|
@@ -68,12 +69,12 @@ export default class ServerTransport extends EventEmitter {
|
|
|
68
69
|
private _detectStaleTracks;
|
|
69
70
|
private _allocateConsumer;
|
|
70
71
|
private _acceptProducer;
|
|
72
|
+
private handleTracks;
|
|
71
73
|
_onSignalingNotification(message: SignalingMessage): Promise<void>;
|
|
72
74
|
private _onProducerUpdated;
|
|
73
75
|
private _onAddTrack;
|
|
74
76
|
static _onSignalingStateChange(pc: RTCPeerConnection, event: any): void;
|
|
75
77
|
private _onConnectionStateChange;
|
|
76
78
|
private _onReplacedTrack;
|
|
77
|
-
private static _isUnifiedPlanSupported;
|
|
78
79
|
getStreamWaitingTimeMs(streamId: string, targetRtpTimestamp: number): number;
|
|
79
80
|
}
|
package/default/Api.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export default class Api extends BaseApi {
|
|
|
31
31
|
success: boolean;
|
|
32
32
|
}>;
|
|
33
33
|
getAnonymTokenByLink(joinLink: string, username?: string): Promise<string>;
|
|
34
|
-
joinConversationByLink(joinLink: string, isVideo?: boolean, observedIds?: ExternalUserId[]): Promise<ConversationResponse>;
|
|
34
|
+
joinConversationByLink(joinLink: string, isVideo?: boolean, observedIds?: ExternalUserId[], payload?: string): Promise<ConversationResponse>;
|
|
35
35
|
/**
|
|
36
36
|
* NB: Не сохраняет порядок возвращаемых ID
|
|
37
37
|
* @hidden
|
package/default/Signaling.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ import ParticipantLayout, { RequestKeyFrame, StopStream } from '../types/Partici
|
|
|
19
19
|
import { ParticipantListChunkParameters } from '../types/ParticipantListChunk';
|
|
20
20
|
import SignalingMessage from '../types/SignalingMessage';
|
|
21
21
|
import { WaitingParticipantId } from '../types/WaitingHall';
|
|
22
|
+
import { SharingStatReport } from '../classes/screenshare/SharingStatReport';
|
|
22
23
|
export default class Signaling extends BaseSignaling {
|
|
23
24
|
private socket;
|
|
24
25
|
protected sequence: number;
|
|
@@ -101,18 +102,23 @@ export default class Signaling extends BaseSignaling {
|
|
|
101
102
|
addMovie(data: IAddMovieParams): Promise<SignalingMessage>;
|
|
102
103
|
updateMovie(data: IUpdateMovieData): Promise<SignalingMessage>;
|
|
103
104
|
removeMovie(data: any): Promise<SignalingMessage>;
|
|
105
|
+
updateRooms(rooms: SignalingMessage.Room[], assignRandomly: boolean): Promise<SignalingMessage>;
|
|
106
|
+
activateRooms(roomIds: number[], deactivate: boolean): Promise<SignalingMessage>;
|
|
107
|
+
switchRoom(toRoomId: number | null, participantId?: ParticipantId): Promise<SignalingMessage>;
|
|
108
|
+
removeRooms(roomIds: number[]): Promise<SignalingMessage>;
|
|
104
109
|
startStream(data: any): Promise<SignalingMessage>;
|
|
105
|
-
stopStream(): Promise<SignalingMessage>;
|
|
106
|
-
recordSetRole(participantId: ParticipantId, role: RecordRole | null): Promise<SignalingMessage>;
|
|
110
|
+
stopStream(data: any): Promise<SignalingMessage>;
|
|
111
|
+
recordSetRole(participantId: ParticipantId, role: RecordRole | null, roomId: number | null): Promise<SignalingMessage>;
|
|
107
112
|
getRecordStatus(): Promise<SignalingMessage>;
|
|
108
113
|
switchTopology(topology: TransportTopology, force?: boolean): Promise<SignalingMessage>;
|
|
109
114
|
requestRealloc(): Promise<SignalingMessage>;
|
|
110
115
|
reportPerfStat(report: PerfStatReport): Promise<SignalingMessage>;
|
|
116
|
+
reportSharingStat(report: SharingStatReport): Promise<SignalingMessage>;
|
|
111
117
|
chatMessage(message: string, participantId?: CompositeUserId | null): Promise<SignalingMessage>;
|
|
112
118
|
chatHistory(count: number): Promise<SignalingMessage>;
|
|
113
119
|
customData(data: JSONObject, participantId: ParticipantId | null): Promise<SignalingMessage>;
|
|
114
120
|
grantRoles(participantId: CompositeUserId, roles: UserRole[], revoke: boolean): Promise<SignalingMessage>;
|
|
115
|
-
muteParticipant(participantId: ParticipantId | null, muteStates: MuteStates, requestedMedia: MediaOption[]): Promise<SignalingMessage>;
|
|
121
|
+
muteParticipant(participantId: ParticipantId | null, muteStates: MuteStates, requestedMedia: MediaOption[], roomId: number | null): Promise<SignalingMessage>;
|
|
116
122
|
enableFeatureForRoles(feature: ConversationFeature, roles: UserRole[]): Promise<SignalingMessage>;
|
|
117
123
|
pinParticipant(participantId: ParticipantId, unpin: boolean): Promise<SignalingMessage>;
|
|
118
124
|
updateMediaModifiers(mediaModifiers: MediaModifiers): Promise<SignalingMessage>;
|
|
@@ -135,6 +141,8 @@ export default class Signaling extends BaseSignaling {
|
|
|
135
141
|
readyToSend(): void;
|
|
136
142
|
getParticipantListChunk(participantListChunkParameters: ParticipantListChunkParameters): Promise<SignalingMessage>;
|
|
137
143
|
getParticipants(externalIds: SignalingMessage.ExternalId[]): Promise<SignalingMessage>;
|
|
144
|
+
startAsr(): Promise<SignalingMessage>;
|
|
145
|
+
stopAsr(): Promise<SignalingMessage>;
|
|
138
146
|
protected _connect(connectionType: SignalingConnectionType): void;
|
|
139
147
|
protected _disconnect(): void;
|
|
140
148
|
private _onOpen;
|
package/enums/MediaOption.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ declare enum SignalingCommandType {
|
|
|
12
12
|
CHANGE_STREAM_PRIORITIES = "change-streams-priorities",
|
|
13
13
|
UPDATE_DISPLAY_LAYOUT = "update-display-layout",
|
|
14
14
|
REPORT_PERF_STAT = "report-perf-stat",
|
|
15
|
+
REPORT_SHARING_STAT = "report-sharing-stat",
|
|
15
16
|
RECORD_START = "record-start",
|
|
16
17
|
RECORD_STOP = "record-stop",
|
|
17
18
|
RECORD_SET_ROLE = "record-set-role",
|
|
@@ -36,6 +37,14 @@ declare enum SignalingCommandType {
|
|
|
36
37
|
ADD_MOVIE = "add-movie",
|
|
37
38
|
UPDATE_MOVIE = "update-movie",
|
|
38
39
|
REMOVE_MOVIE = "remove-movie",
|
|
39
|
-
|
|
40
|
+
GET_ROOMS = "get_rooms",
|
|
41
|
+
GET_ROOM = "get_room",
|
|
42
|
+
UPDATE_ROOMS = "update-rooms",
|
|
43
|
+
ACTIVATE_ROOMS = "activate-rooms",
|
|
44
|
+
REMOVE_ROOMS = "remove-rooms",
|
|
45
|
+
SWITCH_ROOM = "switch-room",
|
|
46
|
+
FEEDBACK = "feedback",
|
|
47
|
+
ASR_START = "asr-start",
|
|
48
|
+
ASR_STOP = "asr-stop"
|
|
40
49
|
}
|
|
41
50
|
export default SignalingCommandType;
|
|
@@ -40,6 +40,12 @@ declare enum SignalingNotification {
|
|
|
40
40
|
MOVIE_UPDATE_NOTIFICATION = "movie-update-notification",
|
|
41
41
|
MOVIE_SHARE_INFO = "movie-share-info",
|
|
42
42
|
MOVIE_SHARE_STARTED = "movie-share-started",
|
|
43
|
-
MOVIE_SHARE_STOPPED = "movie-share-stopped"
|
|
43
|
+
MOVIE_SHARE_STOPPED = "movie-share-stopped",
|
|
44
|
+
ROOM_UPDATED = "room-updated",
|
|
45
|
+
ROOMS_UPDATED = "rooms-updated",
|
|
46
|
+
ROOM_PARTICIPANTS_UPDATED = "room-participants-updated",
|
|
47
|
+
FEATURES_PER_ROLE_CHANGED = "features-per-role-changed",
|
|
48
|
+
ASR_STARTED = "asr-started",
|
|
49
|
+
ASR_STOPPED = "asr-stopped"
|
|
44
50
|
}
|
|
45
51
|
export default SignalingNotification;
|
package/package.json
CHANGED
package/static/External.d.ts
CHANGED
|
@@ -6,7 +6,9 @@ import ChatRoomEventType from '../enums/ChatRoomEventType';
|
|
|
6
6
|
import ConversationOption from '../enums/ConversationOption';
|
|
7
7
|
import FatalError from '../enums/FatalError';
|
|
8
8
|
import MediaOption from '../enums/MediaOption';
|
|
9
|
+
import RoomsEventType from '../enums/RoomsEventType';
|
|
9
10
|
import UserRole from '../enums/UserRole';
|
|
11
|
+
import { IFeaturesPerRole } from '../types/ConversationFeature';
|
|
10
12
|
import { ExternalId, ExternalParticipant, ExternalParticipantId, ExternalParticipantListChunk, ExternalParticipantListMarkers } from '../types/ExternalId';
|
|
11
13
|
import { IFeedbackExternal } from '../types/Feedback';
|
|
12
14
|
import MediaModifiers from '../types/MediaModifiers';
|
|
@@ -14,6 +16,7 @@ import MediaSettings from '../types/MediaSettings';
|
|
|
14
16
|
import { IOnRemoteMovieData, ISharedMovieInfo, ISharedMovieState, ISharedMovieStoppedInfo } from '../types/MovieShare';
|
|
15
17
|
import MuteStates from '../types/MuteStates';
|
|
16
18
|
import { ParticipantStateMapped } from '../types/Participant';
|
|
19
|
+
import { Room, RoomParticipantUpdate, Rooms, RoomsUpdate } from '../types/Room';
|
|
17
20
|
import { DebugMessageType } from './Debug';
|
|
18
21
|
import { JSONObject } from './Json';
|
|
19
22
|
/**
|
|
@@ -114,8 +117,9 @@ declare namespace External {
|
|
|
114
117
|
* @param mediaModifiers Текущие настройки пользовательского медиа
|
|
115
118
|
* @param muteStates Состояние устройств при входе в звонок
|
|
116
119
|
* @param participants Список участников звонка (при `Params.batchParticipantsOnStart = true`)
|
|
120
|
+
* @param rooms Список комнат в звонке
|
|
117
121
|
*/
|
|
118
|
-
function onConversation(userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants?: ExternalParticipant[]): void;
|
|
122
|
+
function onConversation(userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants?: ExternalParticipant[], rooms?: Rooms): void;
|
|
119
123
|
/**
|
|
120
124
|
* Постраничные данные про участников при начале звонка
|
|
121
125
|
* @param chunk
|
|
@@ -246,9 +250,10 @@ declare namespace External {
|
|
|
246
250
|
* @param userId Пользователь, для которого изменились разрешения или `null` для текущего пользователя
|
|
247
251
|
* @param adminId Пользователь, который изменил разрешения
|
|
248
252
|
* @param stateUpdated Если `true`, значит глобальное/персональное состояние изменилось и поля `muteStates`/`unmuteOptions` содержат обновления, если `false`, значит, эти поля не имеют значения
|
|
249
|
-
* @param requestedMedia Какие устройства попросили
|
|
253
|
+
* @param requestedMedia Какие устройства попросили включить участника
|
|
254
|
+
* @param roomId ID сессионного зала или ничего в случае основного зала
|
|
250
255
|
*/
|
|
251
|
-
function onMuteStates(muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll?: boolean, unmute?: boolean, userId?: ExternalParticipantId | null, adminId?: ExternalParticipantId | null, stateUpdated?: boolean, requestedMedia?: MediaOption[]): void;
|
|
256
|
+
function onMuteStates(muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll?: boolean, unmute?: boolean, userId?: ExternalParticipantId | null, adminId?: ExternalParticipantId | null, stateUpdated?: boolean, requestedMedia?: MediaOption[], roomId?: number | null): void;
|
|
252
257
|
/**
|
|
253
258
|
* Изменились роли собеседника в звонке
|
|
254
259
|
*
|
|
@@ -355,12 +360,14 @@ declare namespace External {
|
|
|
355
360
|
* @param type Тип записи
|
|
356
361
|
* @param externalMovieId Внешний ID ролика
|
|
357
362
|
* @param externalOwnerId Внешний ID пользователя/группы от которого ведётся трансляция
|
|
363
|
+
* @param roomId ID зала в котором стартанула запись
|
|
358
364
|
*/
|
|
359
|
-
function onRecordStarted(initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string): void;
|
|
365
|
+
function onRecordStarted(initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, roomId?: number | null): void;
|
|
360
366
|
/**
|
|
361
367
|
* Закончена запись звонка
|
|
368
|
+
* @param roomId ID зала в котором остановлена запись
|
|
362
369
|
*/
|
|
363
|
-
function onRecordStopped(): void;
|
|
370
|
+
function onRecordStopped(roomId?: number | null): void;
|
|
364
371
|
/**
|
|
365
372
|
* Состояние своей сети
|
|
366
373
|
*
|
|
@@ -413,9 +420,43 @@ declare namespace External {
|
|
|
413
420
|
* @param joinLink токен присоединения к звонку
|
|
414
421
|
*/
|
|
415
422
|
function onJoinLinkChanged(joinLink: string): void;
|
|
423
|
+
/**
|
|
424
|
+
* Получено обновление по сессионным залам
|
|
425
|
+
* @param updates
|
|
426
|
+
*/
|
|
427
|
+
function onRoomsUpdated(updates: Partial<Record<RoomsEventType, RoomsUpdate>>): void;
|
|
428
|
+
/**
|
|
429
|
+
* Получено обновление по сессионному залу
|
|
430
|
+
* @param eventTypes
|
|
431
|
+
* @param roomId
|
|
432
|
+
* @param room
|
|
433
|
+
* @param deactivate
|
|
434
|
+
*/
|
|
435
|
+
function onRoomUpdated(eventTypes: RoomsEventType[], roomId: number, room: Room | null, deactivate: boolean | null): void;
|
|
436
|
+
/**
|
|
437
|
+
* Получено обновление по участникам сессионного зала
|
|
438
|
+
* @param update
|
|
439
|
+
*/
|
|
440
|
+
function onRoomParticipantsUpdated(update: RoomParticipantUpdate): void;
|
|
416
441
|
/**
|
|
417
442
|
* Получена новая реакция
|
|
418
443
|
*/
|
|
419
444
|
function onFeedback(feedback: IFeedbackExternal[]): void;
|
|
445
|
+
/**
|
|
446
|
+
* Изменилось состояние пермиссий фич в звонке
|
|
447
|
+
*
|
|
448
|
+
* @param featuresPerRole Информация о доступных фичах по ролям
|
|
449
|
+
*/
|
|
450
|
+
function onFeaturesPerRoleChanged(featuresPerRole: IFeaturesPerRole): void;
|
|
451
|
+
/**
|
|
452
|
+
* Начата текстовая расшифровка звонка
|
|
453
|
+
* @param initiatorId Id пользователя, запустившего расшифровку звонка
|
|
454
|
+
* @param movieId Id расшифровки
|
|
455
|
+
*/
|
|
456
|
+
function onAsrStarted(initiatorId: ExternalParticipantId, movieId: number): void;
|
|
457
|
+
/**
|
|
458
|
+
* Закончена текстовая расшифровка звонка
|
|
459
|
+
*/
|
|
460
|
+
function onAsrStopped(): void;
|
|
420
461
|
}
|
|
421
462
|
export default External;
|