@vkontakte/calls-sdk 2.8.11-beta.2 → 2.8.11-beta.4

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.
Files changed (67) hide show
  1. package/CallsSDK.d.ts +43 -13
  2. package/abstract/BaseApi.d.ts +2 -3
  3. package/abstract/BaseSignaling.d.ts +2 -3
  4. package/calls-sdk.cjs.js +11 -11
  5. package/calls-sdk.esm.js +7883 -7361
  6. package/classes/AudioFix.d.ts +5 -1
  7. package/classes/AudioOutput.d.ts +5 -1
  8. package/classes/Conversation.d.ts +7 -2
  9. package/classes/ConversationResponseValidator.d.ts +3 -0
  10. package/classes/DebugInfo.d.ts +3 -0
  11. package/classes/DisplayLayoutRequester.d.ts +39 -0
  12. package/classes/ExternalIdCache.d.ts +19 -0
  13. package/classes/MediaSource.d.ts +5 -1
  14. package/classes/ParticipantIdRegistry.d.ts +3 -0
  15. package/classes/ProducerCommandSerializationService.d.ts +3 -0
  16. package/classes/SignalingActor.d.ts +3 -1
  17. package/classes/SpeakerDetector.d.ts +2 -1
  18. package/classes/SpecListener.d.ts +5 -1
  19. package/classes/{Logger.d.ts → StatsLogger.d.ts} +3 -10
  20. package/classes/VideoEffectsFpsLimiter.d.ts +3 -0
  21. package/classes/asr/AsrReceiver.d.ts +3 -1
  22. package/classes/codec/LibVPxDecoder.d.ts +3 -0
  23. package/classes/codec/LibVPxEncoder.d.ts +3 -1
  24. package/classes/codec/WebCodecsDecoder.d.ts +3 -0
  25. package/classes/codec/WebCodecsEncoder.d.ts +3 -1
  26. package/classes/codec/WorkerBase.d.ts +5 -0
  27. package/classes/screenshare/BaseStreamBuilder.d.ts +4 -1
  28. package/classes/screenshare/CanvasRenderer.d.ts +3 -1
  29. package/classes/screenshare/ScreenCaptureReceiver.d.ts +7 -1
  30. package/classes/screenshare/ScreenCaptureSender.d.ts +5 -1
  31. package/classes/screenshare/ScreenCongestionControl.d.ts +3 -1
  32. package/classes/screenshare/StreamBuilder.d.ts +5 -1
  33. package/classes/screenshare/TrackGeneratorRenderer.d.ts +3 -1
  34. package/classes/screenshare/WebmBuilder.d.ts +3 -1
  35. package/classes/stat/CodecStatsAggregator.d.ts +7 -7
  36. package/classes/stat/ConversationStats.d.ts +21 -0
  37. package/classes/stat/StatAggregator.d.ts +6 -6
  38. package/classes/stat/StatFirstMediaReceived.d.ts +6 -2
  39. package/classes/stat/StatPings.d.ts +9 -9
  40. package/classes/stat/StatScreenShareFirstFrame.d.ts +3 -1
  41. package/classes/stat/StatSignalingCommands.d.ts +8 -8
  42. package/classes/transport/BaseTransport.d.ts +1 -1
  43. package/classes/transport/DirectStatReporter.d.ts +3 -1
  44. package/classes/transport/DirectTransport.d.ts +9 -1
  45. package/classes/transport/PerfStatReporter.d.ts +5 -1
  46. package/classes/transport/ServerTransport.d.ts +10 -2
  47. package/classes/transport/Transport.d.ts +11 -14
  48. package/default/Api.d.ts +3 -11
  49. package/default/Signaling.d.ts +39 -45
  50. package/default/SignalingTransport.d.ts +68 -0
  51. package/enums/TransportState.d.ts +10 -0
  52. package/enums/TransportTopology.d.ts +5 -0
  53. package/package.json +1 -1
  54. package/static/Debug.d.ts +27 -8
  55. package/static/External.d.ts +3 -0
  56. package/static/Params.d.ts +14 -0
  57. package/static/Utils.d.ts +3 -2
  58. package/static/WebRTCUtils.d.ts +6 -4
  59. package/types/Conversation.d.ts +1 -1
  60. package/types/FastStart.d.ts +1 -0
  61. package/types/ParticipantLayout.d.ts +33 -0
  62. package/types/SignalingMessage.d.ts +1 -1
  63. package/types/Statistics.d.ts +1 -1
  64. package/types/WebTransport.d.ts +4 -0
  65. package/utils/DebugStorage.d.ts +100 -1
  66. package/classes/stat/EventMetricsService.d.ts +0 -9
  67. package/static/ConversationDebugLogger.d.ts +0 -13
@@ -1,3 +1,5 @@
1
+ import { type DebugLogger } from '../static/Debug';
2
+ import StatsLogger from './StatsLogger';
1
3
  import { MediaSource } from './MediaSource';
