@vkontakte/calls-sdk 2.8.11-dev.d67d6abf.0 → 2.8.11-dev.d88537e0.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.
Files changed (68) hide show
  1. package/CallsSDK.d.ts +63 -22
  2. package/abstract/BaseApi.d.ts +2 -3
  3. package/abstract/BaseSignaling.d.ts +6 -6
  4. package/calls-sdk.cjs.js +9 -9
  5. package/calls-sdk.esm.js +7672 -7389
  6. package/classes/AudioFix.d.ts +5 -1
  7. package/classes/AudioOutput.d.ts +5 -1
  8. package/classes/Conversation.d.ts +12 -12
  9. package/classes/DebugInfo.d.ts +3 -0
  10. package/classes/DisplayLayoutRequester.d.ts +39 -0
  11. package/classes/ExternalIdCache.d.ts +19 -0
  12. package/classes/MediaSource.d.ts +5 -8
  13. package/classes/ParticipantIdRegistry.d.ts +3 -0
  14. package/classes/ProducerCommandSerializationService.d.ts +3 -0
  15. package/classes/SignalingActor.d.ts +3 -1
  16. package/classes/SpeakerDetector.d.ts +2 -1
  17. package/classes/SpecListener.d.ts +5 -1
  18. package/classes/{Logger.d.ts → StatsLogger.d.ts} +3 -10
  19. package/classes/VideoEffectsFpsLimiter.d.ts +3 -0
  20. package/classes/asr/AsrReceiver.d.ts +3 -1
  21. package/classes/codec/LibVPxDecoder.d.ts +3 -0
  22. package/classes/codec/LibVPxEncoder.d.ts +3 -1
  23. package/classes/codec/WebCodecsDecoder.d.ts +3 -0
  24. package/classes/codec/WebCodecsEncoder.d.ts +3 -1
  25. package/classes/codec/WorkerBase.d.ts +5 -0
  26. package/classes/screenshare/BaseStreamBuilder.d.ts +4 -1
  27. package/classes/screenshare/CanvasRenderer.d.ts +3 -1
  28. package/classes/screenshare/ScreenCaptureReceiver.d.ts +7 -1
  29. package/classes/screenshare/ScreenCaptureSender.d.ts +5 -1
  30. package/classes/screenshare/ScreenCongestionControl.d.ts +3 -1
  31. package/classes/screenshare/StreamBuilder.d.ts +5 -1
  32. package/classes/screenshare/TrackGeneratorRenderer.d.ts +3 -1
  33. package/classes/screenshare/WebmBuilder.d.ts +3 -1
  34. package/classes/stat/CodecStatsAggregator.d.ts +7 -7
  35. package/classes/stat/ConversationStats.d.ts +21 -0
  36. package/classes/stat/StatAggregator.d.ts +6 -6
  37. package/classes/stat/StatFirstMediaReceived.d.ts +4 -1
  38. package/classes/stat/StatPings.d.ts +9 -9
  39. package/classes/stat/StatScreenShareFirstFrame.d.ts +3 -1
  40. package/classes/stat/StatSignalingCommands.d.ts +8 -8
  41. package/classes/transport/BaseTransport.d.ts +1 -1
  42. package/classes/transport/DirectStatReporter.d.ts +3 -1
  43. package/classes/transport/DirectTransport.d.ts +9 -1
  44. package/classes/transport/PerfStatReporter.d.ts +5 -1
  45. package/classes/transport/ServerTransport.d.ts +10 -2
  46. package/classes/transport/Transport.d.ts +14 -16
  47. package/default/Api.d.ts +3 -11
  48. package/default/Signaling.d.ts +13 -3
  49. package/enums/SignalingNotification.d.ts +1 -2
  50. package/enums/TransportState.d.ts +10 -0
  51. package/enums/TransportTopology.d.ts +5 -0
  52. package/package.json +2 -2
  53. package/static/Debug.d.ts +27 -8
  54. package/static/External.d.ts +83 -155
  55. package/static/Params.d.ts +105 -93
  56. package/static/Utils.d.ts +3 -2
  57. package/static/WebRTCUtils.d.ts +6 -4
  58. package/types/Conversation.d.ts +1 -1
  59. package/types/FastStart.d.ts +1 -0
  60. package/types/ParticipantLayout.d.ts +33 -0
  61. package/types/SignalingMessage.d.ts +1 -5
  62. package/types/Statistics.d.ts +1 -1
  63. package/utils/DebugStorage.d.ts +100 -1
  64. package/classes/CallRegistry.d.ts +0 -22
  65. package/classes/stat/EventMetricsService.d.ts +0 -9
  66. package/static/Capabilities.d.ts +0 -5
  67. package/static/ConversationDebugLogger.d.ts +0 -13
  68. package/types/Capabilities.d.ts +0 -24
