@vkontakte/calls-sdk 2.6.2-beta.27 → 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/abstract/BaseSignaling.d.ts +2 -0
- package/calls-sdk.cjs.js +8 -8
- package/calls-sdk.esm.js +8 -8
- package/classes/ProducerCommandSerializationService.d.ts +2 -0
- package/classes/codec/IEncoder.d.ts +1 -1
- package/classes/codec/LibVPxEncoder.d.ts +1 -1
- package/classes/codec/Types.d.ts +1 -1
- package/classes/codec/WebCodecsEncoder.d.ts +1 -1
- package/classes/screenshare/PacketHistory.d.ts +30 -0
- package/classes/screenshare/PacketHistory.test.d.ts +1 -0
- package/classes/screenshare/ScreenCaptureSender.d.ts +8 -1
- package/classes/screenshare/ScreenCongestionControl.d.ts +15 -6
- package/classes/screenshare/SharingStatReport.d.ts +6 -0
- package/classes/screenshare/Utils.d.ts +5 -0
- package/default/Signaling.d.ts +2 -0
- package/enums/LiveStatus.d.ts +7 -0
- package/enums/SignalingCommandType.d.ts +1 -0
- package/package.json +1 -1
- package/static/Polyfills.d.ts +6 -0
- package/types/MovieShare.d.ts +4 -1
|
@@ -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;
|
|
@@ -29,7 +29,7 @@ export default class LibVPxEncoder extends WorkerBase implements IEncoder {
|
|
|
29
29
|
private _requestFrameVideo;
|
|
30
30
|
private _requestFrameBitmap;
|
|
31
31
|
requestFrame(keyFrame?: boolean): void;
|
|
32
|
-
setBitrate(bitrate: number): void;
|
|
32
|
+
setBitrate(bitrate: number, useCbr?: boolean): void;
|
|
33
33
|
isVP9(): boolean;
|
|
34
34
|
destroy(): void;
|
|
35
35
|
static isBrowserSupported(): boolean;
|
package/classes/codec/Types.d.ts
CHANGED
|
@@ -16,4 +16,4 @@ export declare type EncodedVideoFrame = Pick<EncodedVideoChunk, 'type' | 'timest
|
|
|
16
16
|
height: number;
|
|
17
17
|
};
|
|
18
18
|
export declare type OnFrameCallback = (chunk: EncodedVideoFrame | null, error?: string) => void;
|
|
19
|
-
export declare type OnCongestionCallback = (bitrate: number) => void;
|
|
19
|
+
export declare type OnCongestionCallback = (bitrate: number, useCbr: boolean) => void;
|
|
@@ -10,7 +10,7 @@ export default class WebCodecsEncoder extends WorkerBase implements IEncoder {
|
|
|
10
10
|
constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number);
|
|
11
11
|
init(): Promise<void>;
|
|
12
12
|
requestFrame(keyFrame?: boolean): void;
|
|
13
|
-
setBitrate(bitrate: number): void;
|
|
13
|
+
setBitrate(bitrate: number, useCbr: boolean): void;
|
|
14
14
|
isVP9(): boolean;
|
|
15
15
|
destroy(): void;
|
|
16
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,6 +1,8 @@
|
|
|
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;
|
|
@@ -8,7 +10,10 @@ export default class ScreenCaptureSender {
|
|
|
8
10
|
private _frameNum;
|
|
9
11
|
private _width;
|
|
10
12
|
private _height;
|
|
11
|
-
|
|
13
|
+
private _feedback;
|
|
14
|
+
private _lastSharingStat;
|
|
15
|
+
private _congestionControlEnabled;
|
|
16
|
+
constructor(track: MediaStreamTrack, datachannel: RTCDataChannel, signaling: BaseSignaling);
|
|
12
17
|
private _requestFrame;
|
|
13
18
|
private _wrapHeader;
|
|
14
19
|
private _stopPacket;
|
|
@@ -19,4 +24,6 @@ export default class ScreenCaptureSender {
|
|
|
19
24
|
private _onCongestionCallback;
|
|
20
25
|
private _onResize;
|
|
21
26
|
private _calcMinMaxBitrate;
|
|
27
|
+
private _checkCcFeedback;
|
|
28
|
+
private _sendSharingStat;
|
|
22
29
|
}
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
import { OnCongestionCallback } from '../codec/Types';
|
|
2
|
+
import { SharingStatReport } from './SharingStatReport';
|
|
2
3
|
export default class ScreenCongestionControl {
|
|
3
|
-
private
|
|
4
|
-
private
|
|
4
|
+
private readonly _onCongestion;
|
|
5
|
+
private readonly _ccEnabled;
|
|
5
6
|
private _minBitrate;
|
|
6
7
|
private _maxBitrate;
|
|
7
8
|
private _targetBitrate;
|
|
8
9
|
private _lastDown;
|
|
9
10
|
private _lastUp;
|
|
10
|
-
private
|
|
11
|
-
private
|
|
11
|
+
private _lastProbing;
|
|
12
|
+
private _lastCheckDelay;
|
|
12
13
|
private _upPenalty;
|
|
13
|
-
|
|
14
|
-
|
|
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;
|
|
15
23
|
reconfigure(minBitrate: number, maxBitrate: number): void;
|
|
24
|
+
getStat(): SharingStatReport;
|
|
16
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;
|
|
@@ -112,6 +113,7 @@ export default class Signaling extends BaseSignaling {
|
|
|
112
113
|
switchTopology(topology: TransportTopology, force?: boolean): Promise<SignalingMessage>;
|
|
113
114
|
requestRealloc(): Promise<SignalingMessage>;
|
|
114
115
|
reportPerfStat(report: PerfStatReport): Promise<SignalingMessage>;
|
|
116
|
+
reportSharingStat(report: SharingStatReport): Promise<SignalingMessage>;
|
|
115
117
|
chatMessage(message: string, participantId?: CompositeUserId | null): Promise<SignalingMessage>;
|
|
116
118
|
chatHistory(count: number): Promise<SignalingMessage>;
|
|
117
119
|
customData(data: JSONObject, participantId: ParticipantId | null): Promise<SignalingMessage>;
|
|
@@ -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",
|
package/package.json
CHANGED
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;
|