2
4
  export default class AudioFix {
3
5
  private _fixNoPacketsApplied;
@@ -7,11 +9,13 @@ export default class AudioFix {
7
9
  private _fixTooManyPacketsFailed;
8
10
  private _fixTooManyPacketsTime;
9
11
  private _mediaSource;
12
+ private readonly _debug;
13
+ private readonly _logger;
10
14
  private _lastPacketsSent;
11
15
  private _lastPacketsSentTime;
12
16
  private _toggleAudioPromise;
13
17
  private _fixNoPacketsAppliedVideo;
14
- constructor(mediaSource: MediaSource);
18
+ constructor(mediaSource: MediaSource, debug?: DebugLogger, logger?: StatsLogger | null);
15
19
  private _fixAudioDeviceNoPackets;
16
20
  private _fixAudioDeviceTooManyPackets;
17
21
  fix(rtps: any[]): void;
@@ -1,4 +1,6 @@
1
+ import { type DebugLogger } from '../static/Debug';
1
2
  import { ParticipantId } from '../types/Participant';
3
+ import StatsLogger from './StatsLogger';
2
4
  import { StatFirstMediaReceived } from './stat/StatFirstMediaReceived';
3
5
  /**
4
6
  * Единый AudioOutput поддерживающий p2p, audioMix и transparent-audio
@@ -10,7 +12,9 @@ export default class AudioOutput {
10
12
  private _volume;
11
13
  private readonly _features;
12
14
  private readonly _statFirstMediaReceived;
13
- constructor(statFirstMediaReceived: StatFirstMediaReceived, allowMultipleTracks?: boolean);
15
+ protected readonly _debug: DebugLogger;
16
+ private readonly _logger;
17
+ constructor(statFirstMediaReceived: StatFirstMediaReceived, allowMultipleTracks?: boolean, debug?: DebugLogger, logger?: StatsLogger | null);
14
18
  add(participantId: ParticipantId, track: MediaStreamTrack): void;
15
19
  remove(participantId: ParticipantId, track: MediaStreamTrack): void;
16
20
  get volume(): number;
@@ -20,7 +20,7 @@ import { IVideoDimentions } from '../types/MediaSettings';
20
20
  import { IAddMovieParams, IUpdateMovieData } from '../types/MovieShare';
21
21
  import MuteStates from '../types/MuteStates';
22
22
  import { CompositeUserId, IGetParticipantsParameters, ParticipantId, ParticipantStateData } from '../types/Participant';
23
- import { ParticipantLayout } from '../types/ParticipantLayout';
23
+ import { DisplayLayoutRequest, ParticipantLayout } from '../types/ParticipantLayout';
24
24
  import { ParticipantListChunkParameters } from '../types/ParticipantListChunk';
25
25
  import ParticipantPriority from '../types/ParticipantPriority';
26
26
  import { ParticipantStreamDescription } from '../types/ParticipantStreamDescription';
@@ -32,6 +32,7 @@ export default class Conversation extends EventEmitter {
32
32
  private readonly _api;
33
33
  private readonly _signaling;
34
34
  private readonly _signalingActor;
35
+ private readonly _displayLayoutRequester;
35
36
  private _mediaSource;
36
37
  private _conversation;
37
38
  private _myLastRequestedLayouts;
@@ -41,6 +42,7 @@ export default class Conversation extends EventEmitter {
41
42
  private _pendingParticipants;
42
43
  private _transport;
43
44
  private _debugInfo;
45
+ private readonly _debug;
44
46
  private _volumesDetector;
45
47
  private _speakerDetector;
46
48
  private _localVolumeDetector;
@@ -56,6 +58,7 @@ export default class Conversation extends EventEmitter {
56
58
  private static _abortController;
57
59
  private readonly _onUnload;
58
60
  private readonly _audioOutput;
61
+ private readonly _stats;
59
62
  private _lastStalled;
60
63
  private _audioMixStalled;
61
64
  private _audioFix;
@@ -70,7 +73,9 @@ export default class Conversation extends EventEmitter {
70
73
  static current(): Conversation | null;
71
74
  static hangupAfterInit(): void;
72
75
  static id(): string | null;
76
+ static debugSessionId(): string | null;
73
77
  static getSyncedTime(): number;
78
+ get debugSessionId(): string | null;
74
79
  onStart({ opponentIds, opponentType, mediaOptions, payload, joiningAllowed, requireAuthToJoin, onlyAdminCanShareMovie, externalIds, onFastStart, conversationId, }: ConversationOnStartParams): Promise<ConversationData>;
75
80
  onJoin(joinArgs: {
76
81
  conversationId?: string;
@@ -206,6 +211,7 @@ export default class Conversation extends EventEmitter {
206
211
  requestKeyFrame(participantStreamDescription: ParticipantStreamDescription): Promise<void | SignalingMessage>;
207
212
  requestTestMode(consumerCommand: string, producerCommand: string): Promise<void>;
208
213
  updateDisplayLayout(layouts: ParticipantLayout[]): Promise<void>;
214
+ requestDisplayLayout(requests: DisplayLayoutRequest[]): Promise<void>;
209
215
  feedback(key: string): Promise<SignalingMessage>;
210
216
  userFeedbackStats(userResponse: number, reason?: string, groupCallUsersCount?: number): void;
211
217
  sendClientEvent(eventType: string, eventData?: Record<string, string | number | boolean>, immediately?: boolean): void;
@@ -281,7 +287,6 @@ export default class Conversation extends EventEmitter {
281
287
  startStream(isRecord?: boolean, name?: string | null, movieId?: string | null, privacy?: 'PUBLIC' | 'FRIENDS' | 'DIRECT_LINK', groupId?: string | null, roomId?: number | null): Promise<undefined>;
282
288
  stopStream(roomId?: number | null, remove?: boolean): Promise<undefined>;
283
289
  publishStream(roomId?: number | null): Promise<undefined>;
284
- recordSetConf(king?: ParticipantId, pawns?: ParticipantId[], hideParticipantCount?: boolean, roomId?: number | null): Promise<void>;
285
290
  getStreamInfo(): Promise<{
286
291
  movieId: any;
287
292
  preview: any;
@@ -0,0 +1,3 @@
1
+ import ConversationResponse from '../types/ConversationResponse';
2
+ export type ConversationResponseSource = 'startConversation' | 'joinConversation' | 'joinConversationByLink' | 'fastStart' | 'fastJoin';
3
+ export declare function assertValidConversationResponse(response: ConversationResponse | null | undefined, source: ConversationResponseSource): void;
@@ -1,8 +1,11 @@
1
+ import { type DebugLogger } from '../static/Debug';
1
2
  import { Participant, ParticipantId } from '../types/Participant';
2
3
  import { StatResult } from '../types/Statistics';
3
4
  import EventEmitter from './EventEmitter';
4
5
  export default class DebugInfo extends EventEmitter {
5
6
  private _lastMemoryStat;
7
+ private readonly _debug;
8
+ constructor(debug?: DebugLogger);
6
9
  onRemoteDataStats(stats: StatResult, participants: Record<ParticipantId, Participant>): void;
7
10
  _calcMemory(): void;
8
11
  }
@@ -0,0 +1,39 @@
1
+ import BaseApi from '../abstract/BaseApi';
2
+ import type { DebugLogger } from '../static/Debug';
3
+ import { DisplayLayoutRequest, ParticipantLayout } from '../types/ParticipantLayout';
4
+ import { Participant, ParticipantId } from '../types/Participant';
5
+ type DisplayLayoutRequesterParams = {
6
+ api: BaseApi;
7
+ debug: DebugLogger;
8
+ getParticipants: () => Promise<Record<ParticipantId, Participant>>;
9
+ isMe: (participantId: ParticipantId) => boolean;
10
+ updateDisplayLayout: (layouts: ParticipantLayout[]) => Promise<void>;
11
+ };
12
+ export default class DisplayLayoutRequester {
13
+ private readonly _api;
14
+ private readonly _debug;
15
+ private readonly _getParticipants;
16
+ private readonly _isMe;
17
+ private readonly _updateDisplayLayout;
18
+ private _requestedLayouts;
19
+ private _uncertainLayouts;
20
+ private _pendingRequests;
21
+ private _pendingPromises;
22
+ private _lastRequests;
23
+ private _timer;
24
+ private _inFlight;
25
+ private _lastFlushAt;
26
+ private _generation;
27
+ private _forceNextFlush;
28
+ constructor({ api, debug, getParticipants, isMe, updateDisplayLayout }: DisplayLayoutRequesterParams);
29
+ request(requests: DisplayLayoutRequest[]): Promise<void>;
30
+ resend(): void;
31
+ cleanupParticipant(participantId: ParticipantId): void;
32
+ clear(): void;
33
+ private _schedule;
34
+ private _flush;
35
+ private _getRequestLayouts;
36
+ private _getDiff;
37
+ private _isChanged;
38
+ }
39
+ export {};
@@ -0,0 +1,19 @@
1
+ import { ExternalId, ExternalParticipantId } from '../types/ExternalId';
2
+ import { CompositeUserId, OkUserId, ParticipantId } from '../types/Participant';
3
+ export declare class ExternalIdCache {
4
+ private _okIdToExternalId;
5
+ private _externalIdToOkId;
6
+ private _decorativeIdToInitialId;
7
+ private _initialIdToDecorativeId;
8
+ getOkId(externalId: ExternalId): OkUserId | null;
9
+ getExternalId(okId: OkUserId): ExternalParticipantId | null;
10
+ hasByExternalId(externalId: ExternalId): boolean;
11
+ hasByOkId(okId: OkUserId): boolean;
12
+ cache(participantId: OkUserId | CompositeUserId | ParticipantId, externalId: ExternalParticipantId): void;
13
+ mapDecorativeId(decorativeId: OkUserId | CompositeUserId | ParticipantId, initialId: OkUserId | CompositeUserId | ParticipantId): void;
14
+ unmapDecorativeId(initialId: OkUserId | CompositeUserId | ParticipantId): void;
15
+ getDecorativeIdByInitialId(initialId: OkUserId | CompositeUserId | ParticipantId): OkUserId | undefined;
16
+ replaceByInitialIdIdIfExists(id: OkUserId | CompositeUserId | ParticipantId): OkUserId;
17
+ getParticipantIdByExternalId(externalId: ExternalId): ParticipantId | null;
18
+ clear(): void;
19
+ }
@@ -1,8 +1,10 @@
1
1
  import type { IEffect } from '@vkontakte/calls-video-effects';
2
2
  import EventEmitter from '../classes/EventEmitter';
3
3
  import MediaOption from '../enums/MediaOption';
4
+ import { type DebugLogger } from '../static/Debug';
4
5
  import MediaSettings, { IVideoDimentions } from '../types/MediaSettings';
5
6
  import { ScreenCaptureSettings } from '../types/ScreenCaptureSettings';
7
+ import StatsLogger from './StatsLogger';
6
8
  export declare const enum MediaSourceEvent {
7
9
  SOURCE_CHANGED = "SOURCE_CHANGED",
8
10
  SOURCE_READY = "SOURCE_READY",
@@ -53,7 +55,9 @@ export declare class MediaSource extends EventEmitter {
53
55
  private _animojiEnabled;
54
56
  /** вычисляем низкую производительность видео эффектов */
55
57
  private readonly _videoEffectsFpsLimiter?;
56
- constructor();
58
+ private readonly _debug;
59
+ private readonly _logger;
60
+ constructor(debug?: DebugLogger, logger?: StatsLogger | null);
57
61
  get cameraVideoTrack(): MediaStreamTrack | null;
58
62
  set cameraVideoTrack(track: MediaStreamTrack | null);
59
63
  request(mediaOptions?: MediaOption[], needEmptyTracks?: boolean): Promise<void>;
@@ -1,8 +1,11 @@
1
+ import { type DebugLogger } from '../static/Debug';
1
2
  import { ParticipantStreamDescription } from '../types/ParticipantStreamDescription';
2
3
  import SignalingMessage from '../types/SignalingMessage';
3
4
  export declare class ParticipantIdRegistry {
4
5
  private streamDescriptionByCompactId;
5
6
  private compactIdByStreamDescription;
7
+ private readonly _debug;
8
+ constructor(debug?: DebugLogger);
6
9
  getStreamDescription(compactedId: number): ParticipantStreamDescription | undefined;
7
10
  getCompactId(streamDescription: string): number | undefined;
8
11
  handleMessage(data: ArrayBuffer): SignalingMessage | null;
@@ -1,3 +1,4 @@
1
+ import { type DebugLogger } from '../static/Debug';
1
2
  import { NetworkStatReport } from '../types/NetworkStatReport';
2
3
  import ParticipantLayout, { RequestKeyFrame, StopStream } from '../types/ParticipantLayout';
3
4
  import { RequestAsr } from '../types/RequestAsr';
@@ -10,6 +11,8 @@ import { SharingStatReport } from './screenshare/SharingStatReport';
10
11
  import { ParticipantIdRegistry } from './ParticipantIdRegistry';
11
12
  export declare class ProducerCommandSerializationService {
12
13
  private participantIdRegistry;
14
+ private readonly _debug;
15
+ constructor(debug?: DebugLogger);
13
16
  setParticipantIdRegistry(participantIdRegistry: ParticipantIdRegistry): void;
14
17
  serializeUpdateDisplayLayout(sequenceNumber: number, layouts: {
15
18
  [key: string]: ParticipantLayout | StopStream | RequestKeyFrame;
@@ -1,9 +1,11 @@
1
+ import { type DebugLogger } from '../static/Debug';
1
2
  import SignalingMessage from '../types/SignalingMessage';
2
3
  export declare class SignalingActor {
3
4
  private processor;
4
5
  private queue;
5
6
  private isProcessing;
6
- constructor(processor: (message: SignalingMessage) => Promise<unknown> | unknown);
7
+ private readonly _debug;
8
+ constructor(processor: (message: SignalingMessage) => Promise<unknown> | unknown, debug?: DebugLogger);
7
9
  add(message: SignalingMessage): void;
8
10
  private processQueue;
9
11
  }
@@ -1,6 +1,7 @@
1
1
  import { ParticipantId } from '../types/Participant';
2
2
  import EventEmitter from './EventEmitter';
3
- import { Transport, TransportTopology } from './transport/Transport';
3
+ import TransportTopology from '../enums/TransportTopology';
4
+ import { Transport } from './transport/Transport';
4
5
  import { VolumeLevel } from './VolumeDetector';
5
6
  import { VolumesDetector } from './VolumesDetector';
6
7
  export declare const enum SpeakerDetectorEvent {
@@ -1,15 +1,19 @@
1
+ import { type DebugLogger } from '../static/Debug';
1
2
  import MediaSettings from '../types/MediaSettings';
2
3
  import { Participant, ParticipantId } from '../types/Participant';
3
4
  import EventEmitter from './EventEmitter';
5
+ import StatsLogger from './StatsLogger';
4
6
  import { Transport } from './transport/Transport';
5
7
  import { VolumesDetector } from './VolumesDetector';
6
8
  export default class SpecListener extends EventEmitter {
7
9
  private _transport;
8
10
  private _volumes;
9
11
  private readonly _participants;
12
+ private readonly _debug;
13
+ private readonly _logger;
10
14
  private _connectionTimeout;
11
15
  private _volumeTimeout;
12
- constructor(transport: Transport, volumesDetector: VolumesDetector, participants: Record<ParticipantId, Participant>);
16
+ constructor(transport: Transport, volumesDetector: VolumesDetector, participants: Record<ParticipantId, Participant>, debug?: DebugLogger, logger?: StatsLogger | null);
13
17
  destroy(): void;
14
18
  onChangeRemoteMediaSettings(participantId: ParticipantId, mediaSettings: MediaSettings): void;
15
19
  private _onTransportStateChanged;
@@ -4,23 +4,16 @@ import StatLog from '../enums/StatLog';
4
4
  /**
5
5
  * Класс отвечает за отправку различной информации в сервис статистики (события, статистика и подобное)
6
6
  */
7
- export default class Logger extends BaseLogger {
8
- private static _instance;
9
- private static _conversationIdProvider;
10
- static setConversationIdProvider(provider: () => string | null): void;
11
- static create(api: BaseApi, externalLogger: BaseLogger | null): void;
12
- static log(name: StatLog, value?: string, immediately?: boolean): void;
13
- static logClientStats(params: Record<string, string | number | boolean | undefined | null>, immediately?: boolean): void;
14
- static logClientEvent(params: Record<string, string | number | boolean | undefined | null>, immediately?: boolean): void;
15
- static destroy(): void;
7
+ export default class StatsLogger extends BaseLogger {
16
8
  private readonly _externalLogger;
17
9
  private readonly _api;
10
+ private readonly _conversationIdProvider;
18
11
  private readonly _batchInterval;
19
12
  private _batchedClientStats;
20
13
  private _batchedClientEvents;
21
14
  private _batchTimeout;
22
15
  private _serverTimeDelta;
23
- constructor(api: BaseApi, externalLogger: BaseLogger | null);
16
+ constructor(api: BaseApi, externalLogger: BaseLogger | null, conversationIdProvider: () => string | null);
24
17
  log(name: StatLog, value?: string, immediately?: boolean): void;
25
18
  logClientStats(data: Record<string, string | number | boolean | undefined | null>, immediately?: boolean): void;
26
19
  logClientEvent(data: Record<string, string | number | boolean | undefined | null>, immediately?: boolean): void;
@@ -1,4 +1,5 @@
1
1
  import type { VideoEffects } from '@vkontakte/calls-video-effects';
2
+ import { type DebugLogger } from '../static/Debug';
2
3
  import EventEmitter from './EventEmitter';
3
4
  export declare enum VideoEffectsFpsLimiterEvent {
4
5
  FpsLimit = "fps-limit"
@@ -10,6 +11,8 @@ export declare class VideoEffectsFpsLimiter extends EventEmitter {
10
11
  private _fpsMeterUnsubscribe;
11
12
  private readonly _fpsHistory;
12
13
  private _fpsLimitCursor;
14
+ private readonly _debug;
15
+ constructor(debug?: DebugLogger);
13
16
  get fpsLimit(): number;
14
17
  watch(videoEffect: VideoEffects | null): void;
15
18
  private _handleFpsMeter;
@@ -1,3 +1,4 @@
1
+ import { type DebugLogger } from '../../static/Debug';
1
2
  import { AsrTranscription } from '../../types/Asr';
2
3
  import { ParticipantIdRegistry } from '../ParticipantIdRegistry';
3
4
  export declare class AsrReceiver {
@@ -5,7 +6,8 @@ export declare class AsrReceiver {
5
6
  private readonly _participantIdRegistry;
6
7
  private readonly _asrCallback;
7
8
  private readonly _textDecoder;
8
- constructor(datachannel: RTCDataChannel, participantIdRegistry: ParticipantIdRegistry, callback: (asr: AsrTranscription) => void);
9
+ private readonly _debug;
10
+ constructor(datachannel: RTCDataChannel, participantIdRegistry: ParticipantIdRegistry, callback: (asr: AsrTranscription) => void, debug?: DebugLogger);
9
11
  private static parse;
10
12
  private _onDataChannelMessage;
11
13
  destroy(): void;
@@ -1,6 +1,9 @@
1
+ import { type DebugLogger } from '../../static/Debug';
2
+ import StatsLogger from '../StatsLogger';
1
3
  import IDecoder from './IDecoder';
2
4
  import WorkerBase from './WorkerBase';
3
5
  export default class LibVPxDecoder extends WorkerBase implements IDecoder {
6
+ constructor(debug?: DebugLogger, logger?: StatsLogger | null);
4
7
  init(onFrameImage: (image: ImageData) => void, onFrameError: (error: unknown) => void, onKeyFrameRequested: () => void): Promise<void>;
5
8
  decodeFrame(timestamp: number, data: Uint8Array, isVP9: boolean, keyFrame?: boolean): void;
6
9
  destroy(): void;
@@ -1,3 +1,5 @@
1
+ import { type DebugLogger } from '../../static/Debug';
2
+ import StatsLogger from '../StatsLogger';
1
3
  import IEncoder from './IEncoder';
2
4
  import { OnFrameCallback } from './Types';
3
5
  import WorkerBase from './WorkerBase';
@@ -13,7 +15,7 @@ export default class LibVPxEncoder extends WorkerBase implements IEncoder {
13
15
  private _canvasCtx;
14
16
  private _frameReadTimeout;
15
17
  private _lastFrame;
16
- constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number);
18
+ constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number, debug?: DebugLogger, logger?: StatsLogger | null);
17
19
  private _createDom;
18
20
  private _removeDom;
19
21
  private _createStream;
@@ -1,6 +1,9 @@
1
+ import { type DebugLogger } from '../../static/Debug';
2
+ import StatsLogger from '../StatsLogger';
1
3
  import IDecoder from './IDecoder';
2
4
  import WorkerBase from './WorkerBase';
3
5
  export default class WebCodecsDecoder extends WorkerBase implements IDecoder {
6
+ constructor(debug?: DebugLogger, logger?: StatsLogger | null);
4
7
  init(onFrameImage: (frame: VideoFrame) => void, onFrameError: (error: unknown) => void, onKeyFrameRequested: () => void): Promise<void>;
5
8
  decodeFrame(timestamp: number, data: Uint8Array, isVP9: boolean, keyFrame?: boolean): void;
6
9
  destroy(): void;
@@ -1,3 +1,5 @@
1
+ import { type DebugLogger } from '../../static/Debug';
2
+ import StatsLogger from '../StatsLogger';
1
3
  import IEncoder from './IEncoder';
2
4
  import { OnFrameCallback } from './Types';
3
5
  import WorkerBase from './WorkerBase';
@@ -9,7 +11,7 @@ export default class WebCodecsEncoder extends WorkerBase implements IEncoder {
9
11
  private readonly _maxBitrate;
10
12
  private readonly _useCbr;
11
13
  private readonly _frameRate;
12
- constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number, useCbr: boolean, frameRate: number);
14
+ constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number, useCbr: boolean, frameRate: number, debug?: DebugLogger, logger?: StatsLogger | null);
13
15
  init(): Promise<void>;
14
16
  requestFrame(keyFrame?: boolean): void;
15
17
  setBitrate(bitrate: number, useCbr: boolean, fps: number): void;
@@ -1,5 +1,10 @@
1
+ import { type DebugLogger } from '../../static/Debug';
2
+ import StatsLogger from '../StatsLogger';
1
3
  export default abstract class WorkerBase {
2
4
  protected _worker: Worker | null;
5
+ protected readonly _debug: DebugLogger;
6
+ protected readonly _logger: StatsLogger | null;
7
+ protected constructor(debug?: DebugLogger, logger?: StatsLogger | null);
3
8
  protected _createWorker(workerFunctionData: string, onFrame: (data: any) => void, workerArgs?: any[], initArgs?: {
4
9
  [key: string]: any;
5
10
  }, transfer?: any[]): Promise<void>;
@@ -1,6 +1,8 @@
1
+ import { type DebugLogger } from '../../static/Debug';
1
2
  import { ParticipantId } from '../../types/Participant';
2
3
  import { IScreenShareStat } from '../../types/ScreenSharingStat';
3
4
  import { StatScreenShareFirstFrame } from '../stat/StatScreenShareFirstFrame';
5
+ import { StatAggregator } from '../stat/StatAggregator';
4
6
  import { FrameChunk } from './Utils';
5
7
  export type IOnStat = (stat: IScreenShareStat) => void;
6
8
  export type IOnStream = (stream: MediaStream) => void;
@@ -10,8 +12,9 @@ export declare abstract class BaseStreamBuilder {
10
12
  protected readonly _onStat: IOnStat;
11
13
  protected readonly _onKeyFrameRequested?: VoidFunction;
12
14
  protected readonly _statScreenShareFirstFrame: StatScreenShareFirstFrame;
15
+ protected readonly _debug: DebugLogger;
13
16
  protected _chunks: FrameChunk[];
14
- protected constructor(participantId: ParticipantId, onStream: IOnStream, onStat: IOnStat, onKeyFrameRequested?: VoidFunction);
17
+ protected constructor(participantId: ParticipantId, onStream: IOnStream, onStat: IOnStat, statAggregator: StatAggregator | null, onKeyFrameRequested?: VoidFunction, debug?: DebugLogger);
15
18
  appendChunk(chunk: FrameChunk): void;
16
19
  destroy(): void;
17
20
  protected abstract _processFrame(frame: FrameData): void;
@@ -1,3 +1,4 @@
1
+ import { type DebugLogger } from '../../static/Debug';
1
2
  import BaseRenderer from './BaseRenderer';
2
3
  export default class CanvasRenderer extends BaseRenderer {
3
4
  private readonly _useImageBitmap;
@@ -5,7 +6,8 @@ export default class CanvasRenderer extends BaseRenderer {
5
6
  private _canvasContext;
6
7
  private _stream;
7
8
  private _track;
8
- constructor(onStream: (stream: MediaStream) => void);
9
+ private readonly _debug;
10
+ constructor(onStream: (stream: MediaStream) => void, debug?: DebugLogger);
9
11
  private _createStream;
10
12
  private _removeStream;
11
13
  private _requestCanvasFrame;
@@ -1,5 +1,8 @@
1
+ import { type DebugLogger } from '../../static/Debug';
1
2
  import { ParticipantId } from '../../types/Participant';
3
+ import StatsLogger from '../StatsLogger';
2
4
  import { ParticipantIdRegistry } from '../ParticipantIdRegistry';
5
+ import { StatAggregator } from '../stat/StatAggregator';
3
6
  import { IOnStat } from './BaseStreamBuilder';
4
7
  export default class ScreenCaptureReceiver {
5
8
  private readonly _datachannel;
@@ -8,7 +11,10 @@ export default class ScreenCaptureReceiver {
8
11
  private _onStream;
9
12
  private _onEos;
10
13
  private _onStat;
11
- constructor(datachannel: RTCDataChannel, participantIdRegistry: ParticipantIdRegistry, onStream: (streamId: string, stream: MediaStream) => void, onEos: (streamId: string) => void, onStat: IOnStat);
14
+ private readonly _debug;
15
+ private readonly _logger;
16
+ private readonly _statAggregator;
17
+ constructor(datachannel: RTCDataChannel, participantIdRegistry: ParticipantIdRegistry, onStream: (streamId: string, stream: MediaStream) => void, onEos: (streamId: string) => void, onStat: IOnStat, statAggregator?: StatAggregator | null, debug?: DebugLogger, logger?: StatsLogger | null);
12
18
  private _onDataChannelMessage;
13
19
  /**
14
20
  * Отправить запрос ключевого кадра в datachannel.
@@ -1,4 +1,6 @@
1
1
  import BaseSignaling from '../../abstract/BaseSignaling';
2
+ import { type DebugLogger } from '../../static/Debug';
3
+ import StatsLogger from '../StatsLogger';
2
4
  export default class ScreenCaptureSender {
3
5
  private readonly _encoder;
4
6
  private readonly _datachannel;
@@ -21,7 +23,9 @@ export default class ScreenCaptureSender {
21
23
  private readonly _queue;
22
24
  private readonly _fpsMeter;
23
25
  private readonly _maxFrameDelay;
24
- constructor(track: MediaStreamTrack, datachannel: RTCDataChannel, signaling: BaseSignaling, fastSharing: boolean);
26
+ private readonly _debug;
27
+ private readonly _logger;
28
+ constructor(track: MediaStreamTrack, datachannel: RTCDataChannel, signaling: BaseSignaling, fastSharing: boolean, debug?: DebugLogger, logger?: StatsLogger | null);
25
29
  private _handleQueue;
26
30
  /**
27
31
  * Очищает очередь до опорного кадра
@@ -1,3 +1,4 @@
1
+ import { type DebugLogger } from '../../static/Debug';
1
2
  import { OnCongestionCallback } from '../codec/Types';
2
3
  import { SharingStatReport } from './SharingStatReport';
3
4
  export default class ScreenCongestionControl {
@@ -24,7 +25,8 @@ export default class ScreenCongestionControl {
24
25
  private _lastFpsCalcMs;
25
26
  private _frames;
26
27
  private _fps;
27
- constructor(onCongestion: OnCongestionCallback, minBitrate: number, maxBitrate: number, ccEnabled: boolean, fastSharing: boolean, delayThreshold: number, targetFps: number);
28
+ private readonly _debug;
29
+ constructor(onCongestion: OnCongestionCallback, minBitrate: number, maxBitrate: number, ccEnabled: boolean, fastSharing: boolean, delayThreshold: number, targetFps: number, debug?: DebugLogger);
28
30
  checkDelay(frameNum: number, delay: number, bitrateK: number): void;
29
31
  private _setBitrate;
30
32
  private _calcDelay;
@@ -1,4 +1,7 @@
1
+ import { type DebugLogger } from '../../static/Debug';
1
2
  import { ParticipantId } from '../../types/Participant';
3
+ import StatsLogger from '../StatsLogger';
4
+ import { StatAggregator } from '../stat/StatAggregator';
2
5
  import { BaseStreamBuilder, FrameData, IOnStat, IOnStream } from './BaseStreamBuilder';
3
6
  export default class StreamBuilder extends BaseStreamBuilder {
4
7
  private _renderer;
@@ -7,7 +10,8 @@ export default class StreamBuilder extends BaseStreamBuilder {
7
10
  private _decoderBusy;
8
11
  private _decoderQueue;
9
12
  private _fpsMeter;
10
- constructor(participantId: ParticipantId, onStream: IOnStream, onStat: IOnStat, onKeyFrameRequested: VoidFunction);
13
+ private readonly _logger;
14
+ constructor(participantId: ParticipantId, onStream: IOnStream, onStat: IOnStat, statAggregator: StatAggregator | null, onKeyFrameRequested: VoidFunction, debug?: DebugLogger, logger?: StatsLogger | null);
11
15
  protected _processFrame(frame: FrameData): void;
12
16
  private _initFpsMeter;
13
17
  /**
@@ -1,9 +1,11 @@
1
+ import { type DebugLogger } from '../../static/Debug';
1
2
  import BaseRenderer from './BaseRenderer';
2
3
  export default class TrackGeneratorRenderer extends BaseRenderer {
3
4
  private readonly _generator;
4
5
  private readonly _writer;
5
6
  private readonly _stream;
6
- constructor(onStream: (stream: MediaStream) => void);
7
+ private readonly _debug;
8
+ constructor(onStream: (stream: MediaStream) => void, debug?: DebugLogger);
7
9
  drawFrame(frame: VideoFrame): Promise<void>;
8
10
  destroy(): void;
9
11
  static isBrowserSupported(): boolean;
@@ -1,4 +1,6 @@
1
+ import { type DebugLogger } from '../../static/Debug';
1
2
  import { ParticipantId } from '../../types/Participant';
3
+ import { StatAggregator } from '../stat/StatAggregator';
2
4
  import { BaseStreamBuilder, FrameData, IOnStat, IOnStream } from './BaseStreamBuilder';
3
5
  export default class WebmBuilder extends BaseStreamBuilder {
4
6
  private _mediaBuffer;
@@ -7,7 +9,7 @@ export default class WebmBuilder extends BaseStreamBuilder {
7
9
  private _earliestTimestamp;
8
10
  private _clusterStartTime;
9
11
  private _lastFrameTimestamp;
10
- constructor(participantId: ParticipantId, onStream: IOnStream, onStat: IOnStat);
12
+ constructor(participantId: ParticipantId, onStream: IOnStream, onStat: IOnStat, statAggregator: StatAggregator | null, debug?: DebugLogger);
11
13
  private static _intToU16BE;
12
14
  private static _genWebmHeader;
13
15
  private static _genSegmentHeader;
@@ -1,5 +1,6 @@
1
1
  import { StatItem } from '../../types/Statistics';
2
- import { TransportTopology } from '../transport/Transport';
2
+ import StatsLogger from '../StatsLogger';
3
+ import TransportTopology from '../../enums/TransportTopology';
3
4
  export type CodecKind = 'audio' | 'video';
4
5
  /**
5
6
  * Собирает стату по использованию кодеков в webrtc
@@ -7,13 +8,12 @@ export type CodecKind = 'audio' | 'video';
7
8
  * отправляется репорт об использовании кодеков
8
9
  */
9
10
  export declare class CodecStatsAggregator {
10
- private static _instance;
11
+ private readonly _logger;
11
12
  private readonly _codecUsages;
12
- private getCurrentTransportTopology;
13
- static create(getCurrentTransportTopology: () => TransportTopology | undefined): void;
14
- static reportUsage(stat: StatItem): void;
13
+ private readonly getCurrentTransportTopology;
14
+ constructor(logger: StatsLogger, getCurrentTransportTopology: () => TransportTopology | undefined);
15
+ reportUsage(stat: StatItem): void;
15
16
  private saveUsage;
16
17
  private report;
17
- static destroy(): void;
18
- private _destroy;
18
+ destroy(): void;
19
19
  }
@@ -0,0 +1,21 @@
1
+ import BaseApi from '../../abstract/BaseApi';
2
+ import BaseLogger from '../../abstract/BaseLogger';
3
+ import HangupReason from '../HangupReason';
4
+ import StatsLogger from '../StatsLogger';
5
+ import TransportTopology from '../../enums/TransportTopology';
6
+ import { CodecStatsAggregator } from './CodecStatsAggregator';
7
+ import { StatAggregator } from './StatAggregator';
8
+ import { StatPings } from './StatPings';
9
+ import { StatSignalingCommands } from './StatSignalingCommands';
10
+ export declare class ConversationStats {
11
+ readonly logger: StatsLogger;
12
+ readonly statAggregator: StatAggregator;
13
+ readonly codecStatsAggregator: CodecStatsAggregator;
14
+ readonly pings: StatPings;
15
+ readonly signalingCommands: StatSignalingCommands;
16
+ constructor(api: BaseApi, externalLogger: BaseLogger | null, getConversationId: () => string | null, getTopology: () => TransportTopology | undefined);
17
+ logHangup(reason: HangupReason, topology?: TransportTopology): void;
18
+ flushCallMetrics(topology?: TransportTopology): void;
19
+ destroy(): void;
20
+ private static correctHangupReason;
21
+ }
@@ -1,12 +1,12 @@
1
1
  import { ICallStatLog } from '../../types/PerfStatReporter';
2
2
  import { IEventualStatLog } from '../../types/IEventualStatLog';
3
+ import StatsLogger from '../StatsLogger';
3
4
  export declare class StatAggregator {
4
- private static _instance;
5
+ private readonly _logger;
5
6
  private readonly _eventualLogs;
6
- static create(): void;
7
- static logCallStat(params: ICallStatLog): void;
7
+ constructor(logger: StatsLogger);
8
+ logCallStat(params: ICallStatLog): void;
8
9
  /** @link https://wiki.odkl.ru/pages/viewpage.action?pageId=100892588 */
9
- static logEventualStat(params: IEventualStatLog): void;
10
- static destroy(): void;
11
- private _destroy;
10
+ logEventualStat(params: IEventualStatLog): void;
11
+ destroy(): void;
12
12
  }