@@ -1,5 +1,5 @@
1
1
  import type { VideoEffects } from '@vkontakte/calls-video-effects';
2
- import type { EffectVoiceChange } from '@vkontakte/calls-audio-effects';
2
+ import type { EffectVoiceChange, VadControllerOptions, VadLib } from '@vkontakte/calls-audio-effects';
3
3
  import type * as Vmoji from '@vkontakte/calls-vmoji';
4
4
  import { IAsrData } from '../types/Asr';
5
5
  import { ConversationData } from '../types/Conversation';
@@ -188,6 +188,14 @@ export type ParamsObject = {
188
188
  * Можно установить позднее методом `setAudioEffects`
189
189
  */
190
190
  audioEffects: EffectVoiceChange | null;
191
+ /**
192
+ * Namespace библиотеки VAD из `@vkontakte/calls-audio-effects`.
193
+ *
194
+ * Можно установить методом `setVad`
195
+ */
196
+ vad: VadLib | null;
197
+ /** Настройки VAD (threshold, hangoverMs, enabled) */
198
+ vadOptions: VadControllerOptions;
191
199
  /**
192
200
  * Максимальная ширина видео в пикселях для видео эффекта
193
201
  *
@@ -306,6 +314,12 @@ export type ParamsObject = {
306
314
  * _По умолчанию: `30`_
307
315
  */
308
316
  videoTracksCount: number;
317
+ /**
318
+ * Минимальный интервал отправки diff для requestDisplayLayout в миллисекундах.
319
+ *
320
+ * _По умолчанию: `250`_
321
+ */
322
+ requestDisplayLayoutThrottleMs: number;
309
323
  /** @hidden */
310
324
  movieShare: boolean;
311
325
  /** @hidden */
@@ -343,14 +357,7 @@ export type ParamsObject = {
343
357
  * Включает поддержку режима WAIT_FOR_ADMIN в звонках.
344
358
  */
345
359
  waitForAdminInGroupCalls: boolean;
346
- /**
347
- * Включает поддержку удержания звонка
348
- */
349
360
  hold: boolean;
350
- /**
351
- * Максимальное количество параллельных звонков
352
- */
353
- maxParallelCalls: number;
354
361
  /**
355
362
  * Индекс участника для первого chunk'а который придет при установке соединения с сервером
356
363
  *
@@ -497,104 +504,104 @@ export type ParamsObject = {
497
504
  /**
498
505
  * Получен локальный стрим с камеры/микрофона
499
506
  */
500
- onLocalStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
507
+ onLocalStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
501
508
  /**
502
509
  * Локальный стрим изменился
503
510
  */
504
- onLocalStreamUpdate?: (mediaSettings: MediaSettings, kind: MediaTrackKind, conversationId?: string) => void;
511
+ onLocalStreamUpdate?: (mediaSettings: MediaSettings, kind: MediaTrackKind) => void;
505
512
  /**
506
513
  * Локальный стрим с экрана добавлен/удалён
507
514
  */
508
- onScreenStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
515
+ onScreenStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
509
516
  /**
510
517
  * Локальный стрим вимоджи добавлен/удалён
511
518
  */
512
- onVmojiStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
519
+ onVmojiStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
513
520
  /**
514
521
  * Произошла ошибка вимоджи
515
522
  */
516
- onVmojiError?: (error: VmojiError, conversationId?: string) => void;
523
+ onVmojiError?: (error: VmojiError) => void;
517
524
  /**
518
525
  * Изменился статус локального соединения
519
526
  */
520
- onLocalStatus?: (status: ParticipantStatus, conversationId?: string) => void;
527
+ onLocalStatus?: (status: ParticipantStatus) => void;
521
528
  /**
522
529
  * Получен стрим собеседника.
523
530
  * Если сервер закончил стримить собеседника, вместо стрима будет передан null
524
531
  */
525
- onRemoteStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
532
+ onRemoteStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
526
533
  /**
527
534
  * Cтрим собеседника приостановлен/возобновлен.
528
535
  */
529
- onRemoteStreamSuspended?: (userId: ExternalParticipantId, mediaType: MediaType, suspended: boolean, conversationId?: string) => void;
536
+ onRemoteStreamSuspended?: (userId: ExternalParticipantId, mediaType: MediaType, suspended: boolean) => void;
530
537
  /**
531
538
  * Получен стрим с экрана собеседника.
532
539
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
533
540
  */
534
- onRemoteScreenStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
541
+ onRemoteScreenStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
535
542
  /**
536
543
  * Получен стрим вимоджи собеседника.
537
544
  * Если сервер закончил стримить вимоджи собеседника, вместо стрима будет передан null
538
545
  */
539
- onRemoteVmojiStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
546
+ onRemoteVmojiStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
540
547
  /**
541
548
  * Получен стрим трансляция или мувик от собеседника.
542
549
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
543
550
  */
544
- onRemoteLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData, conversationId?: string) => void;
551
+ onRemoteLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData) => void;
545
552
  /**
546
553
  * Получен собственный стрим трансляция или мувик.
547
554
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
548
555
  */
