@vkontakte/calls-sdk 2.8.6-dev.77dd3c9d.0 → 2.8.6-dev.97c05c29.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 +6 -4
- package/abstract/BaseSignaling.d.ts +4 -2
- package/calls-sdk.cjs.js +8 -8
- package/calls-sdk.esm.js +8 -8
- package/classes/Conversation.d.ts +8 -5
- package/classes/MediaSource.d.ts +9 -0
- package/classes/ProducerCommandSerializationService.d.ts +2 -0
- package/classes/stat/CodecStatsAggregator.d.ts +19 -0
- package/classes/stat/EventMetricsService.d.ts +9 -0
- package/classes/transport/ServerTransport.d.ts +5 -0
- package/classes/transport/Transport.d.ts +1 -0
- package/default/Signaling.d.ts +4 -2
- package/enums/SignalingCommandType.d.ts +2 -1
- package/enums/Stat.d.ts +4 -1
- package/package.json +6 -3
- package/static/Params.d.ts +15 -0
- package/static/SimulcastInfo.d.ts +13 -0
- package/static/Utils.d.ts +2 -1
- package/static/WebRTCUtils.d.ts +5 -0
- package/types/ChangeSimulcast.d.ts +6 -0
- package/types/ConversationParams.d.ts +12 -1
- package/types/ConversationResponse.d.ts +5 -0
- package/types/Participant.d.ts +9 -0
- package/types/PerfStatReporter.d.ts +1 -0
- package/types/SimulcastInfo.d.ts +10 -0
- package/types/Statistics.d.ts +158 -4
- package/types/VideoSettings.d.ts +12 -0
- package/utils/Lz4.d.ts +1 -0
|
@@ -19,7 +19,7 @@ import MediaModifiers from '../types/MediaModifiers';
|
|
|
19
19
|
import { IVideoDimentions } from '../types/MediaSettings';
|
|
20
20
|
import { IAddMovieParams, IUpdateMovieData } from '../types/MovieShare';
|
|
21
21
|
import MuteStates from '../types/MuteStates';
|
|
22
|
-
import { CompositeUserId, IGetParticipantsParameters, OkUserId, ParticipantId } from '../types/Participant';
|
|
22
|
+
import { CompositeUserId, IGetParticipantsParameters, OkUserId, ParticipantId, ParticipantStateData } from '../types/Participant';
|
|
23
23
|
import { ParticipantLayout } from '../types/ParticipantLayout';
|
|
24
24
|
import { ParticipantListChunkParameters } from '../types/ParticipantListChunk';
|
|
25
25
|
import ParticipantPriority from '../types/ParticipantPriority';
|
|
@@ -78,13 +78,15 @@ export default class Conversation extends EventEmitter {
|
|
|
78
78
|
private _onJoinPart2;
|
|
79
79
|
private _extractExternalRooms;
|
|
80
80
|
private _extractExternalRoomsData;
|
|
81
|
-
onPush(conversationId: string, type?: UserType, peerId?: number): Promise<void>;
|
|
81
|
+
onPush(conversationId: string, type?: UserType, peerId?: number, conversationParams?: string): Promise<void>;
|
|
82
82
|
private _isInWaitingHall;
|
|
83
83
|
private _isRestricted;
|
|
84
84
|
private _isAudienceMode;
|
|
85
85
|
private _isAudienceModeListener;
|
|
86
86
|
private _acceptConcurrent;
|
|
87
87
|
private _getMainRoomParticipants;
|
|
88
|
+
private _decodeExternalConversationParams;
|
|
89
|
+
private _logCallStartEvent;
|
|
88
90
|
accept(mediaOptions: MediaOption[]): Promise<ConversationData>;
|
|
89
91
|
decline(): Promise<void>;
|
|
90
92
|
hangup(): Promise<void>;
|
|
@@ -96,6 +98,7 @@ export default class Conversation extends EventEmitter {
|
|
|
96
98
|
private _close;
|
|
97
99
|
destroy(): void;
|
|
98
100
|
private _getConversationParams;
|
|
101
|
+
private _setConversationParams;
|
|
99
102
|
private _addGeoParamsToEndpoint;
|
|
100
103
|
/**
|
|
101
104
|
* @throws ErrorEvent
|
|
@@ -189,7 +192,7 @@ export default class Conversation extends EventEmitter {
|
|
|
189
192
|
* @deprecated Use updateDisplayLayout instead
|
|
190
193
|
*/
|
|
191
194
|
changePriorities(priorities: ParticipantPriority[]): Promise<void>;
|
|
192
|
-
changeParticipantState(state:
|
|
195
|
+
changeParticipantState(state: ParticipantStateData, compositeUserId?: CompositeUserId): Promise<void>;
|
|
193
196
|
putHandsDown(): Promise<void>;
|
|
194
197
|
requestKeyFrame(participantStreamDescription: ParticipantStreamDescription): Promise<void | SignalingMessage>;
|
|
195
198
|
requestTestMode(consumerCommand: string, producerCommand: string): Promise<void>;
|
|
@@ -249,7 +252,7 @@ export default class Conversation extends EventEmitter {
|
|
|
249
252
|
customData(data: JSONObject, participantId?: ParticipantId | null): Promise<void>;
|
|
250
253
|
createJoinLink(): Promise<string>;
|
|
251
254
|
removeJoinLink(): Promise<undefined>;
|
|
252
|
-
addMovie({ movieId, gain, metadata }: IAddMovieParams): Promise<{
|
|
255
|
+
addMovie({ movieId, gain, metadata, lang }: IAddMovieParams): Promise<{
|
|
253
256
|
movieId: number;
|
|
254
257
|
streamType: string;
|
|
255
258
|
}>;
|
|
@@ -272,7 +275,7 @@ export default class Conversation extends EventEmitter {
|
|
|
272
275
|
setLocalResolution({ video, effect }: {
|
|
273
276
|
video: IVideoDimentions;
|
|
274
277
|
effect?: IVideoDimentions;
|
|
275
|
-
}): Promise<void
|
|
278
|
+
}): Promise<void>;
|
|
276
279
|
videoEffect(effect: IEffect | null): Promise<void | undefined>;
|
|
277
280
|
audioEffect(effects: string[] | null, isPreset?: boolean): Promise<void | undefined>;
|
|
278
281
|
_convertExternalIdsToServerExternalIds(externalIds: ExternalId[]): SignalingMessage.ExternalId[];
|
package/classes/MediaSource.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import MediaSettings, { IVideoDimentions } from '../types/MediaSettings';
|
|
|
5
5
|
import { ScreenCaptureSettings } from '../types/ScreenCaptureSettings';
|
|
6
6
|
export declare const enum MediaSourceEvent {
|
|
7
7
|
SOURCE_CHANGED = "SOURCE_CHANGED",
|
|
8
|
+
SOURCE_READY = "SOURCE_READY",
|
|
8
9
|
TRACK_REPLACED = "TRACK_REPLACED",
|
|
9
10
|
SCREEN_STATUS = "SCREEN_STATUS",
|
|
10
11
|
ANIMOJI_STATUS = "ANIMOJI_STATUS"
|
|
@@ -22,6 +23,13 @@ interface AudioEffectParams {
|
|
|
22
23
|
effects: string[];
|
|
23
24
|
isPreset?: boolean;
|
|
24
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* тип источника (для сервера)
|
|
28
|
+
*/
|
|
29
|
+
export declare enum MediaSourceType {
|
|
30
|
+
CAMERA = 1,
|
|
31
|
+
SCREEN = 2
|
|
32
|
+
}
|
|
25
33
|
export declare class MediaSource extends EventEmitter {
|
|
26
34
|
/** Стрим с камеры и микрофона пользователя */
|
|
27
35
|
protected _stream: MediaStream | null;
|
|
@@ -90,6 +98,7 @@ export declare class MediaSource extends EventEmitter {
|
|
|
90
98
|
video: IVideoDimentions;
|
|
91
99
|
effect?: IVideoDimentions;
|
|
92
100
|
}): Promise<void>;
|
|
101
|
+
getCameraVideoTrack(): MediaStreamTrack | null;
|
|
93
102
|
updateNoiseSuppression(): Promise<void>;
|
|
94
103
|
videoEffect(effect: IEffect | null): Promise<void>;
|
|
95
104
|
audioEffect(audioEffectParams: AudioEffectParams | null): Promise<void>;
|
|
@@ -5,6 +5,7 @@ import { EnableVideoSuspend } from '../types/EnableVideoSuspend';
|
|
|
5
5
|
import { EnableVideoSuspendSuggest } from '../types/EnableVideoSuspendSuggest';
|
|
6
6
|
import SignalingMessage from '../types/SignalingMessage';
|
|
7
7
|
import { PerfStatReport } from '../types/PerfStatReporter';
|
|
8
|
+
import { ChangeSimulcast } from '../types/ChangeSimulcast';
|
|
8
9
|
import { SharingStatReport } from './screenshare/SharingStatReport';
|
|
9
10
|
import { ParticipantIdRegistry } from './ParticipantIdRegistry';
|
|
10
11
|
export declare class ProducerCommandSerializationService {
|
|
@@ -21,6 +22,7 @@ export declare class ProducerCommandSerializationService {
|
|
|
21
22
|
serializeNetworkStatReport(sequenceNumber: number, report: NetworkStatReport): ArrayBuffer;
|
|
22
23
|
serializeEnableVideoSuspend(sequenceNumber: number, params: EnableVideoSuspend): ArrayBuffer;
|
|
23
24
|
serializeEnableVideoSuspendSuggest(sequenceNumber: number, params: EnableVideoSuspendSuggest): ArrayBuffer;
|
|
25
|
+
serializeChangeSimulcast(sequenceNumber: number, params: ChangeSimulcast): ArrayBuffer;
|
|
24
26
|
deserializeCommandResponse(data: BufferSource | Blob): Promise<SignalingMessage | undefined>;
|
|
25
27
|
private deserializeUpdateDisplayLayoutResponse;
|
|
26
28
|
private deserializeReportPerfStatResponse;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { StatItem } from '../../types/Statistics';
|
|
2
|
+
import { TransportTopology } from '../transport/Transport';
|
|
3
|
+
export type CodecKind = 'audio' | 'video';
|
|
4
|
+
/**
|
|
5
|
+
* Собирает стату по использованию кодеков в webrtc
|
|
6
|
+
* Каждый раз когда обновляется кодек или завершается звонок,
|
|
7
|
+
* отправляется репорт об использовании кодеков
|
|
8
|
+
*/
|
|
9
|
+
export declare class CodecStatsAggregator {
|
|
10
|
+
private static _instance;
|
|
11
|
+
private readonly _codecUsages;
|
|
12
|
+
private getCurrentTransportTopology;
|
|
13
|
+
static create(getCurrentTransportTopology: () => TransportTopology | undefined): void;
|
|
14
|
+
static reportUsage(stat: StatItem): void;
|
|
15
|
+
private saveUsage;
|
|
16
|
+
private report;
|
|
17
|
+
static destroy(): void;
|
|
18
|
+
private _destroy;
|
|
19
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import HangupReason from '../HangupReason';
|
|
2
|
+
import { TransportTopology } from '../transport/Transport';
|
|
3
|
+
/**
|
|
4
|
+
* Класс для работы с событийными метриками, обертка для правильной отправки событий
|
|
5
|
+
*/
|
|
6
|
+
export declare class EventMetricsService {
|
|
7
|
+
private static correctHangupReason;
|
|
8
|
+
static sendHangupEvent(reason: HangupReason, topology?: TransportTopology): void;
|
|
9
|
+
}
|
|
@@ -35,6 +35,7 @@ export default class ServerTransport extends BaseTransport {
|
|
|
35
35
|
private _rtpReceiversByStreamId;
|
|
36
36
|
private _producerSessionId;
|
|
37
37
|
private _newAudioShareTrack;
|
|
38
|
+
private _simulcastInfo;
|
|
38
39
|
constructor(signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings);
|
|
39
40
|
updateStatisticsInterval(): void;
|
|
40
41
|
open(observer?: boolean): void;
|
|
@@ -44,6 +45,7 @@ export default class ServerTransport extends BaseTransport {
|
|
|
44
45
|
allowRestart(): void;
|
|
45
46
|
updateSettings(settings: ServerSettings): void;
|
|
46
47
|
setAnimojiTransport(receiver: AnimojiReceiver, sender: AnimojiSender): void;
|
|
48
|
+
onCameraResolutionChanged(): Promise<void>;
|
|
47
49
|
private _createPerfStatsReporter;
|
|
48
50
|
private _closeConnection;
|
|
49
51
|
private static _closeDataChannel;
|
|
@@ -72,6 +74,8 @@ export default class ServerTransport extends BaseTransport {
|
|
|
72
74
|
private _detectStaleTracks;
|
|
73
75
|
private _allocateConsumer;
|
|
74
76
|
private _processOffer;
|
|
77
|
+
private _findFirstSimTransceiver;
|
|
78
|
+
private _setupSimulcastTransceiver;
|
|
75
79
|
private _acceptProducer;
|
|
76
80
|
private _handleTracks;
|
|
77
81
|
private _onSignalingNotification;
|
|
@@ -82,4 +86,5 @@ export default class ServerTransport extends BaseTransport {
|
|
|
82
86
|
private _onConnectionStateChange;
|
|
83
87
|
private _onReplacedTrack;
|
|
84
88
|
getStreamWaitingTimeMs(streamId: string, targetRtpTimestamp: number): number;
|
|
89
|
+
private _changeSimulcastInfo;
|
|
85
90
|
}
|
|
@@ -66,6 +66,7 @@ export declare class Transport extends EventEmitter {
|
|
|
66
66
|
getStates(): Record<string, TransportState>;
|
|
67
67
|
setAnimojiSvg(participantId: ParticipantId, svgData: AnimojiSvgData): void;
|
|
68
68
|
setAnimojiFill(fill: RGBTuple | string): void;
|
|
69
|
+
onCameraResolutionChanged(): Promise<void>;
|
|
69
70
|
private _setStates;
|
|
70
71
|
private _setLocalState;
|
|
71
72
|
private _onSignalingNotification;
|
package/default/Signaling.d.ts
CHANGED
|
@@ -15,11 +15,12 @@ import MediaModifiers from '../types/MediaModifiers';
|
|
|
15
15
|
import MediaSettings from '../types/MediaSettings';
|
|
16
16
|
import { IAddMovieParams, IUpdateMovieData } from '../types/MovieShare';
|
|
17
17
|
import MuteStates from '../types/MuteStates';
|
|
18
|
-
import { CompositeUserId, ParticipantId } from '../types/Participant';
|
|
18
|
+
import { CompositeUserId, ParticipantId, ParticipantStateData } from '../types/Participant';
|
|
19
19
|
import ParticipantLayout, { RequestKeyFrame, StopStream } from '../types/ParticipantLayout';
|
|
20
20
|
import { ParticipantListChunkParameters } from '../types/ParticipantListChunk';
|
|
21
21
|
import { StreamDescriptionString } from '../types/ParticipantStreamDescription';
|
|
22
22
|
import { PerfStatReport } from '../types/PerfStatReporter';
|
|
23
|
+
import { ChangeSimulcast } from '../types/ChangeSimulcast';
|
|
23
24
|
import SignalingMessage, { GetParticipantsSignalingResponse, GetRoomsSignalingResponse, SignalingSuccessResponse } from '../types/SignalingMessage';
|
|
24
25
|
import { IPublishStreamData, IRecordConfData, IStartStreamData, IStopStreamData } from '../types/Streams';
|
|
25
26
|
export default class Signaling extends BaseSignaling {
|
|
@@ -85,7 +86,7 @@ export default class Signaling extends BaseSignaling {
|
|
|
85
86
|
sendSdp(participantId: ParticipantId, sdp: RTCSessionDescriptionInit, extraPayload?: Record<string, any>): Promise<SignalingMessage>;
|
|
86
87
|
acceptCall(mediaSettings: MediaSettings): Promise<SignalingMessage>;
|
|
87
88
|
changeMediaSettings(mediaSettings: MediaSettings): Promise<SignalingMessage>;
|
|
88
|
-
changeParticipantState(state:
|
|
89
|
+
changeParticipantState(state: ParticipantStateData, compositeUserId?: CompositeUserId): Promise<SignalingMessage>;
|
|
89
90
|
putHandsDown(): Promise<SignalingMessage>;
|
|
90
91
|
addParticipant(participantIds: CompositeUserId[], params?: AddParticipantParams): Promise<SignalingMessage>;
|
|
91
92
|
removeParticipant(participantId: CompositeUserId, ban?: boolean): Promise<SignalingMessage>;
|
|
@@ -132,6 +133,7 @@ export default class Signaling extends BaseSignaling {
|
|
|
132
133
|
updateMediaModifiers(mediaModifiers: MediaModifiers): Promise<SignalingMessage>;
|
|
133
134
|
enableVideoSuspend(enabled: boolean): Promise<SignalingMessage>;
|
|
134
135
|
enableVideoSuspendSuggest(enabled: boolean): Promise<SignalingMessage>;
|
|
136
|
+
changeSimulcast(changeSimulcast: ChangeSimulcast): Promise<SignalingMessage>;
|
|
135
137
|
changeOptions(changes: {
|
|
136
138
|
[key in ConversationOption]?: boolean;
|
|
137
139
|
}): Promise<SignalingMessage>;
|
|
@@ -55,6 +55,7 @@ declare enum SignalingCommandType {
|
|
|
55
55
|
GET_HAND_QUEUE = "get-hand-queue",
|
|
56
56
|
ENABLE_VIDEO_SUSPEND = "enable-video-suspend",
|
|
57
57
|
ENABLE_VIDEO_SUSPEND_SUGGEST = "enable-video-suspend-suggest",
|
|
58
|
-
PUT_HANDS_DOWN = "put-hands-down"
|
|
58
|
+
PUT_HANDS_DOWN = "put-hands-down",
|
|
59
|
+
CHANGE_SIMULCAST = "change-simulcast"
|
|
59
60
|
}
|
|
60
61
|
export default SignalingCommandType;
|
package/enums/Stat.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ declare const enum Stat {
|
|
|
7
7
|
ICE_RESTART = "callIceRestart",
|
|
8
8
|
PUSH = "callPush",
|
|
9
9
|
OUTGOING_CALL = "callStart",
|
|
10
|
+
CALL_FINISH = "call_finish",
|
|
10
11
|
OUTGOING_MULTIPARTY_CALL = "callStartMultiparty",
|
|
11
12
|
JOIN_CONVERSATION = "callJoinConversation",
|
|
12
13
|
ACCEPTED_OUTGOING = "callAcceptedOutgoing",
|
|
@@ -14,6 +15,7 @@ declare const enum Stat {
|
|
|
14
15
|
DECLINE_INCOMING = "callDeclineIncoming",
|
|
15
16
|
ACCEPT_CONCURRENT = "callAcceptConcurrent",
|
|
16
17
|
HANGUP = "callHangup",
|
|
18
|
+
CODEC_USAGE = "codec_usage",
|
|
17
19
|
MEDIA_STATUS = "callMediaStatus",
|
|
18
20
|
DEVICE_CHANGED = "callDeviceChanged",
|
|
19
21
|
SOCKET_ACTION = "callSocketAction",
|
|
@@ -35,6 +37,7 @@ declare const enum Stat {
|
|
|
35
37
|
FIRST_MEDIA_RECEIVED = "first_media_received",
|
|
36
38
|
CALL_EVENTUAL_STAT = "callEventualStat",
|
|
37
39
|
CALL_DECLINED_OR_HANGED_LOCALLY = "CallDeclinedOrHangedLocally",
|
|
38
|
-
USER_FEEDBACK_RECEIVED = "UserFeedbackReceived"
|
|
40
|
+
USER_FEEDBACK_RECEIVED = "UserFeedbackReceived",
|
|
41
|
+
CALL_START = "call_start"
|
|
39
42
|
}
|
|
40
43
|
export default Stat;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vkontakte/calls-sdk",
|
|
3
|
-
"version": "2.8.6-dev.
|
|
3
|
+
"version": "2.8.6-dev.97c05c29.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",
|
|
@@ -16,11 +16,14 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@vkontakte/calls-audio-effects": "1.2.8",
|
|
18
18
|
"@vkontakte/calls-video-effects": "2.2.3-beta.5",
|
|
19
|
-
"@vkontakte/calls-vmoji": "1.0.10-beta.
|
|
19
|
+
"@vkontakte/calls-vmoji": "1.0.10-beta.17",
|
|
20
20
|
"@vkontakte/libvpx": "2.0.9",
|
|
21
21
|
"bit-buffer": "0.2.5",
|
|
22
22
|
"messagepack": "1.1.12",
|
|
23
23
|
"simple-ebml-builder": "0.2.2",
|
|
24
24
|
"webrtc-adapter": "7.7.0"
|
|
25
|
-
}
|
|
25
|
+
},
|
|
26
|
+
"workspaces": [
|
|
27
|
+
"workspaces/sandbox"
|
|
28
|
+
]
|
|
26
29
|
}
|
package/static/Params.d.ts
CHANGED
|
@@ -843,6 +843,18 @@ export type ParamsObject = {
|
|
|
843
843
|
switchVideoAtBadNetwork: boolean;
|
|
844
844
|
/** включает деградацию фпс для видео с камеры при низком фпс с включенными вирт фонами */
|
|
845
845
|
enableVideoEffectsFpsDegradation: boolean;
|
|
846
|
+
/**
|
|
847
|
+
* Включить поддержку simulcast на отправке
|
|
848
|
+
*
|
|
849
|
+
* _По умолчанию: `false`_
|
|
850
|
+
*/
|
|
851
|
+
simulcast: boolean;
|
|
852
|
+
/**
|
|
853
|
+
* Не запрашивать conversation params при входе в звонок
|
|
854
|
+
*
|
|
855
|
+
* _По умолчанию: `false`_
|
|
856
|
+
*/
|
|
857
|
+
skipConversationParams?: boolean;
|
|
846
858
|
};
|
|
847
859
|
export default abstract class Params {
|
|
848
860
|
private static _params;
|
|
@@ -970,6 +982,9 @@ export default abstract class Params {
|
|
|
970
982
|
static getScreenFrameRate(fastScreenShare: boolean): number;
|
|
971
983
|
static get switchVideoAtBadNetwork(): boolean;
|
|
972
984
|
static get enableVideoEffectsFpsDegradation(): boolean;
|
|
985
|
+
static get simulcast(): boolean;
|
|
986
|
+
static set simulcast(value: boolean);
|
|
987
|
+
static get skipConversationParams(): boolean | undefined;
|
|
973
988
|
static toJSON(): {
|
|
974
989
|
apiKey: string;
|
|
975
990
|
apiEnv: string;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type SimulcastInfo as ISimulcastInfo } from '../types/SimulcastInfo';
|
|
2
|
+
import type { VideoBitrateSettings } from '../types/VideoSettings';
|
|
3
|
+
export declare const SIMULCAST_DEFAULT: {
|
|
4
|
+
HEIGHT: number;
|
|
5
|
+
WIDTH: number;
|
|
6
|
+
BITRATE: number;
|
|
7
|
+
};
|
|
8
|
+
export declare const SIMULCAST_SCALABILITY_MODE = "L1T2";
|
|
9
|
+
export declare const MAP_RID_TO_SCALE_RESOLUTION_DOWN_BY: Record<string, number>;
|
|
10
|
+
export declare function isEqualSimulcastInfo(si1: ISimulcastInfo | null, si2: ISimulcastInfo | null): boolean;
|
|
11
|
+
export declare function findBitrateAsc(maxDimension: number, bitrates: VideoBitrateSettings[]): number;
|
|
12
|
+
export declare function calculateSimulcastInfo(width?: number, height?: number, bitrates?: VideoBitrateSettings[]): ISimulcastInfo;
|
|
13
|
+
export declare function findScaleResolutionDownBy(rid: string): number;
|
package/static/Utils.d.ts
CHANGED
|
@@ -61,7 +61,7 @@ declare namespace Utils {
|
|
|
61
61
|
[key in T]?: K;
|
|
62
62
|
}, obj2: {
|
|
63
63
|
[key in T]?: K;
|
|
64
|
-
}): boolean;
|
|
64
|
+
}, deep?: boolean): boolean;
|
|
65
65
|
function isArraysEquals<T>(arr1: T[], arr2: T[]): boolean;
|
|
66
66
|
function isEmptyObject(obj: object): boolean;
|
|
67
67
|
/**
|
|
@@ -74,5 +74,6 @@ declare namespace Utils {
|
|
|
74
74
|
function objectReduce<R, T extends Object>(obj: T, callback: (acc: R, value: T[keyof T], key: keyof T) => R, initialValue: R): R;
|
|
75
75
|
const setImmediate: (fn: VoidFunction) => VoidFunction;
|
|
76
76
|
function isObject(obj: unknown): obj is object;
|
|
77
|
+
function patchSimulcastAnswerSdp(sdp: string, trans: RTCRtpTransceiver, width: number, height: number): string;
|
|
77
78
|
}
|
|
78
79
|
export default Utils;
|
package/static/WebRTCUtils.d.ts
CHANGED
|
@@ -127,6 +127,7 @@ declare namespace WebRTCUtils {
|
|
|
127
127
|
function isBrokenH264Decoder(): boolean;
|
|
128
128
|
/**
|
|
129
129
|
* В некоторых браузерах VP9 encoder сломан
|
|
130
|
+
* В симулкасте вп9 енкодер ведет себя некорректно
|
|
130
131
|
*/
|
|
131
132
|
function isBrokenVP9Encoder(): boolean;
|
|
132
133
|
/**
|
|
@@ -142,6 +143,10 @@ declare namespace WebRTCUtils {
|
|
|
142
143
|
* Может ли браузер делать H264 приоритетным
|
|
143
144
|
*/
|
|
144
145
|
function canPreferH264(): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Некоторые браузеры (Firefox, Safari) некорректно поддерживают симулкаст
|
|
148
|
+
*/
|
|
149
|
+
function isSimulcastSupportedByBrowser(): boolean;
|
|
145
150
|
/**
|
|
146
151
|
* Имя операционной системы
|
|
147
152
|
*/
|
|
@@ -10,6 +10,17 @@ type ConversationParams = {
|
|
|
10
10
|
isp_as_org?: string;
|
|
11
11
|
loc_cc?: string;
|
|
12
12
|
loc_reg?: string;
|
|
13
|
-
external_user_type
|
|
13
|
+
external_user_type?: string;
|
|
14
|
+
};
|
|
15
|
+
export type ExternalConversationParams = {
|
|
16
|
+
et: number;
|
|
17
|
+
iv: boolean;
|
|
18
|
+
srcp: string;
|
|
19
|
+
stne: string;
|
|
20
|
+
tkn: string;
|
|
21
|
+
trne: string;
|
|
22
|
+
trnp: string;
|
|
23
|
+
trnu: string;
|
|
24
|
+
wse: string;
|
|
14
25
|
};
|
|
15
26
|
export default ConversationParams;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import HangupType from '../enums/HangupType';
|
|
2
|
+
import IceServer from './IceServer';
|
|
2
3
|
/**
|
|
3
4
|
* Начальные данные создания звонка
|
|
4
5
|
* @hidden
|
|
@@ -27,5 +28,9 @@ type ConversationResponse = {
|
|
|
27
28
|
* Порядковый номер, присвоенный устройству при входе в звонок
|
|
28
29
|
*/
|
|
29
30
|
device_idx?: number;
|
|
31
|
+
turn_server?: IceServer;
|
|
32
|
+
stun_server?: IceServer;
|
|
33
|
+
client_type?: string;
|
|
34
|
+
token: string;
|
|
30
35
|
};
|
|
31
36
|
export default ConversationResponse;
|
package/types/Participant.d.ts
CHANGED
|
@@ -86,3 +86,12 @@ export interface Participant {
|
|
|
86
86
|
export interface IGetParticipantsParameters {
|
|
87
87
|
externalIds: ExternalId[];
|
|
88
88
|
}
|
|
89
|
+
export type ParticipantStateDataKey = 'hand' | 'drat';
|
|
90
|
+
export declare enum ParticipantStateDataValue {
|
|
91
|
+
OFF = "0",
|
|
92
|
+
ON = "1"
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Список состояний в виде ключ-значение. Максимальная длина ключей и значений - 5 символов. Пустые значения будут пропущены
|
|
96
|
+
*/
|
|
97
|
+
export type ParticipantStateData = Partial<Record<ParticipantStateDataKey, ParticipantStateDataValue>>;
|
package/types/Statistics.d.ts
CHANGED
|
@@ -24,46 +24,199 @@ export interface ILocalIceCandidateStat extends IRemoteIceCandidateStat {
|
|
|
24
24
|
relayProtocol: string;
|
|
25
25
|
networkType: RTCNetworkType;
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
interface StatRtpOutboundVideo {
|
|
28
|
+
frameHeight?: number;
|
|
29
|
+
frameWidth?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Идентификатор потока RTP (RID).
|
|
32
|
+
*
|
|
33
|
+
* Используется для идентификации различных потоков видео (например, simulcast) в сессиях WebRTC.
|
|
34
|
+
*/
|
|
35
|
+
rid?: string;
|
|
36
|
+
framesSent?: number;
|
|
37
|
+
framesPerSecond?: number;
|
|
38
|
+
targetBitrate?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface StatRtp extends StatRtpOutboundVideo {
|
|
41
|
+
/**
|
|
42
|
+
* Уникальный идентификатор источника синхронизации RTP
|
|
43
|
+
*/
|
|
28
44
|
ssrc: number;
|
|
45
|
+
/**
|
|
46
|
+
* Идентификатор медиалинии (MID)
|
|
47
|
+
*
|
|
48
|
+
* Используется для уникальной идентификации медиалинии в рамках WebRTC-сессии.
|
|
49
|
+
* MID помогает сопоставлять медиапотоки с их соответствующими трансиверами.
|
|
50
|
+
*/
|
|
51
|
+
mid?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Тип статистики (например, inbound-rtp, outbound-rtp)
|
|
54
|
+
*/
|
|
29
55
|
type: string;
|
|
56
|
+
/**
|
|
57
|
+
* Тип медиа (например, audio, video)
|
|
58
|
+
*/
|
|
30
59
|
kind: string;
|
|
60
|
+
/**
|
|
61
|
+
* Общее количество байтов, полученных по этому потоку
|
|
62
|
+
*/
|
|
31
63
|
bytesReceived: number;
|
|
64
|
+
/**
|
|
65
|
+
* Общее количество байтов, отправленных по этому потоку
|
|
66
|
+
*/
|
|
32
67
|
bytesSent: number;
|
|
68
|
+
/**
|
|
69
|
+
* Общее количество байтов заголовков, полученных по этому потоку
|
|
70
|
+
*/
|
|
33
71
|
headerBytesReceived: number;
|
|
72
|
+
/**
|
|
73
|
+
* Общее количество байтов заголовков, отправленных по этому потоку
|
|
74
|
+
*/
|
|
34
75
|
headerBytesSent: number;
|
|
76
|
+
/**
|
|
77
|
+
* Среднее значение джиттера в секундах
|
|
78
|
+
* Джиттер — это вариация задержки в получении пакетов данных.
|
|
79
|
+
*/
|
|
35
80
|
jitter: number;
|
|
81
|
+
/**
|
|
82
|
+
* Общее количество потерянных пакетов
|
|
83
|
+
*/
|
|
36
84
|
packetsLost: number;
|
|
85
|
+
/**
|
|
86
|
+
* Общее количество полученных пакетов
|
|
87
|
+
*/
|
|
37
88
|
packetsReceived: number;
|
|
89
|
+
/**
|
|
90
|
+
* Общее количество отправленных пакетов
|
|
91
|
+
*/
|
|
38
92
|
packetsSent: number;
|
|
93
|
+
/**
|
|
94
|
+
* Доля потерянных пакетов
|
|
95
|
+
*/
|
|
39
96
|
fractionLost: number;
|
|
97
|
+
/**
|
|
98
|
+
* Количество Picture Loss Indication (PLI) сообщений
|
|
99
|
+
* PLI — это сообщения, указывающие на потерю кадров изображения.
|
|
100
|
+
*/
|
|
40
101
|
pliCount: number;
|
|
102
|
+
/**
|
|
103
|
+
* Количество Full Intra Request (FIR) сообщений
|
|
104
|
+
* FIR — это запросы на отправку полного внутрикодированного кадра.
|
|
105
|
+
*/
|
|
41
106
|
firCount: number;
|
|
107
|
+
/**
|
|
108
|
+
* Количество Negative ACKnowledgement (NACK) сообщений
|
|
109
|
+
* NACK — это сообщения, указывающие на потерю пакетов данных.
|
|
110
|
+
*/
|
|
42
111
|
nackCount: number;
|
|
112
|
+
/**
|
|
113
|
+
* Идентификатор пользователя, связанный с этим потоком
|
|
114
|
+
*/
|
|
43
115
|
userId?: string;
|
|
116
|
+
/**
|
|
117
|
+
* Пропускная способность в битах в секунду
|
|
118
|
+
*/
|
|
44
119
|
bandwidth?: number;
|
|
120
|
+
/**
|
|
121
|
+
* Процент потерянных пакетов
|
|
122
|
+
*/
|
|
45
123
|
packetLoss?: number;
|
|
124
|
+
/**
|
|
125
|
+
* Частота дискретизации в герцах
|
|
126
|
+
* Частота дискретизации определяет качество звука.
|
|
127
|
+
*/
|
|
46
128
|
clockRate?: number;
|
|
129
|
+
/**
|
|
130
|
+
* Название кодека
|
|
131
|
+
* @example audio/opus, video/vp8
|
|
132
|
+
*/
|
|
47
133
|
mimeType?: string;
|
|
48
|
-
|
|
49
|
-
|
|
134
|
+
/**
|
|
135
|
+
* Библиотека, которая используется для кодека
|
|
136
|
+
*/
|
|
137
|
+
encoderImplementation?: string;
|
|
138
|
+
/**
|
|
139
|
+
* Библиотека, которая используется для декодера
|
|
140
|
+
*/
|
|
141
|
+
decoderImplementation?: string;
|
|
142
|
+
/**
|
|
143
|
+
* Параметры кодека, есть только у audio кодеков
|
|
144
|
+
*/
|
|
145
|
+
sdpFmtpLine?: string;
|
|
146
|
+
/**
|
|
147
|
+
* Общее количество декодированных кадров
|
|
148
|
+
*/
|
|
50
149
|
framesDecoded?: number;
|
|
150
|
+
/**
|
|
151
|
+
* Общее количество полученных кадров
|
|
152
|
+
*/
|
|
51
153
|
framesReceived?: number;
|
|
154
|
+
/**
|
|
155
|
+
* Общее количество отброшенных кадров
|
|
156
|
+
*/
|
|
52
157
|
framesDropped?: number;
|
|
158
|
+
/**
|
|
159
|
+
* Изменение количества отброшенных кадров
|
|
160
|
+
*/
|
|
53
161
|
framesDroppedDelta?: number;
|
|
162
|
+
/**
|
|
163
|
+
* Изменение задержки между кадрами
|
|
164
|
+
*/
|
|
54
165
|
interframeDelayVariance?: number;
|
|
166
|
+
/**
|
|
167
|
+
* Общее количество полученных аудиосэмплов
|
|
168
|
+
*/
|
|
55
169
|
totalSamplesReceived?: number;
|
|
170
|
+
/**
|
|
171
|
+
* Общее время кодирования видео в секундах.
|
|
172
|
+
*
|
|
173
|
+
* Показывает, сколько времени было потрачено на кодирование видео кадров.
|
|
174
|
+
* Не применяется для аудио.
|
|
175
|
+
*/
|
|
176
|
+
totalEncodeTime?: number;
|
|
177
|
+
/**
|
|
178
|
+
* Общее количество замаскированных сэмплов
|
|
179
|
+
*/
|
|
56
180
|
concealedSamples?: number;
|
|
181
|
+
/**
|
|
182
|
+
* Количество вставленных сэмплов для замедления
|
|
183
|
+
*/
|
|
57
184
|
insertedSamplesForDeceleration?: number;
|
|
185
|
+
/**
|
|
186
|
+
* Количество удаленных сэмплов для ускорения
|
|
187
|
+
*/
|
|
58
188
|
removedSamplesForAcceleration?: number;
|
|
189
|
+
/**
|
|
190
|
+
* Количество замаскированных беззвучных сэмплов
|
|
191
|
+
*/
|
|
59
192
|
silentConcealedSamples?: number;
|
|
193
|
+
/**
|
|
194
|
+
* Количество событий маскировки
|
|
195
|
+
*/
|
|
60
196
|
concealmentEvents?: number;
|
|
197
|
+
/**
|
|
198
|
+
* Общее количество аудиоэнергии
|
|
199
|
+
* Аудиоэнергия — это мера мощности аудиосигнала.
|
|
200
|
+
*/
|
|
61
201
|
totalAudioEnergy?: number;
|
|
202
|
+
/**
|
|
203
|
+
* Общее время замерзания в секундах
|
|
204
|
+
*/
|
|
62
205
|
totalFreezesDuration: number;
|
|
206
|
+
/**
|
|
207
|
+
* Изменение общего времени замерзания
|
|
208
|
+
* Время замерзания — это период, в течение которого поток временно останавливается.
|
|
209
|
+
*/
|
|
63
210
|
totalFreezesDurationDelta?: number;
|
|
211
|
+
/**
|
|
212
|
+
* Количество событий замерзания
|
|
213
|
+
*/
|
|
64
214
|
freezeCount: number;
|
|
215
|
+
/**
|
|
216
|
+
* Изменение количества событий замерзания
|
|
217
|
+
*/
|
|
65
218
|
freezeCountDelta?: number;
|
|
66
|
-
}
|
|
219
|
+
}
|
|
67
220
|
export type StatItem = {
|
|
68
221
|
timestamp: number;
|
|
69
222
|
transport: StatTransport;
|
|
@@ -87,3 +240,4 @@ export type StatResult = {
|
|
|
87
240
|
rtps: StatRtp[];
|
|
88
241
|
};
|
|
89
242
|
};
|
|
243
|
+
export {};
|
package/types/VideoSettings.d.ts
CHANGED
|
@@ -25,6 +25,10 @@ export type VideoSettings = {
|
|
|
25
25
|
* https://www.w3.org/TR/webrtc-svc/
|
|
26
26
|
*/
|
|
27
27
|
scalabilityMode: string;
|
|
28
|
+
/**
|
|
29
|
+
* Таблица с битрейтами в зависимости от разрешения
|
|
30
|
+
*/
|
|
31
|
+
bitrates?: Record<'generic' | string, VideoBitrateSettings[]>;
|
|
28
32
|
};
|
|
29
33
|
export default VideoSettings;
|
|
30
34
|
export declare function compareVideoSettings(vs1: VideoSettings | null, vs2: VideoSettings | null): boolean;
|
|
@@ -38,3 +42,11 @@ export declare enum VideoScalability {
|
|
|
38
42
|
L1T2 = "L1T2",
|
|
39
43
|
L1T3 = "L1T3"
|
|
40
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Настройка битрейта под конкретное разрешение
|
|
47
|
+
* @hidden
|
|
48
|
+
*/
|
|
49
|
+
export type VideoBitrateSettings = {
|
|
50
|
+
dimension: number;
|
|
51
|
+
bitrate: number;
|
|
52
|
+
};
|
package/utils/Lz4.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function lz4Decompress(input: Uint8Array, outputLength: number): Uint8Array;
|