@vkontakte/calls-sdk 2.6.2-beta.26 → 2.6.2-beta.28
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 +42 -3
- package/abstract/BaseSignaling.d.ts +8 -0
- package/calls-sdk.cjs.js +8 -8
- package/calls-sdk.esm.js +8 -8
- package/classes/Conversation.d.ts +13 -0
- 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/default/Signaling.d.ts +8 -0
- package/enums/LiveStatus.d.ts +7 -0
- package/enums/RoomsEventType.d.ts +6 -0
- package/enums/SignalingCommandType.d.ts +10 -1
- package/enums/SignalingNotification.d.ts +6 -1
- package/package.json +1 -1
- package/static/External.d.ts +23 -1
- package/static/Params.d.ts +31 -1
- package/static/Polyfills.d.ts +6 -0
- package/types/Asr.d.ts +5 -0
- package/types/MovieShare.d.ts +4 -1
- package/types/ParticipantListChunk.d.ts +2 -0
- package/types/Room.d.ts +60 -0
- package/types/SignalingMessage.d.ts +41 -0
- package/worker/LibVPxEncoderWorker.d.ts +1 -1
|
@@ -13,6 +13,7 @@ import UserRole from '../enums/UserRole';
|
|
|
13
13
|
import UserType from '../enums/UserType';
|
|
14
14
|
import { JSONObject } from '../static/Json';
|
|
15
15
|
import { IFeaturesPerRole } from '../types/ConversationFeature';
|
|
16
|
+
import { AsrInfo } from '../types/Asr';
|
|
16
17
|
import { ExternalParticipant, ExternalParticipantId, ExternalParticipantListChunk, ExternalUserId } from '../types/ExternalId';
|
|
17
18
|
import MediaModifiers from '../types/MediaModifiers';
|
|
18
19
|
import { IVideoDimentions } from '../types/MediaSettings';
|
|
@@ -51,6 +52,7 @@ export declare type ConversationData = {
|
|
|
51
52
|
needRate: boolean;
|
|
52
53
|
recordInfo: RecordInfo | null;
|
|
53
54
|
chatId: string | null;
|
|
55
|
+
asrInfo: AsrInfo | null;
|
|
54
56
|
/**
|
|
55
57
|
* Роли пользователя
|
|
56
58
|
*/
|
|
@@ -228,6 +230,8 @@ export default class Conversation extends EventEmitter {
|
|
|
228
230
|
private _isCallAdmin;
|
|
229
231
|
private _checkAdminRole;
|
|
230
232
|
grantRoles(participantId: CompositeUserId, roles: UserRole[], revoke: boolean): Promise<void>;
|
|
233
|
+
startAsr(): Promise<void>;
|
|
234
|
+
stopAsr(): Promise<void>;
|
|
231
235
|
muteParticipant(participantId: ParticipantId | null, muteStates: MuteStates, requestedMedia?: MediaOption[]): Promise<void>;
|
|
232
236
|
enableFeatureForRoles(feature: ConversationFeature, roles: UserRole[]): Promise<void>;
|
|
233
237
|
pinParticipant(participantId: ParticipantId, unpin: boolean): Promise<void>;
|
|
@@ -252,6 +256,10 @@ export default class Conversation extends EventEmitter {
|
|
|
252
256
|
}>;
|
|
253
257
|
updateMovie(params: IUpdateMovieData): Promise<void>;
|
|
254
258
|
removeMovie(movieId: string): Promise<void>;
|
|
259
|
+
updateRooms(rooms: SignalingMessage.Room[], assignRandomly: boolean): Promise<void>;
|
|
260
|
+
activateRooms(roomIds: number[], deactivate: boolean): Promise<void>;
|
|
261
|
+
switchRoom(toRoomId?: number, participantId?: ParticipantId): Promise<void>;
|
|
262
|
+
removeRooms(roomIds: number[]): Promise<void>;
|
|
255
263
|
startStream(isRecord?: boolean, name?: string | null, movieId?: string | null, privacy?: 'PUBLIC' | 'FRIENDS' | 'DIRECT_LINK', groupId?: string | null): Promise<SignalingMessage>;
|
|
256
264
|
stopStream(): Promise<SignalingMessage>;
|
|
257
265
|
recordSetRole(participantId: ParticipantId, role: RecordRole | null): Promise<void>;
|
|
@@ -292,6 +300,7 @@ export default class Conversation extends EventEmitter {
|
|
|
292
300
|
private _onChatMessage;
|
|
293
301
|
private _onCustomData;
|
|
294
302
|
private _onRecordInfo;
|
|
303
|
+
private _onAsrInfo;
|
|
295
304
|
private _onRolesChanged;
|
|
296
305
|
/**
|
|
297
306
|
* Клиент должен немедленно выключить микрофон и/или камеру
|
|
@@ -322,6 +331,10 @@ export default class Conversation extends EventEmitter {
|
|
|
322
331
|
private _updateDisplayLayoutFromCache;
|
|
323
332
|
private _setParticipantsStatus;
|
|
324
333
|
private _onJoinLinkChanged;
|
|
334
|
+
private _onRoomsUpdated;
|
|
335
|
+
private _onRoomUpdated;
|
|
336
|
+
private _convertRoomToExternal;
|
|
337
|
+
private _onRoomParticipantsUpdated;
|
|
325
338
|
/** получили из сингналинга сообщение о реакции пользователей */
|
|
326
339
|
private _onFeedback;
|
|
327
340
|
private _isMe;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import ParticipantLayout, { RequestKeyFrame, StopStream } from '../types/ParticipantLayout';
|
|
2
2
|
import SignalingMessage from '../types/SignalingMessage';
|
|
3
|
+
import { SharingStatReport } from '../classes/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;
|
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,6 +102,10 @@ 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, participantId?: ParticipantId): Promise<SignalingMessage>;
|
|
108
|
+
removeRooms(roomIds: number[]): Promise<SignalingMessage>;
|
|
104
109
|
startStream(data: any): Promise<SignalingMessage>;
|
|
105
110
|
stopStream(): Promise<SignalingMessage>;
|
|
106
111
|
recordSetRole(participantId: ParticipantId, role: RecordRole | null): Promise<SignalingMessage>;
|
|
@@ -108,6 +113,7 @@ export default class Signaling extends BaseSignaling {
|
|
|
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>;
|
|
@@ -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;
|
|
@@ -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;
|
|
@@ -41,6 +41,11 @@ declare enum SignalingNotification {
|
|
|
41
41
|
MOVIE_SHARE_INFO = "movie-share-info",
|
|
42
42
|
MOVIE_SHARE_STARTED = "movie-share-started",
|
|
43
43
|
MOVIE_SHARE_STOPPED = "movie-share-stopped",
|
|
44
|
-
|
|
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"
|
|
45
50
|
}
|
|
46
51
|
export default SignalingNotification;
|
package/package.json
CHANGED
package/static/External.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ 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';
|
|
10
11
|
import { IFeaturesPerRole } from '../types/ConversationFeature';
|
|
11
12
|
import { ExternalId, ExternalParticipant, ExternalParticipantId, ExternalParticipantListChunk, ExternalParticipantListMarkers } from '../types/ExternalId';
|
|
@@ -15,6 +16,7 @@ import MediaSettings from '../types/MediaSettings';
|
|
|
15
16
|
import { IOnRemoteMovieData, ISharedMovieInfo, ISharedMovieState, ISharedMovieStoppedInfo } from '../types/MovieShare';
|
|
16
17
|
import MuteStates from '../types/MuteStates';
|
|
17
18
|
import { ParticipantStateMapped } from '../types/Participant';
|
|
19
|
+
import { Room, RoomParticipantUpdate, RoomsUpdate } from '../types/Room';
|
|
18
20
|
import { DebugMessageType } from './Debug';
|
|
19
21
|
import { JSONObject } from './Json';
|
|
20
22
|
/**
|
|
@@ -115,8 +117,9 @@ declare namespace External {
|
|
|
115
117
|
* @param mediaModifiers Текущие настройки пользовательского медиа
|
|
116
118
|
* @param muteStates Состояние устройств при входе в звонок
|
|
117
119
|
* @param participants Список участников звонка (при `Params.batchParticipantsOnStart = true`)
|
|
120
|
+
* @param rooms Список комнат в звонке
|
|
118
121
|
*/
|
|
119
|
-
function onConversation(userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants?: ExternalParticipant[]): void;
|
|
122
|
+
function onConversation(userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants?: ExternalParticipant[], rooms?: Room[]): void;
|
|
120
123
|
/**
|
|
121
124
|
* Постраничные данные про участников при начале звонка
|
|
122
125
|
* @param chunk
|
|
@@ -414,6 +417,15 @@ declare namespace External {
|
|
|
414
417
|
* @param joinLink токен присоединения к звонку
|
|
415
418
|
*/
|
|
416
419
|
function onJoinLinkChanged(joinLink: string): void;
|
|
420
|
+
/**
|
|
421
|
+
*/
|
|
422
|
+
function onRoomsUpdated(updates: Partial<Record<RoomsEventType, RoomsUpdate>>): void;
|
|
423
|
+
/**
|
|
424
|
+
*/
|
|
425
|
+
function onRoomUpdated(eventTypes: RoomsEventType[], roomId: number, room: Room | null): void;
|
|
426
|
+
/**
|
|
427
|
+
*/
|
|
428
|
+
function onRoomParticipantsUpdated(update: RoomParticipantUpdate): void;
|
|
417
429
|
/**
|
|
418
430
|
* Получена новая реакция
|
|
419
431
|
*/
|
|
@@ -424,5 +436,15 @@ declare namespace External {
|
|
|
424
436
|
* @param featuresPerRole Информация о доступных фичах по ролям
|
|
425
437
|
*/
|
|
426
438
|
function onFeaturesPerRoleChanged(featuresPerRole: IFeaturesPerRole): void;
|
|
439
|
+
/**
|
|
440
|
+
* Начата текстовая расшифровка звонка
|
|
441
|
+
* @param initiatorId Id пользователя, запустившего расшифровку звонка
|
|
442
|
+
* @param movieId Id расшифровки
|
|
443
|
+
*/
|
|
444
|
+
function onAsrStarted(initiatorId: ExternalParticipantId, movieId: number): void;
|
|
445
|
+
/**
|
|
446
|
+
* Закончена текстовая расшифровка звонка
|
|
447
|
+
*/
|
|
448
|
+
function onAsrStopped(): void;
|
|
427
449
|
}
|
|
428
450
|
export default External;
|
package/static/Params.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ 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';
|
|
10
11
|
import { IFeaturesPerRole } from '../types/ConversationFeature';
|
|
11
12
|
import { ExternalId, ExternalParticipant, ExternalParticipantId, ExternalParticipantListChunk, ExternalParticipantListMarkers } from '../types/ExternalId';
|
|
@@ -16,6 +17,7 @@ import MediaSettings from '../types/MediaSettings';
|
|
|
16
17
|
import { IOnRemoteMovieData, ISharedMovieInfo, ISharedMovieState, ISharedMovieStoppedInfo } from '../types/MovieShare';
|
|
17
18
|
import MuteStates from '../types/MuteStates';
|
|
18
19
|
import { ParticipantStateMapped } from '../types/Participant';
|
|
20
|
+
import { Room, RoomParticipantUpdate, RoomsUpdate } from '../types/Room';
|
|
19
21
|
import AuthData from './AuthData';
|
|
20
22
|
import { DebugMessageType } from './Debug';
|
|
21
23
|
import { ParticipantStatus } from './External';
|
|
@@ -239,6 +241,10 @@ export declare type ParamsObject = {
|
|
|
239
241
|
* Включить постраничный вывод участников. Работает только если включено videoTracksCount (слоты)
|
|
240
242
|
*/
|
|
241
243
|
useParticipantListChunk: boolean;
|
|
244
|
+
/**
|
|
245
|
+
* Включить комнаты
|
|
246
|
+
*/
|
|
247
|
+
useRooms: boolean;
|
|
242
248
|
/**
|
|
243
249
|
* Индекс участника для первого chunk'а который придет при установки соединения с сервером
|
|
244
250
|
*/
|
|
@@ -284,6 +290,11 @@ export declare type ParamsObject = {
|
|
|
284
290
|
* @hidden
|
|
285
291
|
*/
|
|
286
292
|
preserveAudioTracks: boolean;
|
|
293
|
+
/**
|
|
294
|
+
* Использовать congestion control для шаринга
|
|
295
|
+
* @hidden
|
|
296
|
+
*/
|
|
297
|
+
screenShareCongestionControl: boolean;
|
|
287
298
|
/**
|
|
288
299
|
* Получен локальный стрим с камеры/микрофона
|
|
289
300
|
*/
|
|
@@ -331,7 +342,7 @@ export declare type ParamsObject = {
|
|
|
331
342
|
/**
|
|
332
343
|
* Начат звонок
|
|
333
344
|
*/
|
|
334
|
-
onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants?: ExternalParticipant[]) => void;
|
|
345
|
+
onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants?: ExternalParticipant[], rooms?: Room[]) => void;
|
|
335
346
|
/**
|
|
336
347
|
* Начальный список участников для постраничного звонка
|
|
337
348
|
*/
|
|
@@ -525,6 +536,23 @@ export declare type ParamsObject = {
|
|
|
525
536
|
* @param joinLink токен присоединения к звонку
|
|
526
537
|
*/
|
|
527
538
|
onJoinLinkChanged?: (joinLink: string) => void;
|
|
539
|
+
/**
|
|
540
|
+
* Получено обновление списка комнат
|
|
541
|
+
* @param updates список обновлений по комнатам
|
|
542
|
+
*/
|
|
543
|
+
onRoomsUpdated?: (updates: Partial<Record<RoomsEventType, RoomsUpdate>>) => void;
|
|
544
|
+
/**
|
|
545
|
+
* Получено обновление комнаты
|
|
546
|
+
* @param eventTypes список событий
|
|
547
|
+
* @param roomId номер комнаты
|
|
548
|
+
* @param room комната
|
|
549
|
+
*/
|
|
550
|
+
onRoomUpdated?: (eventTypes: RoomsEventType[], roomId: number, room: Room | null) => void;
|
|
551
|
+
/**
|
|
552
|
+
* Получение обновление списка участников в комнате
|
|
553
|
+
* @param update обновление списка участников
|
|
554
|
+
*/
|
|
555
|
+
onRoomParticipantsUpdated?: (update: RoomParticipantUpdate) => void;
|
|
528
556
|
/**
|
|
529
557
|
* Получены новые реакции в звонке
|
|
530
558
|
* @param feedback массив с реакциями
|
|
@@ -633,6 +661,7 @@ export default abstract class Params {
|
|
|
633
661
|
static get breakVideoPayloadTypes(): boolean;
|
|
634
662
|
static get filteredMessages(): boolean;
|
|
635
663
|
static get useParticipantListChunk(): boolean;
|
|
664
|
+
static get useRooms(): boolean;
|
|
636
665
|
static get participantListChunkInitIndex(): number;
|
|
637
666
|
static get participantListChunkInitCount(): number;
|
|
638
667
|
static get serverAudioRed(): boolean;
|
|
@@ -643,4 +672,5 @@ export default abstract class Params {
|
|
|
643
672
|
static get muteMode(): boolean;
|
|
644
673
|
static get preserveAudioTracks(): boolean;
|
|
645
674
|
static get audioShareCapabilityEnabled(): boolean;
|
|
675
|
+
static get screenShareCongestionControl(): boolean;
|
|
646
676
|
}
|
package/types/Asr.d.ts
ADDED
package/types/MovieShare.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import LiveStatus from '../enums/LiveStatus';
|
|
1
2
|
import { OkUserId, CompositeUserId } from './Participant';
|
|
2
3
|
import { MediaType } from './ParticipantStreamDescription';
|
|
3
4
|
export interface IMoviePreview {
|
|
@@ -18,7 +19,8 @@ export declare type ISharedMovieStateResponse = [
|
|
|
18
19
|
number,
|
|
19
20
|
boolean,
|
|
20
21
|
number,
|
|
21
|
-
boolean
|
|
22
|
+
boolean,
|
|
23
|
+
number
|
|
22
24
|
];
|
|
23
25
|
export interface ISharedMovieState {
|
|
24
26
|
participantId: CompositeUserId;
|
|
@@ -26,6 +28,7 @@ export interface ISharedMovieState {
|
|
|
26
28
|
pause?: boolean;
|
|
27
29
|
offset?: number;
|
|
28
30
|
mute?: boolean;
|
|
31
|
+
liveStatus?: LiveStatus;
|
|
29
32
|
}
|
|
30
33
|
export interface IUpdateMovieData {
|
|
31
34
|
movieId: string;
|
|
@@ -10,4 +10,6 @@ export interface ParticipantListChunkParameters {
|
|
|
10
10
|
backward?: boolean;
|
|
11
11
|
/** If true then resulting chunk will start from Participant with specified marker, if such Participant (still) exists */
|
|
12
12
|
includeMarker?: boolean;
|
|
13
|
+
/** optional, id of the room to get chunk for, main call if unspecified */
|
|
14
|
+
roomId?: number;
|
|
13
15
|
}
|
package/types/Room.d.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ExternalParticipantId, ExternalParticipantListChunk } from './ExternalId';
|
|
2
|
+
import { Participant, ParticipantListMarkers } from './Participant';
|
|
3
|
+
export interface Room {
|
|
4
|
+
id: number;
|
|
5
|
+
/**
|
|
6
|
+
* name of this room
|
|
7
|
+
*/
|
|
8
|
+
name: string;
|
|
9
|
+
/**
|
|
10
|
+
* count of participants (read/write, optional)
|
|
11
|
+
*/
|
|
12
|
+
participantCount: number;
|
|
13
|
+
/**
|
|
14
|
+
* ids of all participants (read/write, optional)
|
|
15
|
+
*/
|
|
16
|
+
participantIds: ExternalParticipantId[];
|
|
17
|
+
/**
|
|
18
|
+
* ids of participants to be added to this room (read/write, optional)
|
|
19
|
+
*/
|
|
20
|
+
addParticipantIds?: ExternalParticipantId[];
|
|
21
|
+
/**
|
|
22
|
+
* ids of participants to be removed from this room (read/write, optional)
|
|
23
|
+
*/
|
|
24
|
+
removeParticipantIds?: ExternalParticipantId[];
|
|
25
|
+
/**
|
|
26
|
+
* if participant requested then contains first chunk of participants in this rooms
|
|
27
|
+
* (if client fails to support chunks, then contains all participant in this room)
|
|
28
|
+
* (read, optional)
|
|
29
|
+
*/
|
|
30
|
+
participants?: ExternalParticipantListChunk;
|
|
31
|
+
/**
|
|
32
|
+
* if this room is active (read/write, optional)
|
|
33
|
+
*/
|
|
34
|
+
active?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface RoomsUpdate {
|
|
37
|
+
rooms?: Room[];
|
|
38
|
+
roomIds?: number[];
|
|
39
|
+
}
|
|
40
|
+
export interface RoomParticipantUpdate {
|
|
41
|
+
roomId: number;
|
|
42
|
+
/**
|
|
43
|
+
* total number of participants in the room
|
|
44
|
+
*/
|
|
45
|
+
participantCount: number;
|
|
46
|
+
/**
|
|
47
|
+
* ids of added participants, always present (if any) so participants would be able
|
|
48
|
+
* to identify their presence in particular room
|
|
49
|
+
*/
|
|
50
|
+
addedParticipantIds?: ExternalParticipantId[];
|
|
51
|
+
/**
|
|
52
|
+
* optional, data for added participants
|
|
53
|
+
*/
|
|
54
|
+
addedParticipants?: Participant[];
|
|
55
|
+
/**
|
|
56
|
+
* optional, depending on the context may contain either markers
|
|
57
|
+
* for all (sorted) lists available or be empty (if client fails to support chunked participants)
|
|
58
|
+
*/
|
|
59
|
+
removedParticipantMarkers?: ParticipantListMarkers;
|
|
60
|
+
}
|