549
- onLocalLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData, conversationId?: string) => void;
556
+ onLocalLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData) => void;
550
557
  /**
551
558
  * Получено обновление стрима или лайва от собеседника.
552
559
  */
553
- onRemoteLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState, conversationId?: string) => void;
560
+ onRemoteLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState) => void;
554
561
  /**
555
562
  * Получено обновление собственного стрима или лайва.
556
563
  */
557
- onLocalLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState, conversationId?: string) => void;
564
+ onLocalLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState) => void;
558
565
  /**
559
566
  * Начат звонок
560
567
  */
561
- onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants: ExternalParticipant[], rooms?: Rooms, conversationId?: string) => void;
568
+ onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants: ExternalParticipant[], rooms?: Rooms) => void;
562
569
  /**
563
570
  * Начальный список участников для постраничного звонка
564
571
  */
565
- onConversationParticipantListChunk?: (chunk: ExternalParticipantListChunk, conversationId?: string) => void;
572
+ onConversationParticipantListChunk?: (chunk: ExternalParticipantListChunk) => void;
566
573
  /**
567
574
  * Изменились данные стрима собеседника
568
575
  */
569
- onRemoteMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
576
+ onRemoteMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, markers: ExternalParticipantListMarkers | null) => void;
570
577
  /**
571
578
  * Изменились данные стрима собеседника
572
579
  */
573
- onLocalMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, conversationId?: string) => void;
580
+ onLocalMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings) => void;
574
581
  /**
575
582
  * Полученны данные по стримам (лайв/мувик) от собеседника
576
583
  */
577
- onRemoteSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId, conversationId?: string) => void;
584
+ onRemoteSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId) => void;
578
585
  /**
579
586
  * Полученны данные по остановленным стримам (лайв/мувик) от собеседника
580
587
  */
581
- onRemoteSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId, conversationId?: string) => void;
588
+ onRemoteSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId) => void;
582
589
  /**
583
590
  * Полученны данные по собственным стримам (лайв/мувик)
584
591
  */
585
- onLocalSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId, conversationId?: string) => void;
592
+ onLocalSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId) => void;
586
593
  /**
587
594
  * Полученны данные по собственным остановленным стримам (лайв/мувик)
588
595
  */
589
- onLocalSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId, conversationId?: string) => void;
596
+ onLocalSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId) => void;
590
597
  /**
591
598
  * Добавили участника
592
599
  */
593
- onParticipantAdded?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
600
+ onParticipantAdded?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null) => void;
594
601
  /**
595
602
  * Участник присоединился к звонку
596
603
  */
597
- onParticipantJoined?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers, conversationId?: string) => void;
604
+ onParticipantJoined?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers) => void;
598
605
  /**
599
606
  * Получены данные по изменению локальных состояний со стороны админа
600
607
  * Например, принудительно опущена рука
@@ -602,80 +609,80 @@ export type ParamsObject = {
602
609
  * @param participantState Полный объект состояния участника, полученный от SDK/сервера.
603
610
  * @param global `true` – действие глобальное (для всех участников), `false` – действие локальное (только у текущего пользователя).
604
611
  */
605
- onLocalParticipantState?: (participantState: ParticipantStateMapped, global: boolean, conversationId?: string) => void;
612
+ onLocalParticipantState?: (participantState: ParticipantStateMapped, global: boolean) => void;
606
613
  /**
607
614
  * Изменились данные состояний собеседника
608
615
  */
609
- onRemoteParticipantState?: (userId: ExternalParticipantId, participantState: ParticipantStateMapped, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
616
+ onRemoteParticipantState?: (userId: ExternalParticipantId, participantState: ParticipantStateMapped, markers: ExternalParticipantListMarkers | null) => void;
610
617
  /**
611
618
  * Изменились данные состояний нескольких собеседников
612
619
  */
613
- onRemoteParticipantsState?: (stateList: ParticipantsStateList, roomId?: IRoomId, conversationId?: string) => void;
620
+ onRemoteParticipantsState?: (stateList: ParticipantsStateList, roomId?: IRoomId) => void;
614
621
  /**
615
622
  * Изменился статус соединения собеседников
616
623
  */
617
- onRemoteStatus?: (userIds: ExternalParticipantId[], status: ParticipantStatus, data: any, conversationId?: string) => void;
624
+ onRemoteStatus?: (userIds: ExternalParticipantId[], status: ParticipantStatus, data: any) => void;
618
625
  /**
619
626
  * Разрешения на доступы были запрошены в браузере
620
627
  */
621
- onPermissionsRequested?: (conversationId?: string) => void;
628
+ onPermissionsRequested?: () => void;
622
629
  /**
623
630
  * Ошибка получения трека с камеры или микрофона
624
631
  */
625
- onPermissionsError?: (error: FatalError, original: Error, conversationId?: string) => void;
632
+ onPermissionsError?: (error: FatalError, original: Error) => void;
626
633
  /**
627
634
  * Пользователь отключился от звонка
628
635
  */
629
- onRemoteRemoved?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
636
+ onRemoteRemoved?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null) => void;
630
637
  /**
631
638
  * Изменилось состояние звонка
632
639
  */
633
- onCallState?: (isCallActive: boolean, canAddParticipants: boolean, conversation: ConversationData, conversationId?: string) => void;
640
+ onCallState?: (isCallActive: boolean, canAddParticipants: boolean, conversation: ConversationData) => void;
634
641
  /**
635
642
  * Изменилось состояние камеры или микрофона
636
643
  */
637
- onDeviceSwitched?: (mediaOption: MediaOption, enabled: boolean, conversationId?: string) => void;
644
+ onDeviceSwitched?: (mediaOption: MediaOption, enabled: boolean) => void;
638
645
  /**
639
646
  * Изменились состояния устройств пользователя или разрешения включать камеру/микрофон
640
647
  */
641
- onMuteStates?: (muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll: boolean, unmute: boolean, userId: ExternalParticipantId | null, adminId: ExternalParticipantId | null, stateUpdated?: boolean, requestedMedia?: MediaOption[], roomId?: number | null, conversationId?: string) => void;
648
+ onMuteStates?: (muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll: boolean, unmute: boolean, userId: ExternalParticipantId | null, adminId: ExternalParticipantId | null, stateUpdated?: boolean, requestedMedia?: MediaOption[], roomId?: number | null) => void;
642
649
  /**
643
650
  * Изменились роли собеседника в звонке
644
651
  */
645
- onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[], isInitial?: boolean, conversationId?: string) => void;
652
+ onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[], isInitial?: boolean) => void;
646
653
  /**
647
654
  * Изменились свои роли в звонке
648
655
  */
649
- onLocalRolesChanged?: (roles: UserRole[], isInitial?: boolean, conversationId?: string) => void;
656
+ onLocalRolesChanged?: (roles: UserRole[], isInitial?: boolean) => void;
650
657
  /**
651
658
  * Закрепляет/открепляет собеседника для всех
652
659
  */
653
- onPinnedParticipant?: (userId: ExternalParticipantId, unpin: boolean, markers: ExternalParticipantListMarkers | null, roomId?: number | null, conversationId?: string) => void;
660
+ onPinnedParticipant?: (userId: ExternalParticipantId, unpin: boolean, markers: ExternalParticipantListMarkers | null, roomId?: number | null) => void;
654
661
  /**
655
662
  * Закрепляет/открепляет текущего пользователя у других собеседников
656
663
  */
657
- onLocalPin?: (unpin: boolean, conversationId?: string) => void;
664
+ onLocalPin?: (unpin: boolean) => void;
658
665
  /**
659
666
  * Изменились опции звонка
660
667
  */
661
- onOptionsChanged?: (options: ConversationOption[], conversationId?: string) => void;
662
- onRateNeeded?: (conversationId?: string) => void;
668
+ onOptionsChanged?: (options: ConversationOption[]) => void;
669
+ onRateNeeded?: Function;
663
670
  /**
664
671
  * Изменился говорящий в звонке
665
672
  */
666
- onSpeakerChanged?: (userId: ExternalParticipantId, conversationId?: string) => void;
673
+ onSpeakerChanged?: (userId: ExternalParticipantId) => void;
667
674
  /**
668
675
  * Громкость собеседников
669
676
  */
670
677
  onVolumesDetected?: (volumes: {
671
678
  uid: ExternalParticipantId;
672
679
  volume: number;
673
- }[], conversationId?: string) => void;
680
+ }[]) => void;
674
681
  /**
675
682
  * Громкость своего микрофона
676
683
  */
677
- onLocalVolume?: (volume: number, isMicEnabled: boolean, conversationId?: string) => void;
678
- onJoinStatus?: (conversationId?: string) => void;
684
+ onLocalVolume?: (volume: number, isMicEnabled: boolean) => void;
685
+ onJoinStatus?: Function;
679
686
  /**
680
687
  * Звонок был завершен
681
688
  */
@@ -683,47 +690,47 @@ export type ParamsObject = {
683
690
  /**
684
691
  * Входящий звонок был принят мной
685
692
  */
686
- onCallAccepted?: (conversationId?: string) => void;
693
+ onCallAccepted?: () => void;
687
694
  /**
688
695
  * Исходящий звонок был принят кем-то
689
696
  * @param userId
690
697
  */
691
- onAcceptedCall?: (userId: ExternalParticipantId, capabilities: ParticipantCapabilities, conversationId?: string) => void;
698
+ onAcceptedCall?: (userId: ExternalParticipantId, capabilities: ParticipantCapabilities) => void;
692
699
  /**
693
700
  * Список устройств изменился
694
701
  */
695
- onDeviceChange?: (conversationId?: string) => void;
702
+ onDeviceChange?: () => void;
696
703
  onMultipartyChatCreated?: (conversation: ConversationData) => void;
697
704
  /**
698
705
  * Изменилась подпись звонка 1:1
699
706
  */
700
- onFingerprintChange?: (fingerprint: string, conversationId?: string) => void;
707
+ onFingerprintChange?: (fingerprint: string) => void;
701
708
  /**
702
709
  * Требуется обновление токена
703
710
  */
704
- onTokenExpired?: (conversationId?: string) => void;
711
+ onTokenExpired?: () => void;
705
712
  /**
706
713
  * Получено сообщение чата
707
714
  */
708
- onChatMessage?: (message: string, from: ExternalParticipantId, direct: boolean, conversationId?: string) => void;
715
+ onChatMessage?: (message: string, from: ExternalParticipantId, direct: boolean) => void;
709
716
  /**
710
717
  * Получены данные от собеседника
711
718
  */
712
- onCustomData?: (data: JSONObject, from: ExternalParticipantId, direct: boolean, conversationId?: string) => void;
719
+ onCustomData?: (data: JSONObject, from: ExternalParticipantId, direct: boolean) => void;
713
720
  /**
714
721
  * Начата трансляция/запись звонка
715
722
  */
716
- onRecordStarted?: (initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, roomId?: number | null, conversationId?: string) => void;
723
+ onRecordStarted?: (initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, roomId?: number | null) => void;
717
724
  /**
718
725
  * Закончена трансляция/запись звонка
719
726
  */
720
- onRecordStopped?: (roomId: number | null, stopBy: ExternalParticipantId | null, conversationId?: string) => void;
727
+ onRecordStopped?: (roomId: number | null, stopBy: ExternalParticipantId | null) => void;
721
728
  /**
722
729
  * Состояние своей сети
723
730
  *
724
731
  * @param rating Оценка качества соединения от 0 до 1
725
732
  */
726
- onLocalNetworkStatusChanged?: (rating: number, conversationId?: string) => void;
733
+ onLocalNetworkStatusChanged?: (rating: number) => void;
727
734
  /**
728
735
  * Состояние сети участников
729
736
  *
@@ -732,19 +739,25 @@ export type ParamsObject = {
732
739
  onNetworkStatusChanged?: (status: {
733
740
  uid: ExternalParticipantId;
734
741
  rating: number;
735
- }[], conversationId?: string) => void;
742
+ }[]) => void;
736
743
  /**
737
744
  * Получено отладочное сообщение. Работает только при выключенном режиме отладки
738
745
  */
739
746
  onDebugMessage?: (type: DebugMessageType, ...args: any[]) => void;
747
+ /**
748
+ * Получено отладочное сообщение с контекстом звонка. Работает только при выключенном режиме отладки
749
+ */
750
+ onDebugMessageWithContext?: (type: DebugMessageType, context: {
751
+ conversationId: string | null;
752
+ }, ...args: any[]) => void;
740
753
  /**
741
754
  * Статистика звонка
742
755
  */
743
- onStatistics?: (stats: {}, conversationId?: string) => void;
756
+ onStatistics?: (stats: {}) => void;
744
757
  /**
745
758
  * Ошибка воспроизведения звука
746
759
  */
747
- onAutoplayError?: (conversationId?: string) => void;
760
+ onAutoplayError?: () => void;
748
761
  /**
749
762
  * Изменилось состояние зала ожидания/зала в режиме Audience
750
763
  *
@@ -754,74 +767,74 @@ export type ParamsObject = {
754
767
  * @param addedParticipantIds Некоторое количество участников, добавленных в зал
755
768
  * @param removedParticipantIds Некоторое количество участников, убранных из зала
756
769
  */
757
- onChatRoomUpdated?: (eventType: ChatRoomEventType, totalCount: number, firstParticipants: ExternalId[], addedParticipantIds: ExternalId[], removedParticipantIds: ExternalId[], conversationId?: string) => void;
770
+ onChatRoomUpdated?: (eventType: ChatRoomEventType, totalCount: number, firstParticipants: ExternalId[], addedParticipantIds: ExternalId[], removedParticipantIds: ExternalId[]) => void;
758
771
  /**
759
772
  * Получен микшированный аудио стрим.
760
773
  * @hidden
761
774
  * @param stream стрим от WebRTC
762
775
  */
763
- onRemoteMixedAudioStream?: (stream: MediaStream, conversationId?: string) => void;
776
+ onRemoteMixedAudioStream?: (stream: MediaStream) => void;
764
777
  /**
765
778
  * Получена новая ссылка на звонок
766
779
  * @param joinLink токен присоединения к звонку
767
780
  */
768
- onJoinLinkChanged?: (joinLink: string, conversationId?: string) => void;
781
+ onJoinLinkChanged?: (joinLink: string) => void;
769
782
  /**
770
783
  * Получено обновление списка сессионных залов
771
784
  * @param updates список обновлений по залам
772
785
  */
773
- onRoomsUpdated?: (updates: Partial<Record<RoomsEventType, RoomsUpdate>>, conversationId?: string) => void;
786
+ onRoomsUpdated?: (updates: Partial<Record<RoomsEventType, RoomsUpdate>>) => void;
774
787
  /**
775
788
  * Получено обновление сессионных зало
776
789
  * @param eventTypes список событий
777
790
  * @param roomId номер сессионного зала
778
791
  * @param room сессионный зал
779
792
  */
780
- onRoomUpdated?: (eventTypes: RoomsEventType[], roomId: number, room: Room | null, deactivate: boolean | null, conversationId?: string) => void;
793
+ onRoomUpdated?: (eventTypes: RoomsEventType[], roomId: number, room: Room | null, deactivate: boolean | null) => void;
781
794
  /**
782
795
  * Получение обновление списка участников в сессионном зале
783
796
  * @param update обновление списка участников
784
797
  */
785
- onRoomParticipantsUpdated?: (update: RoomParticipantUpdate, conversationId?: string) => void;
798
+ onRoomParticipantsUpdated?: (update: RoomParticipantUpdate) => void;
786
799
  /**
787
800
  * Получение информации о смене зала
788
801
  * @param roomId номер сессионного зала
789
802
  */
790
- onRoomSwitched?: (roomId: number | null, conversationId?: string) => void;
803
+ onRoomSwitched?: (roomId: number | null) => void;
791
804
  /**
792
805
  * Установить id сессионного зала на старте звонка
793
806
  * @param roomId номер сессионного зала
794
807
  */
795
- onRoomStart?: (roomId: number | null, conversationId?: string) => void;
808
+ onRoomStart?: (roomId: number | null) => void;
796
809
  /**
797
810
  * Получены новые реакции в звонке
798
811
  * @param feedback массив с реакциями
799
812
  */
800
- onFeedback?: (feedback: IFeedbackExternal[], roomId: number | null, conversationId?: string) => void;
813
+ onFeedback?: (feedback: IFeedbackExternal[], roomId: number | null) => void;
801
814
  /**
802
815
  * Изменился список ролей, которым доступны ConversationFeatures
803
816
  *
804
817
  * @param featuresPerRole Объект вида ключ: ConversationFeature = значение: UserRole[]
805
818
  * (если ключ фичи отсутствует, или в ролях пустой массив, считаем фичу доступной для всех пользователей)
806
819
  */
807
- onFeaturesPerRoleChanged?: (featuresPerRole: IFeaturesPerRole, conversationId?: string) => void;
820
+ onFeaturesPerRoleChanged?: (featuresPerRole: IFeaturesPerRole) => void;
808
821
  /**
809
822
  * Изменился Vmoji-аватар пользователя
810
823
  * @param externalId Id пользователя, у которого изменился аватар
811
824
  */
812
- onParticipantVmojiUpdate?: (externalId: ExternalParticipantId, conversationId?: string) => void;
825
+ onParticipantVmojiUpdate?: (externalId: ExternalParticipantId) => void;
813
826
  /**
814
827
  * Начата текстовая расшифровка звонка
815
828
  * @param initiatorId Id пользователя, запустившего расшифровку звонка
816
829
  * @param movieId Id расшифровки
817
830
  * @param roomId Id комнаты
818
831
  */
819
- onAsrStarted?: (initiatorId: ExternalParticipantId, movieId: number, roomId: number | null, conversationId?: string) => void;
832
+ onAsrStarted?: (initiatorId: ExternalParticipantId, movieId: number, roomId: number | null) => void;
820
833
  /**
821
834
  * Закончена текстовая расшифровка звонка
822
835
  * @param roomId Id комнаты
823
836
  */
824
- onAsrStopped?: (roomId: number | null, conversationId?: string) => void;
837
+ onAsrStopped?: (roomId: number | null) => void;
825
838
  /**
826
839
  * Получена расшифровка речи
827
840
  * @param id Id пользователя, произнесшего реплику
@@ -829,53 +842,47 @@ export type ParamsObject = {
829
842
  * @param timestamp Время расшифровки
830
843
  * @param duration Длительность реплики в расшифровке
831
844
  */
832
- onAsrTranscription?: (id: ExternalParticipantId, text: string, timestamp: number, duration: number, conversationId?: string) => void;
845
+ onAsrTranscription?: (id: ExternalParticipantId, text: string, timestamp: number, duration: number) => void;
833
846
  /**
834
847
  * Установка начальных параметров текстовой расшифровки звонка. (Используется при входе в звонок/ смене комнаты)
835
848
  * @param data Начальная информация по ASR
836
849
  * @param roomId Id Комнаты
837
850
  */
838
- onAsrSet?: (data: IAsrData | null, roomId: number | null, conversationId?: string) => void;
851
+ onAsrSet?: (data: IAsrData | null, roomId: number | null) => void;
839
852
  /**
840
853
  * Админ начал/остановил совместное использование стороннего web-приложения
841
854
  * @param userId id участника-админа
842
855
  * @param sharedUrl url страницы
843
856
  */
844
- onRemoteSharedUrl?: (userId: ExternalParticipantId, sharedUrl: string | undefined, roomId: IRoomId, conversationId?: string) => void;
857
+ onRemoteSharedUrl?: (userId: ExternalParticipantId, sharedUrl: string | undefined, roomId: IRoomId) => void;
845
858
  /**
846
859
  * Изменился id участника (деанонимизация)
847
860
  * @param prevId
848
861
  * @param newId
849
862
  */
850
- onParticipantIdChanged?: (prevId: ExternalParticipantId, newId: ExternalParticipantId, conversationId?: string) => void;
863
+ onParticipantIdChanged?: (prevId: ExternalParticipantId, newId: ExternalParticipantId) => void;
851
864
  /**
852
865
  * Предложение включить режим автоматического отключения приёма видео
853
866
  * в плохой сети
854
867
  * @param bandwidth текущая полоса пропускания, kbps
855
868
  */
856
- onVideoSuspendSuggest?: (bandwidth: number, conversationId?: string) => void;
869
+ onVideoSuspendSuggest?: (bandwidth: number) => void;
857
870
  /**
858
871
  * Одобрено повышение пользователя в зале ожидания/зале в режиме Audience
859
872
  *
860
873
  * @param adminParticipantId админ, одобривший повышение
861
874
  */
862
- onPromotionApproved?: (adminParticipantId: ExternalParticipantId, conversationId?: string) => void;
875
+ onPromotionApproved?: (adminParticipantId: ExternalParticipantId) => void;
863
876
  /**
864
877
  * Участник повышен/разжалован в зале ожидания/зале в режиме Audience
865
878
  *
866
879
  * @param demoted участник разжалован
867
880
  */
868
- onPromoted?: (demoted: boolean, conversationId?: string) => void;
869
- /**
870
- * Активным установлен определенный звонок
871
- *
872
- * @param conversationId ID звонка
873
- */
874
- onCallActive?: (conversationId: string) => void;
881
+ onPromoted?: (demoted: boolean) => void;
875
882
  /**
876
883
  * Собеседник подключился к сигналлингу
877
884
  */
878
- onPeerRegistered?: (conversationId?: string) => void;
885
+ onPeerRegistered?: () => void;
879
886
  };
880
887
  export default abstract class Params {
881
888
  private static _params;
@@ -942,6 +949,10 @@ export default abstract class Params {
942
949
  static get displaySurface(): DisplayCaptureSurfaceType;
943
950
  static get audioEffects(): EffectVoiceChange | null;
944
951
  static set audioEffects(value: EffectVoiceChange | null);
952
+ static get vad(): VadLib | null;
953
+ static set vad(value: VadLib | null);
954
+ static get vadOptions(): VadControllerOptions;
955
+ static set vadOptions(value: VadControllerOptions);
945
956
  static get videoEffects(): VideoEffects | null;
946
957
  static set videoEffects(value: VideoEffects | null);
947
958
  static get videoEffectMaxWidth(): number;
@@ -976,6 +987,7 @@ export default abstract class Params {
976
987
  static get audioNack(): boolean;
977
988
  static get movieShare(): boolean;
978
989
  static get videoTracksCount(): number;
990
+ static get requestDisplayLayoutThrottleMs(): number;
979
991
  static get breakVideoPayloadTypes(): boolean;
980
992
  static get useCallsToContacts(): boolean;
981
993
  static get useParticipantListChunk(): boolean;
@@ -984,7 +996,6 @@ export default abstract class Params {
984
996
  static get addParticipant(): boolean;
985
997
  static get waitForAdminInGroupCalls(): boolean;
986
998
  static get hold(): boolean;
987
- static get maxParallelCalls(): number;
988
999
  static get participantListChunkInitIndex(): number;
989
1000
  static get participantListChunkInitCount(): number | null;
990
1001
  static get filterObservers(): boolean;
@@ -1024,6 +1035,7 @@ export default abstract class Params {
1024
1035
  screenShareCongestionControl: boolean;
1025
1036
  screenShareCongestionControlThreshold: number;
1026
1037
  videoTracksCount: number;
1038
+ requestDisplayLayoutThrottleMs: number;
1027
1039
  asrDataChannel: boolean;
1028
1040
  videoMaxHeight: number;
1029
1041
  videoMaxWidth: number;
package/static/Utils.d.ts CHANGED
@@ -3,6 +3,7 @@ import { ExternalParticipant, ExternalParticipantListMarker } from '../types/Ext
3
3
  import { CompositeUserId, OkUserId, Participant, ParticipantId, ParticipantStateMapped } from '../types/Participant';
4
4
  import SignalingMessage from '../types/SignalingMessage';
5
5
  import VideoSettings from '../types/VideoSettings';
6
+ import { type DebugLogger } from './Debug';
6
7
  export declare const PARAMETERS_SEPARATOR = ":";
7
8
  export declare const DEVICE_IDX_PARAMETER = "d";
8
9
  /** @hidden */
@@ -36,8 +37,8 @@ declare namespace Utils {
36
37
  function delay(time: number, { signal }?: {
37
38
  signal?: AbortSignal;
38
39
  }): Promise<void>;
39
- function applySettings(pc: RTCPeerConnection, videoSettings: VideoSettings, prevSettings: any): any;
40
- function applyVideoTrackSettings(videoSettings: VideoSettings, s: RTCRtpSender, track: MediaStreamTrack | null, prevSettings: any, retSettings: any): void;
40
+ function applySettings(pc: RTCPeerConnection, videoSettings: VideoSettings, prevSettings: any, debug?: DebugLogger): any;
41
+ function applyVideoTrackSettings(videoSettings: VideoSettings, s: RTCRtpSender, track: MediaStreamTrack | null, prevSettings: any, retSettings: any, debug?: DebugLogger): void;
41
42
  /**
42
43
  * Проверяет, есть ли в первом массиве хотя бы один элемент из второго массива
43
44
  * @param arr Где ищем
@@ -2,6 +2,8 @@
2
2
  * Вспомогательный плагин для работы с WebRTC
3
3
  */
4
4
  import { IVideoDimentions } from '../types/MediaSettings';
5
+ import type StatsLogger from '../classes/StatsLogger';
6
+ import { type DebugLogger } from './Debug';
5
7
  /**
6
8
  * Тип камеры мобильного устройства
7
9
  */
@@ -83,24 +85,24 @@ declare namespace WebRTCUtils {
83
85
  * @param needAudio Нужно ли аудио
84
86
  * @param needEmptyTracks Добавлять ли в стрим пустые треки для отключенного видео/аудио
85
87
  */
86
- function getUserMedia(needVideo?: boolean, needAudio?: boolean, needEmptyTracks?: boolean): Promise<MediaStream>;
88
+ function getUserMedia(needVideo?: boolean, needAudio?: boolean, needEmptyTracks?: boolean, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
87
89
  /**
88
90
  * Запрашивает трансляцию экрана пользователя с опциональным захватом звука
89
91
  */
90
- function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean): Promise<MediaStream>;
92
+ function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
91
93
  /**
92
94
  * Запрашивает камеру пользователя
93
95
  *
94
96
  * @param deviceId ID устройства
95
97
  * @param resolution Размеры видео
96
98
  */
97
- function getUserVideo(deviceId?: string, resolution?: IVideoDimentions): Promise<MediaStream>;
99
+ function getUserVideo(deviceId?: string, resolution?: IVideoDimentions, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
98
100
  /**
99
101
  * Запрашивает микрофон пользователя
100
102
  *
101
103
  * @param deviceId ID устройства
102
104
  */
103
- function getUserAudio(deviceId?: string): Promise<MediaStream>;
105
+ function getUserAudio(deviceId?: string, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
104
106
  /**
105
107
  * Устанавливает размер видео в стриме
106
108
  *
@@ -1,4 +1,4 @@
1
- import { TransportTopology } from '../classes/transport/Transport';
1
+ import TransportTopology from '../enums/TransportTopology';
2
2
  import CallDirection from '../enums/CallDirection';
3
3
  import CallType from '../enums/CallType';
4
4
  import ConversationFeature from '../enums/ConversationFeature';
@@ -31,6 +31,7 @@ export interface FastStartParams {
31
31
  conversationId: string;
32
32
  internalParams: string;
33
33
  externalIds?: ExternalId[];
34
+ payload: string;
34
35
  opponentType: CallType;
35
36
  mediaOptions: MediaOption[];
36
37
  joiningAllowed?: boolean;