livekit-client 0.17.2 → 0.17.5

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 (41) hide show
  1. package/dist/api/SignalClient.d.ts +2 -1
  2. package/dist/api/SignalClient.js +6 -1
  3. package/dist/api/SignalClient.js.map +1 -1
  4. package/dist/proto/google/protobuf/timestamp.d.ts +132 -0
  5. package/dist/proto/google/protobuf/timestamp.js +108 -0
  6. package/dist/proto/google/protobuf/timestamp.js.map +1 -0
  7. package/dist/proto/livekit_models.d.ts +596 -16
  8. package/dist/proto/livekit_models.js +1012 -642
  9. package/dist/proto/livekit_models.js.map +1 -1
  10. package/dist/proto/livekit_rtc.d.ts +3416 -29
  11. package/dist/proto/livekit_rtc.js +830 -1210
  12. package/dist/proto/livekit_rtc.js.map +1 -1
  13. package/dist/room/Room.d.ts +2 -1
  14. package/dist/room/Room.js +16 -1
  15. package/dist/room/Room.js.map +1 -1
  16. package/dist/room/events.d.ts +12 -2
  17. package/dist/room/events.js +10 -0
  18. package/dist/room/events.js.map +1 -1
  19. package/dist/room/participant/LocalParticipant.d.ts +4 -1
  20. package/dist/room/participant/LocalParticipant.js +18 -0
  21. package/dist/room/participant/LocalParticipant.js.map +1 -1
  22. package/dist/room/participant/Participant.d.ts +5 -1
  23. package/dist/room/participant/Participant.js +15 -1
  24. package/dist/room/participant/Participant.js.map +1 -1
  25. package/dist/room/track/Track.js +10 -3
  26. package/dist/room/track/Track.js.map +1 -1
  27. package/dist/room/track/options.d.ts +1 -1
  28. package/dist/version.d.ts +2 -2
  29. package/dist/version.js +2 -2
  30. package/package.json +2 -2
  31. package/src/api/SignalClient.ts +8 -1
  32. package/src/proto/google/protobuf/timestamp.ts +232 -0
  33. package/src/proto/livekit_models.ts +1134 -570
  34. package/src/proto/livekit_rtc.ts +834 -1135
  35. package/src/room/Room.ts +30 -9
  36. package/src/room/events.ts +12 -0
  37. package/src/room/participant/LocalParticipant.ts +25 -2
  38. package/src/room/participant/Participant.ts +22 -2
  39. package/src/room/track/Track.ts +10 -4
  40. package/src/room/track/options.ts +1 -1
  41. package/src/version.ts +2 -2
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable */
2
2
  import Long from "long";
3
- import _m0 from "protobufjs/minimal";
3
+ import * as _m0 from "protobufjs/minimal";
4
+ import { Timestamp } from "./google/protobuf/timestamp";
4
5
 
5
6
  export const protobufPackage = "livekit";
6
7
 
@@ -230,6 +231,19 @@ export interface Codec {
230
231
  fmtpLine: string;
231
232
  }
232
233
 
234
+ export interface ParticipantPermission {
235
+ /** allow participant to subscribe to other tracks in the room */
236
+ canSubscribe: boolean;
237
+ /** allow participant to publish new tracks to room */
238
+ canPublish: boolean;
239
+ /** allow participant to publish data */
240
+ canPublishData: boolean;
241
+ /** indicates that it's hidden to others */
242
+ hidden: boolean;
243
+ /** indicates it's a recorder instance */
244
+ recorder: boolean;
245
+ }
246
+
233
247
  export interface ParticipantInfo {
234
248
  sid: string;
235
249
  identity: string;
@@ -238,10 +252,9 @@ export interface ParticipantInfo {
238
252
  metadata: string;
239
253
  /** timestamp when participant joined room, in seconds */
240
254
  joinedAt: number;
241
- hidden: boolean;
242
- recorder: boolean;
243
255
  name: string;
244
256
  version: number;
257
+ permission?: ParticipantPermission;
245
258
  }
246
259
 
247
260
  export enum ParticipantInfo_State {
@@ -483,17 +496,64 @@ export interface VideoConfiguration {
483
496
  hardwareEncoder: ClientConfigSetting;
484
497
  }
485
498
 
486
- const baseRoom: object = {
487
- sid: "",
488
- name: "",
489
- emptyTimeout: 0,
490
- maxParticipants: 0,
491
- creationTime: 0,
492
- turnPassword: "",
493
- metadata: "",
494
- numParticipants: 0,
495
- activeRecording: false,
496
- };
499
+ export interface RTPStats {
500
+ startTime?: Date;
501
+ endTime?: Date;
502
+ duration: number;
503
+ packets: number;
504
+ packetRate: number;
505
+ bytes: number;
506
+ bitrate: number;
507
+ packetsLost: number;
508
+ packetLossRate: number;
509
+ packetLossPercentage: number;
510
+ packetsDuplicate: number;
511
+ packetDuplicateRate: number;
512
+ bytesDuplicate: number;
513
+ bitrateDuplicate: number;
514
+ packetsPadding: number;
515
+ packetPaddingRate: number;
516
+ bytesPadding: number;
517
+ bitratePadding: number;
518
+ packetsOutOfOrder: number;
519
+ frames: number;
520
+ frameRate: number;
521
+ jitterCurrent: number;
522
+ jitterMax: number;
523
+ gapHistogram: { [key: number]: number };
524
+ nacks: number;
525
+ nackMisses: number;
526
+ plis: number;
527
+ lastPli?: Date;
528
+ firs: number;
529
+ lastFir?: Date;
530
+ rttCurrent: number;
531
+ rttMax: number;
532
+ keyFrames: number;
533
+ lastKeyFrame?: Date;
534
+ layerLockPlis: number;
535
+ lastLayerLockPli?: Date;
536
+ }
537
+
538
+ export interface RTPStats_GapHistogramEntry {
539
+ key: number;
540
+ value: number;
541
+ }
542
+
543
+ function createBaseRoom(): Room {
544
+ return {
545
+ sid: "",
546
+ name: "",
547
+ emptyTimeout: 0,
548
+ maxParticipants: 0,
549
+ creationTime: 0,
550
+ turnPassword: "",
551
+ enabledCodecs: [],
552
+ metadata: "",
553
+ numParticipants: 0,
554
+ activeRecording: false,
555
+ };
556
+ }
497
557
 
498
558
  export const Room = {
499
559
  encode(message: Room, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
@@ -533,8 +593,7 @@ export const Room = {
533
593
  decode(input: _m0.Reader | Uint8Array, length?: number): Room {
534
594
  const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
535
595
  let end = length === undefined ? reader.len : reader.pos + length;
536
- const message = { ...baseRoom } as Room;
537
- message.enabledCodecs = [];
596
+ const message = createBaseRoom();
538
597
  while (reader.pos < end) {
539
598
  const tag = reader.uint32();
540
599
  switch (tag >>> 3) {
@@ -577,68 +636,32 @@ export const Room = {
577
636
  },
578
637
 
579
638
  fromJSON(object: any): Room {
580
- const message = { ...baseRoom } as Room;
581
- message.enabledCodecs = [];
582
- if (object.sid !== undefined && object.sid !== null) {
583
- message.sid = String(object.sid);
584
- } else {
585
- message.sid = "";
586
- }
587
- if (object.name !== undefined && object.name !== null) {
588
- message.name = String(object.name);
589
- } else {
590
- message.name = "";
591
- }
592
- if (object.emptyTimeout !== undefined && object.emptyTimeout !== null) {
593
- message.emptyTimeout = Number(object.emptyTimeout);
594
- } else {
595
- message.emptyTimeout = 0;
596
- }
597
- if (
598
- object.maxParticipants !== undefined &&
599
- object.maxParticipants !== null
600
- ) {
601
- message.maxParticipants = Number(object.maxParticipants);
602
- } else {
603
- message.maxParticipants = 0;
604
- }
605
- if (object.creationTime !== undefined && object.creationTime !== null) {
606
- message.creationTime = Number(object.creationTime);
607
- } else {
608
- message.creationTime = 0;
609
- }
610
- if (object.turnPassword !== undefined && object.turnPassword !== null) {
611
- message.turnPassword = String(object.turnPassword);
612
- } else {
613
- message.turnPassword = "";
614
- }
615
- if (object.enabledCodecs !== undefined && object.enabledCodecs !== null) {
616
- for (const e of object.enabledCodecs) {
617
- message.enabledCodecs.push(Codec.fromJSON(e));
618
- }
619
- }
620
- if (object.metadata !== undefined && object.metadata !== null) {
621
- message.metadata = String(object.metadata);
622
- } else {
623
- message.metadata = "";
624
- }
625
- if (
626
- object.numParticipants !== undefined &&
627
- object.numParticipants !== null
628
- ) {
629
- message.numParticipants = Number(object.numParticipants);
630
- } else {
631
- message.numParticipants = 0;
632
- }
633
- if (
634
- object.activeRecording !== undefined &&
635
- object.activeRecording !== null
636
- ) {
637
- message.activeRecording = Boolean(object.activeRecording);
638
- } else {
639
- message.activeRecording = false;
640
- }
641
- return message;
639
+ return {
640
+ sid: isSet(object.sid) ? String(object.sid) : "",
641
+ name: isSet(object.name) ? String(object.name) : "",
642
+ emptyTimeout: isSet(object.emptyTimeout)
643
+ ? Number(object.emptyTimeout)
644
+ : 0,
645
+ maxParticipants: isSet(object.maxParticipants)
646
+ ? Number(object.maxParticipants)
647
+ : 0,
648
+ creationTime: isSet(object.creationTime)
649
+ ? Number(object.creationTime)
650
+ : 0,
651
+ turnPassword: isSet(object.turnPassword)
652
+ ? String(object.turnPassword)
653
+ : "",
654
+ enabledCodecs: Array.isArray(object?.enabledCodecs)
655
+ ? object.enabledCodecs.map((e: any) => Codec.fromJSON(e))
656
+ : [],
657
+ metadata: isSet(object.metadata) ? String(object.metadata) : "",
658
+ numParticipants: isSet(object.numParticipants)
659
+ ? Number(object.numParticipants)
660
+ : 0,
661
+ activeRecording: isSet(object.activeRecording)
662
+ ? Boolean(object.activeRecording)
663
+ : false,
664
+ };
642
665
  },
643
666
 
644
667
  toJSON(message: Room): unknown {
@@ -646,11 +669,11 @@ export const Room = {
646
669
  message.sid !== undefined && (obj.sid = message.sid);
647
670
  message.name !== undefined && (obj.name = message.name);
648
671
  message.emptyTimeout !== undefined &&
649
- (obj.emptyTimeout = message.emptyTimeout);
672
+ (obj.emptyTimeout = Math.round(message.emptyTimeout));
650
673
  message.maxParticipants !== undefined &&
651
- (obj.maxParticipants = message.maxParticipants);
674
+ (obj.maxParticipants = Math.round(message.maxParticipants));
652
675
  message.creationTime !== undefined &&
653
- (obj.creationTime = message.creationTime);
676
+ (obj.creationTime = Math.round(message.creationTime));
654
677
  message.turnPassword !== undefined &&
655
678
  (obj.turnPassword = message.turnPassword);
656
679
  if (message.enabledCodecs) {
@@ -662,26 +685,22 @@ export const Room = {
662
685
  }
663
686
  message.metadata !== undefined && (obj.metadata = message.metadata);
664
687
  message.numParticipants !== undefined &&
665
- (obj.numParticipants = message.numParticipants);
688
+ (obj.numParticipants = Math.round(message.numParticipants));
666
689
  message.activeRecording !== undefined &&
667
690
  (obj.activeRecording = message.activeRecording);
668
691
  return obj;
669
692
  },
670
693
 
671
- fromPartial(object: DeepPartial<Room>): Room {
672
- const message = { ...baseRoom } as Room;
694
+ fromPartial<I extends Exact<DeepPartial<Room>, I>>(object: I): Room {
695
+ const message = createBaseRoom();
673
696
  message.sid = object.sid ?? "";
674
697
  message.name = object.name ?? "";
675
698
  message.emptyTimeout = object.emptyTimeout ?? 0;
676
699
  message.maxParticipants = object.maxParticipants ?? 0;
677
700
  message.creationTime = object.creationTime ?? 0;
678
701
  message.turnPassword = object.turnPassword ?? "";
679
- message.enabledCodecs = [];
680
- if (object.enabledCodecs !== undefined && object.enabledCodecs !== null) {
681
- for (const e of object.enabledCodecs) {
682
- message.enabledCodecs.push(Codec.fromPartial(e));
683
- }
684
- }
702
+ message.enabledCodecs =
703
+ object.enabledCodecs?.map((e) => Codec.fromPartial(e)) || [];
685
704
  message.metadata = object.metadata ?? "";
686
705
  message.numParticipants = object.numParticipants ?? 0;
687
706
  message.activeRecording = object.activeRecording ?? false;
@@ -689,7 +708,9 @@ export const Room = {
689
708
  },
690
709
  };
691
710
 
692
- const baseCodec: object = { mime: "", fmtpLine: "" };
711
+ function createBaseCodec(): Codec {
712
+ return { mime: "", fmtpLine: "" };
713
+ }
693
714
 
694
715
  export const Codec = {
695
716
  encode(message: Codec, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
@@ -705,7 +726,7 @@ export const Codec = {
705
726
  decode(input: _m0.Reader | Uint8Array, length?: number): Codec {
706
727
  const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
707
728
  let end = length === undefined ? reader.len : reader.pos + length;
708
- const message = { ...baseCodec } as Codec;
729
+ const message = createBaseCodec();
709
730
  while (reader.pos < end) {
710
731
  const tag = reader.uint32();
711
732
  switch (tag >>> 3) {
@@ -724,18 +745,10 @@ export const Codec = {
724
745
  },
725
746
 
726
747
  fromJSON(object: any): Codec {
727
- const message = { ...baseCodec } as Codec;
728
- if (object.mime !== undefined && object.mime !== null) {
729
- message.mime = String(object.mime);
730
- } else {
731
- message.mime = "";
732
- }
733
- if (object.fmtpLine !== undefined && object.fmtpLine !== null) {
734
- message.fmtpLine = String(object.fmtpLine);
735
- } else {
736
- message.fmtpLine = "";
737
- }
738
- return message;
748
+ return {
749
+ mime: isSet(object.mime) ? String(object.mime) : "",
750
+ fmtpLine: isSet(object.fmtpLine) ? String(object.fmtpLine) : "",
751
+ };
739
752
  },
740
753
 
741
754
  toJSON(message: Codec): unknown {
@@ -745,26 +758,133 @@ export const Codec = {
745
758
  return obj;
746
759
  },
747
760
 
748
- fromPartial(object: DeepPartial<Codec>): Codec {
749
- const message = { ...baseCodec } as Codec;
761
+ fromPartial<I extends Exact<DeepPartial<Codec>, I>>(object: I): Codec {
762
+ const message = createBaseCodec();
750
763
  message.mime = object.mime ?? "";
751
764
  message.fmtpLine = object.fmtpLine ?? "";
752
765
  return message;
753
766
  },
754
767
  };
755
768
 
756
- const baseParticipantInfo: object = {
757
- sid: "",
758
- identity: "",
759
- state: 0,
760
- metadata: "",
761
- joinedAt: 0,
762
- hidden: false,
763
- recorder: false,
764
- name: "",
765
- version: 0,
769
+ function createBaseParticipantPermission(): ParticipantPermission {
770
+ return {
771
+ canSubscribe: false,
772
+ canPublish: false,
773
+ canPublishData: false,
774
+ hidden: false,
775
+ recorder: false,
776
+ };
777
+ }
778
+
779
+ export const ParticipantPermission = {
780
+ encode(
781
+ message: ParticipantPermission,
782
+ writer: _m0.Writer = _m0.Writer.create()
783
+ ): _m0.Writer {
784
+ if (message.canSubscribe === true) {
785
+ writer.uint32(8).bool(message.canSubscribe);
786
+ }
787
+ if (message.canPublish === true) {
788
+ writer.uint32(16).bool(message.canPublish);
789
+ }
790
+ if (message.canPublishData === true) {
791
+ writer.uint32(24).bool(message.canPublishData);
792
+ }
793
+ if (message.hidden === true) {
794
+ writer.uint32(56).bool(message.hidden);
795
+ }
796
+ if (message.recorder === true) {
797
+ writer.uint32(64).bool(message.recorder);
798
+ }
799
+ return writer;
800
+ },
801
+
802
+ decode(
803
+ input: _m0.Reader | Uint8Array,
804
+ length?: number
805
+ ): ParticipantPermission {
806
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
807
+ let end = length === undefined ? reader.len : reader.pos + length;
808
+ const message = createBaseParticipantPermission();
809
+ while (reader.pos < end) {
810
+ const tag = reader.uint32();
811
+ switch (tag >>> 3) {
812
+ case 1:
813
+ message.canSubscribe = reader.bool();
814
+ break;
815
+ case 2:
816
+ message.canPublish = reader.bool();
817
+ break;
818
+ case 3:
819
+ message.canPublishData = reader.bool();
820
+ break;
821
+ case 7:
822
+ message.hidden = reader.bool();
823
+ break;
824
+ case 8:
825
+ message.recorder = reader.bool();
826
+ break;
827
+ default:
828
+ reader.skipType(tag & 7);
829
+ break;
830
+ }
831
+ }
832
+ return message;
833
+ },
834
+
835
+ fromJSON(object: any): ParticipantPermission {
836
+ return {
837
+ canSubscribe: isSet(object.canSubscribe)
838
+ ? Boolean(object.canSubscribe)
839
+ : false,
840
+ canPublish: isSet(object.canPublish) ? Boolean(object.canPublish) : false,
841
+ canPublishData: isSet(object.canPublishData)
842
+ ? Boolean(object.canPublishData)
843
+ : false,
844
+ hidden: isSet(object.hidden) ? Boolean(object.hidden) : false,
845
+ recorder: isSet(object.recorder) ? Boolean(object.recorder) : false,
846
+ };
847
+ },
848
+
849
+ toJSON(message: ParticipantPermission): unknown {
850
+ const obj: any = {};
851
+ message.canSubscribe !== undefined &&
852
+ (obj.canSubscribe = message.canSubscribe);
853
+ message.canPublish !== undefined && (obj.canPublish = message.canPublish);
854
+ message.canPublishData !== undefined &&
855
+ (obj.canPublishData = message.canPublishData);
856
+ message.hidden !== undefined && (obj.hidden = message.hidden);
857
+ message.recorder !== undefined && (obj.recorder = message.recorder);
858
+ return obj;
859
+ },
860
+
861
+ fromPartial<I extends Exact<DeepPartial<ParticipantPermission>, I>>(
862
+ object: I
863
+ ): ParticipantPermission {
864
+ const message = createBaseParticipantPermission();
865
+ message.canSubscribe = object.canSubscribe ?? false;
866
+ message.canPublish = object.canPublish ?? false;
867
+ message.canPublishData = object.canPublishData ?? false;
868
+ message.hidden = object.hidden ?? false;
869
+ message.recorder = object.recorder ?? false;
870
+ return message;
871
+ },
766
872
  };
767
873
 
874
+ function createBaseParticipantInfo(): ParticipantInfo {
875
+ return {
876
+ sid: "",
877
+ identity: "",
878
+ state: 0,
879
+ tracks: [],
880
+ metadata: "",
881
+ joinedAt: 0,
882
+ name: "",
883
+ version: 0,
884
+ permission: undefined,
885
+ };
886
+ }
887
+
768
888
  export const ParticipantInfo = {
769
889
  encode(
770
890
  message: ParticipantInfo,
@@ -788,26 +908,25 @@ export const ParticipantInfo = {
788
908
  if (message.joinedAt !== 0) {
789
909
  writer.uint32(48).int64(message.joinedAt);
790
910
  }
791
- if (message.hidden === true) {
792
- writer.uint32(56).bool(message.hidden);
793
- }
794
- if (message.recorder === true) {
795
- writer.uint32(64).bool(message.recorder);
796
- }
797
911
  if (message.name !== "") {
798
912
  writer.uint32(74).string(message.name);
799
913
  }
800
914
  if (message.version !== 0) {
801
915
  writer.uint32(80).uint32(message.version);
802
916
  }
917
+ if (message.permission !== undefined) {
918
+ ParticipantPermission.encode(
919
+ message.permission,
920
+ writer.uint32(90).fork()
921
+ ).ldelim();
922
+ }
803
923
  return writer;
804
924
  },
805
925
 
806
926
  decode(input: _m0.Reader | Uint8Array, length?: number): ParticipantInfo {
807
927
  const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
808
928
  let end = length === undefined ? reader.len : reader.pos + length;
809
- const message = { ...baseParticipantInfo } as ParticipantInfo;
810
- message.tracks = [];
929
+ const message = createBaseParticipantInfo();
811
930
  while (reader.pos < end) {
812
931
  const tag = reader.uint32();
813
932
  switch (tag >>> 3) {
@@ -829,18 +948,18 @@ export const ParticipantInfo = {
829
948
  case 6:
830
949
  message.joinedAt = longToNumber(reader.int64() as Long);
831
950
  break;
832
- case 7:
833
- message.hidden = reader.bool();
834
- break;
835
- case 8:
836
- message.recorder = reader.bool();
837
- break;
838
951
  case 9:
839
952
  message.name = reader.string();
840
953
  break;
841
954
  case 10:
842
955
  message.version = reader.uint32();
843
956
  break;
957
+ case 11:
958
+ message.permission = ParticipantPermission.decode(
959
+ reader,
960
+ reader.uint32()
961
+ );
962
+ break;
844
963
  default:
845
964
  reader.skipType(tag & 7);
846
965
  break;
@@ -850,59 +969,23 @@ export const ParticipantInfo = {
850
969
  },
851
970
 
852
971
  fromJSON(object: any): ParticipantInfo {
853
- const message = { ...baseParticipantInfo } as ParticipantInfo;
854
- message.tracks = [];
855
- if (object.sid !== undefined && object.sid !== null) {
856
- message.sid = String(object.sid);
857
- } else {
858
- message.sid = "";
859
- }
860
- if (object.identity !== undefined && object.identity !== null) {
861
- message.identity = String(object.identity);
862
- } else {
863
- message.identity = "";
864
- }
865
- if (object.state !== undefined && object.state !== null) {
866
- message.state = participantInfo_StateFromJSON(object.state);
867
- } else {
868
- message.state = 0;
869
- }
870
- if (object.tracks !== undefined && object.tracks !== null) {
871
- for (const e of object.tracks) {
872
- message.tracks.push(TrackInfo.fromJSON(e));
873
- }
874
- }
875
- if (object.metadata !== undefined && object.metadata !== null) {
876
- message.metadata = String(object.metadata);
877
- } else {
878
- message.metadata = "";
879
- }
880
- if (object.joinedAt !== undefined && object.joinedAt !== null) {
881
- message.joinedAt = Number(object.joinedAt);
882
- } else {
883
- message.joinedAt = 0;
884
- }
885
- if (object.hidden !== undefined && object.hidden !== null) {
886
- message.hidden = Boolean(object.hidden);
887
- } else {
888
- message.hidden = false;
889
- }
890
- if (object.recorder !== undefined && object.recorder !== null) {
891
- message.recorder = Boolean(object.recorder);
892
- } else {
893
- message.recorder = false;
894
- }
895
- if (object.name !== undefined && object.name !== null) {
896
- message.name = String(object.name);
897
- } else {
898
- message.name = "";
899
- }
900
- if (object.version !== undefined && object.version !== null) {
901
- message.version = Number(object.version);
902
- } else {
903
- message.version = 0;
904
- }
905
- return message;
972
+ return {
973
+ sid: isSet(object.sid) ? String(object.sid) : "",
974
+ identity: isSet(object.identity) ? String(object.identity) : "",
975
+ state: isSet(object.state)
976
+ ? participantInfo_StateFromJSON(object.state)
977
+ : 0,
978
+ tracks: Array.isArray(object?.tracks)
979
+ ? object.tracks.map((e: any) => TrackInfo.fromJSON(e))
980
+ : [],
981
+ metadata: isSet(object.metadata) ? String(object.metadata) : "",
982
+ joinedAt: isSet(object.joinedAt) ? Number(object.joinedAt) : 0,
983
+ name: isSet(object.name) ? String(object.name) : "",
984
+ version: isSet(object.version) ? Number(object.version) : 0,
985
+ permission: isSet(object.permission)
986
+ ? ParticipantPermission.fromJSON(object.permission)
987
+ : undefined,
988
+ };
906
989
  },
907
990
 
908
991
  toJSON(message: ParticipantInfo): unknown {
@@ -919,48 +1002,54 @@ export const ParticipantInfo = {
919
1002
  obj.tracks = [];
920
1003
  }
921
1004
  message.metadata !== undefined && (obj.metadata = message.metadata);
922
- message.joinedAt !== undefined && (obj.joinedAt = message.joinedAt);
923
- message.hidden !== undefined && (obj.hidden = message.hidden);
924
- message.recorder !== undefined && (obj.recorder = message.recorder);
1005
+ message.joinedAt !== undefined &&
1006
+ (obj.joinedAt = Math.round(message.joinedAt));
925
1007
  message.name !== undefined && (obj.name = message.name);
926
- message.version !== undefined && (obj.version = message.version);
1008
+ message.version !== undefined &&
1009
+ (obj.version = Math.round(message.version));
1010
+ message.permission !== undefined &&
1011
+ (obj.permission = message.permission
1012
+ ? ParticipantPermission.toJSON(message.permission)
1013
+ : undefined);
927
1014
  return obj;
928
1015
  },
929
1016
 
930
- fromPartial(object: DeepPartial<ParticipantInfo>): ParticipantInfo {
931
- const message = { ...baseParticipantInfo } as ParticipantInfo;
1017
+ fromPartial<I extends Exact<DeepPartial<ParticipantInfo>, I>>(
1018
+ object: I
1019
+ ): ParticipantInfo {
1020
+ const message = createBaseParticipantInfo();
932
1021
  message.sid = object.sid ?? "";
933
1022
  message.identity = object.identity ?? "";
934
1023
  message.state = object.state ?? 0;
935
- message.tracks = [];
936
- if (object.tracks !== undefined && object.tracks !== null) {
937
- for (const e of object.tracks) {
938
- message.tracks.push(TrackInfo.fromPartial(e));
939
- }
940
- }
1024
+ message.tracks = object.tracks?.map((e) => TrackInfo.fromPartial(e)) || [];
941
1025
  message.metadata = object.metadata ?? "";
942
1026
  message.joinedAt = object.joinedAt ?? 0;
943
- message.hidden = object.hidden ?? false;
944
- message.recorder = object.recorder ?? false;
945
1027
  message.name = object.name ?? "";
946
1028
  message.version = object.version ?? 0;
1029
+ message.permission =
1030
+ object.permission !== undefined && object.permission !== null
1031
+ ? ParticipantPermission.fromPartial(object.permission)
1032
+ : undefined;
947
1033
  return message;
948
1034
  },
949
1035
  };
950
1036
 
951
- const baseTrackInfo: object = {
952
- sid: "",
953
- type: 0,
954
- name: "",
955
- muted: false,
956
- width: 0,
957
- height: 0,
958
- simulcast: false,
959
- disableDtx: false,
960
- source: 0,
961
- mimeType: "",
962
- mid: "",
963
- };
1037
+ function createBaseTrackInfo(): TrackInfo {
1038
+ return {
1039
+ sid: "",
1040
+ type: 0,
1041
+ name: "",
1042
+ muted: false,
1043
+ width: 0,
1044
+ height: 0,
1045
+ simulcast: false,
1046
+ disableDtx: false,
1047
+ source: 0,
1048
+ layers: [],
1049
+ mimeType: "",
1050
+ mid: "",
1051
+ };
1052
+ }
964
1053
 
965
1054
  export const TrackInfo = {
966
1055
  encode(
@@ -1009,8 +1098,7 @@ export const TrackInfo = {
1009
1098
  decode(input: _m0.Reader | Uint8Array, length?: number): TrackInfo {
1010
1099
  const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1011
1100
  let end = length === undefined ? reader.len : reader.pos + length;
1012
- const message = { ...baseTrackInfo } as TrackInfo;
1013
- message.layers = [];
1101
+ const message = createBaseTrackInfo();
1014
1102
  while (reader.pos < end) {
1015
1103
  const tag = reader.uint32();
1016
1104
  switch (tag >>> 3) {
@@ -1059,69 +1147,22 @@ export const TrackInfo = {
1059
1147
  },
1060
1148
 
1061
1149
  fromJSON(object: any): TrackInfo {
1062
- const message = { ...baseTrackInfo } as TrackInfo;
1063
- message.layers = [];
1064
- if (object.sid !== undefined && object.sid !== null) {
1065
- message.sid = String(object.sid);
1066
- } else {
1067
- message.sid = "";
1068
- }
1069
- if (object.type !== undefined && object.type !== null) {
1070
- message.type = trackTypeFromJSON(object.type);
1071
- } else {
1072
- message.type = 0;
1073
- }
1074
- if (object.name !== undefined && object.name !== null) {
1075
- message.name = String(object.name);
1076
- } else {
1077
- message.name = "";
1078
- }
1079
- if (object.muted !== undefined && object.muted !== null) {
1080
- message.muted = Boolean(object.muted);
1081
- } else {
1082
- message.muted = false;
1083
- }
1084
- if (object.width !== undefined && object.width !== null) {
1085
- message.width = Number(object.width);
1086
- } else {
1087
- message.width = 0;
1088
- }
1089
- if (object.height !== undefined && object.height !== null) {
1090
- message.height = Number(object.height);
1091
- } else {
1092
- message.height = 0;
1093
- }
1094
- if (object.simulcast !== undefined && object.simulcast !== null) {
1095
- message.simulcast = Boolean(object.simulcast);
1096
- } else {
1097
- message.simulcast = false;
1098
- }
1099
- if (object.disableDtx !== undefined && object.disableDtx !== null) {
1100
- message.disableDtx = Boolean(object.disableDtx);
1101
- } else {
1102
- message.disableDtx = false;
1103
- }
1104
- if (object.source !== undefined && object.source !== null) {
1105
- message.source = trackSourceFromJSON(object.source);
1106
- } else {
1107
- message.source = 0;
1108
- }
1109
- if (object.layers !== undefined && object.layers !== null) {
1110
- for (const e of object.layers) {
1111
- message.layers.push(VideoLayer.fromJSON(e));
1112
- }
1113
- }
1114
- if (object.mimeType !== undefined && object.mimeType !== null) {
1115
- message.mimeType = String(object.mimeType);
1116
- } else {
1117
- message.mimeType = "";
1118
- }
1119
- if (object.mid !== undefined && object.mid !== null) {
1120
- message.mid = String(object.mid);
1121
- } else {
1122
- message.mid = "";
1123
- }
1124
- return message;
1150
+ return {
1151
+ sid: isSet(object.sid) ? String(object.sid) : "",
1152
+ type: isSet(object.type) ? trackTypeFromJSON(object.type) : 0,
1153
+ name: isSet(object.name) ? String(object.name) : "",
1154
+ muted: isSet(object.muted) ? Boolean(object.muted) : false,
1155
+ width: isSet(object.width) ? Number(object.width) : 0,
1156
+ height: isSet(object.height) ? Number(object.height) : 0,
1157
+ simulcast: isSet(object.simulcast) ? Boolean(object.simulcast) : false,
1158
+ disableDtx: isSet(object.disableDtx) ? Boolean(object.disableDtx) : false,
1159
+ source: isSet(object.source) ? trackSourceFromJSON(object.source) : 0,
1160
+ layers: Array.isArray(object?.layers)
1161
+ ? object.layers.map((e: any) => VideoLayer.fromJSON(e))
1162
+ : [],
1163
+ mimeType: isSet(object.mimeType) ? String(object.mimeType) : "",
1164
+ mid: isSet(object.mid) ? String(object.mid) : "",
1165
+ };
1125
1166
  },
1126
1167
 
1127
1168
  toJSON(message: TrackInfo): unknown {
@@ -1130,8 +1171,8 @@ export const TrackInfo = {
1130
1171
  message.type !== undefined && (obj.type = trackTypeToJSON(message.type));
1131
1172
  message.name !== undefined && (obj.name = message.name);
1132
1173
  message.muted !== undefined && (obj.muted = message.muted);
1133
- message.width !== undefined && (obj.width = message.width);
1134
- message.height !== undefined && (obj.height = message.height);
1174
+ message.width !== undefined && (obj.width = Math.round(message.width));
1175
+ message.height !== undefined && (obj.height = Math.round(message.height));
1135
1176
  message.simulcast !== undefined && (obj.simulcast = message.simulcast);
1136
1177
  message.disableDtx !== undefined && (obj.disableDtx = message.disableDtx);
1137
1178
  message.source !== undefined &&
@@ -1148,8 +1189,10 @@ export const TrackInfo = {
1148
1189
  return obj;
1149
1190
  },
1150
1191
 
1151
- fromPartial(object: DeepPartial<TrackInfo>): TrackInfo {
1152
- const message = { ...baseTrackInfo } as TrackInfo;
1192
+ fromPartial<I extends Exact<DeepPartial<TrackInfo>, I>>(
1193
+ object: I
1194
+ ): TrackInfo {
1195
+ const message = createBaseTrackInfo();
1153
1196
  message.sid = object.sid ?? "";
1154
1197
  message.type = object.type ?? 0;
1155
1198
  message.name = object.name ?? "";
@@ -1159,25 +1202,16 @@ export const TrackInfo = {
1159
1202
  message.simulcast = object.simulcast ?? false;
1160
1203
  message.disableDtx = object.disableDtx ?? false;
1161
1204
  message.source = object.source ?? 0;
1162
- message.layers = [];
1163
- if (object.layers !== undefined && object.layers !== null) {
1164
- for (const e of object.layers) {
1165
- message.layers.push(VideoLayer.fromPartial(e));
1166
- }
1167
- }
1205
+ message.layers = object.layers?.map((e) => VideoLayer.fromPartial(e)) || [];
1168
1206
  message.mimeType = object.mimeType ?? "";
1169
1207
  message.mid = object.mid ?? "";
1170
1208
  return message;
1171
1209
  },
1172
1210
  };
1173
1211
 
1174
- const baseVideoLayer: object = {
1175
- quality: 0,
1176
- width: 0,
1177
- height: 0,
1178
- bitrate: 0,
1179
- ssrc: 0,
1180
- };
1212
+ function createBaseVideoLayer(): VideoLayer {
1213
+ return { quality: 0, width: 0, height: 0, bitrate: 0, ssrc: 0 };
1214
+ }
1181
1215
 
1182
1216
  export const VideoLayer = {
1183
1217
  encode(
@@ -1205,7 +1239,7 @@ export const VideoLayer = {
1205
1239
  decode(input: _m0.Reader | Uint8Array, length?: number): VideoLayer {
1206
1240
  const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1207
1241
  let end = length === undefined ? reader.len : reader.pos + length;
1208
- const message = { ...baseVideoLayer } as VideoLayer;
1242
+ const message = createBaseVideoLayer();
1209
1243
  while (reader.pos < end) {
1210
1244
  const tag = reader.uint32();
1211
1245
  switch (tag >>> 3) {
@@ -1233,48 +1267,31 @@ export const VideoLayer = {
1233
1267
  },
1234
1268
 
1235
1269
  fromJSON(object: any): VideoLayer {
1236
- const message = { ...baseVideoLayer } as VideoLayer;
1237
- if (object.quality !== undefined && object.quality !== null) {
1238
- message.quality = videoQualityFromJSON(object.quality);
1239
- } else {
1240
- message.quality = 0;
1241
- }
1242
- if (object.width !== undefined && object.width !== null) {
1243
- message.width = Number(object.width);
1244
- } else {
1245
- message.width = 0;
1246
- }
1247
- if (object.height !== undefined && object.height !== null) {
1248
- message.height = Number(object.height);
1249
- } else {
1250
- message.height = 0;
1251
- }
1252
- if (object.bitrate !== undefined && object.bitrate !== null) {
1253
- message.bitrate = Number(object.bitrate);
1254
- } else {
1255
- message.bitrate = 0;
1256
- }
1257
- if (object.ssrc !== undefined && object.ssrc !== null) {
1258
- message.ssrc = Number(object.ssrc);
1259
- } else {
1260
- message.ssrc = 0;
1261
- }
1262
- return message;
1270
+ return {
1271
+ quality: isSet(object.quality) ? videoQualityFromJSON(object.quality) : 0,
1272
+ width: isSet(object.width) ? Number(object.width) : 0,
1273
+ height: isSet(object.height) ? Number(object.height) : 0,
1274
+ bitrate: isSet(object.bitrate) ? Number(object.bitrate) : 0,
1275
+ ssrc: isSet(object.ssrc) ? Number(object.ssrc) : 0,
1276
+ };
1263
1277
  },
1264
1278
 
1265
1279
  toJSON(message: VideoLayer): unknown {
1266
1280
  const obj: any = {};
1267
1281
  message.quality !== undefined &&
1268
1282
  (obj.quality = videoQualityToJSON(message.quality));
1269
- message.width !== undefined && (obj.width = message.width);
1270
- message.height !== undefined && (obj.height = message.height);
1271
- message.bitrate !== undefined && (obj.bitrate = message.bitrate);
1272
- message.ssrc !== undefined && (obj.ssrc = message.ssrc);
1283
+ message.width !== undefined && (obj.width = Math.round(message.width));
1284
+ message.height !== undefined && (obj.height = Math.round(message.height));
1285
+ message.bitrate !== undefined &&
1286
+ (obj.bitrate = Math.round(message.bitrate));
1287
+ message.ssrc !== undefined && (obj.ssrc = Math.round(message.ssrc));
1273
1288
  return obj;
1274
1289
  },
1275
1290
 
1276
- fromPartial(object: DeepPartial<VideoLayer>): VideoLayer {
1277
- const message = { ...baseVideoLayer } as VideoLayer;
1291
+ fromPartial<I extends Exact<DeepPartial<VideoLayer>, I>>(
1292
+ object: I
1293
+ ): VideoLayer {
1294
+ const message = createBaseVideoLayer();
1278
1295
  message.quality = object.quality ?? 0;
1279
1296
  message.width = object.width ?? 0;
1280
1297
  message.height = object.height ?? 0;
@@ -1284,7 +1301,9 @@ export const VideoLayer = {
1284
1301
  },
1285
1302
  };
1286
1303
 
1287
- const baseDataPacket: object = { kind: 0 };
1304
+ function createBaseDataPacket(): DataPacket {
1305
+ return { kind: 0, user: undefined, speaker: undefined };
1306
+ }
1288
1307
 
1289
1308
  export const DataPacket = {
1290
1309
  encode(
@@ -1309,7 +1328,7 @@ export const DataPacket = {
1309
1328
  decode(input: _m0.Reader | Uint8Array, length?: number): DataPacket {
1310
1329
  const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1311
1330
  let end = length === undefined ? reader.len : reader.pos + length;
1312
- const message = { ...baseDataPacket } as DataPacket;
1331
+ const message = createBaseDataPacket();
1313
1332
  while (reader.pos < end) {
1314
1333
  const tag = reader.uint32();
1315
1334
  switch (tag >>> 3) {
@@ -1331,23 +1350,13 @@ export const DataPacket = {
1331
1350
  },
1332
1351
 
1333
1352
  fromJSON(object: any): DataPacket {
1334
- const message = { ...baseDataPacket } as DataPacket;
1335
- if (object.kind !== undefined && object.kind !== null) {
1336
- message.kind = dataPacket_KindFromJSON(object.kind);
1337
- } else {
1338
- message.kind = 0;
1339
- }
1340
- if (object.user !== undefined && object.user !== null) {
1341
- message.user = UserPacket.fromJSON(object.user);
1342
- } else {
1343
- message.user = undefined;
1344
- }
1345
- if (object.speaker !== undefined && object.speaker !== null) {
1346
- message.speaker = ActiveSpeakerUpdate.fromJSON(object.speaker);
1347
- } else {
1348
- message.speaker = undefined;
1349
- }
1350
- return message;
1353
+ return {
1354
+ kind: isSet(object.kind) ? dataPacket_KindFromJSON(object.kind) : 0,
1355
+ user: isSet(object.user) ? UserPacket.fromJSON(object.user) : undefined,
1356
+ speaker: isSet(object.speaker)
1357
+ ? ActiveSpeakerUpdate.fromJSON(object.speaker)
1358
+ : undefined,
1359
+ };
1351
1360
  },
1352
1361
 
1353
1362
  toJSON(message: DataPacket): unknown {
@@ -1363,24 +1372,26 @@ export const DataPacket = {
1363
1372
  return obj;
1364
1373
  },
1365
1374
 
1366
- fromPartial(object: DeepPartial<DataPacket>): DataPacket {
1367
- const message = { ...baseDataPacket } as DataPacket;
1375
+ fromPartial<I extends Exact<DeepPartial<DataPacket>, I>>(
1376
+ object: I
1377
+ ): DataPacket {
1378
+ const message = createBaseDataPacket();
1368
1379
  message.kind = object.kind ?? 0;
1369
- if (object.user !== undefined && object.user !== null) {
1370
- message.user = UserPacket.fromPartial(object.user);
1371
- } else {
1372
- message.user = undefined;
1373
- }
1374
- if (object.speaker !== undefined && object.speaker !== null) {
1375
- message.speaker = ActiveSpeakerUpdate.fromPartial(object.speaker);
1376
- } else {
1377
- message.speaker = undefined;
1378
- }
1380
+ message.user =
1381
+ object.user !== undefined && object.user !== null
1382
+ ? UserPacket.fromPartial(object.user)
1383
+ : undefined;
1384
+ message.speaker =
1385
+ object.speaker !== undefined && object.speaker !== null
1386
+ ? ActiveSpeakerUpdate.fromPartial(object.speaker)
1387
+ : undefined;
1379
1388
  return message;
1380
1389
  },
1381
1390
  };
1382
1391
 
1383
- const baseActiveSpeakerUpdate: object = {};
1392
+ function createBaseActiveSpeakerUpdate(): ActiveSpeakerUpdate {
1393
+ return { speakers: [] };
1394
+ }
1384
1395
 
1385
1396
  export const ActiveSpeakerUpdate = {
1386
1397
  encode(
@@ -1396,8 +1407,7 @@ export const ActiveSpeakerUpdate = {
1396
1407
  decode(input: _m0.Reader | Uint8Array, length?: number): ActiveSpeakerUpdate {
1397
1408
  const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1398
1409
  let end = length === undefined ? reader.len : reader.pos + length;
1399
- const message = { ...baseActiveSpeakerUpdate } as ActiveSpeakerUpdate;
1400
- message.speakers = [];
1410
+ const message = createBaseActiveSpeakerUpdate();
1401
1411
  while (reader.pos < end) {
1402
1412
  const tag = reader.uint32();
1403
1413
  switch (tag >>> 3) {
@@ -1413,14 +1423,11 @@ export const ActiveSpeakerUpdate = {
1413
1423
  },
1414
1424
 
1415
1425
  fromJSON(object: any): ActiveSpeakerUpdate {
1416
- const message = { ...baseActiveSpeakerUpdate } as ActiveSpeakerUpdate;
1417
- message.speakers = [];
1418
- if (object.speakers !== undefined && object.speakers !== null) {
1419
- for (const e of object.speakers) {
1420
- message.speakers.push(SpeakerInfo.fromJSON(e));
1421
- }
1422
- }
1423
- return message;
1426
+ return {
1427
+ speakers: Array.isArray(object?.speakers)
1428
+ ? object.speakers.map((e: any) => SpeakerInfo.fromJSON(e))
1429
+ : [],
1430
+ };
1424
1431
  },
1425
1432
 
1426
1433
  toJSON(message: ActiveSpeakerUpdate): unknown {
@@ -1435,19 +1442,19 @@ export const ActiveSpeakerUpdate = {
1435
1442
  return obj;
1436
1443
  },
1437
1444
 
1438
- fromPartial(object: DeepPartial<ActiveSpeakerUpdate>): ActiveSpeakerUpdate {
1439
- const message = { ...baseActiveSpeakerUpdate } as ActiveSpeakerUpdate;
1440
- message.speakers = [];
1441
- if (object.speakers !== undefined && object.speakers !== null) {
1442
- for (const e of object.speakers) {
1443
- message.speakers.push(SpeakerInfo.fromPartial(e));
1444
- }
1445
- }
1445
+ fromPartial<I extends Exact<DeepPartial<ActiveSpeakerUpdate>, I>>(
1446
+ object: I
1447
+ ): ActiveSpeakerUpdate {
1448
+ const message = createBaseActiveSpeakerUpdate();
1449
+ message.speakers =
1450
+ object.speakers?.map((e) => SpeakerInfo.fromPartial(e)) || [];
1446
1451
  return message;
1447
1452
  },
1448
1453
  };
1449
1454
 
1450
- const baseSpeakerInfo: object = { sid: "", level: 0, active: false };
1455
+ function createBaseSpeakerInfo(): SpeakerInfo {
1456
+ return { sid: "", level: 0, active: false };
1457
+ }
1451
1458
 
1452
1459
  export const SpeakerInfo = {
1453
1460
  encode(
@@ -1469,7 +1476,7 @@ export const SpeakerInfo = {
1469
1476
  decode(input: _m0.Reader | Uint8Array, length?: number): SpeakerInfo {
1470
1477
  const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1471
1478
  let end = length === undefined ? reader.len : reader.pos + length;
1472
- const message = { ...baseSpeakerInfo } as SpeakerInfo;
1479
+ const message = createBaseSpeakerInfo();
1473
1480
  while (reader.pos < end) {
1474
1481
  const tag = reader.uint32();
1475
1482
  switch (tag >>> 3) {
@@ -1491,23 +1498,11 @@ export const SpeakerInfo = {
1491
1498
  },
1492
1499
 
1493
1500
  fromJSON(object: any): SpeakerInfo {
1494
- const message = { ...baseSpeakerInfo } as SpeakerInfo;
1495
- if (object.sid !== undefined && object.sid !== null) {
1496
- message.sid = String(object.sid);
1497
- } else {
1498
- message.sid = "";
1499
- }
1500
- if (object.level !== undefined && object.level !== null) {
1501
- message.level = Number(object.level);
1502
- } else {
1503
- message.level = 0;
1504
- }
1505
- if (object.active !== undefined && object.active !== null) {
1506
- message.active = Boolean(object.active);
1507
- } else {
1508
- message.active = false;
1509
- }
1510
- return message;
1501
+ return {
1502
+ sid: isSet(object.sid) ? String(object.sid) : "",
1503
+ level: isSet(object.level) ? Number(object.level) : 0,
1504
+ active: isSet(object.active) ? Boolean(object.active) : false,
1505
+ };
1511
1506
  },
1512
1507
 
1513
1508
  toJSON(message: SpeakerInfo): unknown {
@@ -1518,8 +1513,10 @@ export const SpeakerInfo = {
1518
1513
  return obj;
1519
1514
  },
1520
1515
 
1521
- fromPartial(object: DeepPartial<SpeakerInfo>): SpeakerInfo {
1522
- const message = { ...baseSpeakerInfo } as SpeakerInfo;
1516
+ fromPartial<I extends Exact<DeepPartial<SpeakerInfo>, I>>(
1517
+ object: I
1518
+ ): SpeakerInfo {
1519
+ const message = createBaseSpeakerInfo();
1523
1520
  message.sid = object.sid ?? "";
1524
1521
  message.level = object.level ?? 0;
1525
1522
  message.active = object.active ?? false;
@@ -1527,7 +1524,9 @@ export const SpeakerInfo = {
1527
1524
  },
1528
1525
  };
1529
1526
 
1530
- const baseUserPacket: object = { participantSid: "", destinationSids: "" };
1527
+ function createBaseUserPacket(): UserPacket {
1528
+ return { participantSid: "", payload: new Uint8Array(), destinationSids: [] };
1529
+ }
1531
1530
 
1532
1531
  export const UserPacket = {
1533
1532
  encode(
@@ -1549,9 +1548,7 @@ export const UserPacket = {
1549
1548
  decode(input: _m0.Reader | Uint8Array, length?: number): UserPacket {
1550
1549
  const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1551
1550
  let end = length === undefined ? reader.len : reader.pos + length;
1552
- const message = { ...baseUserPacket } as UserPacket;
1553
- message.destinationSids = [];
1554
- message.payload = new Uint8Array();
1551
+ const message = createBaseUserPacket();
1555
1552
  while (reader.pos < end) {
1556
1553
  const tag = reader.uint32();
1557
1554
  switch (tag >>> 3) {
@@ -1573,26 +1570,17 @@ export const UserPacket = {
1573
1570
  },
1574
1571
 
1575
1572
  fromJSON(object: any): UserPacket {
1576
- const message = { ...baseUserPacket } as UserPacket;
1577
- message.destinationSids = [];
1578
- message.payload = new Uint8Array();
1579
- if (object.participantSid !== undefined && object.participantSid !== null) {
1580
- message.participantSid = String(object.participantSid);
1581
- } else {
1582
- message.participantSid = "";
1583
- }
1584
- if (object.payload !== undefined && object.payload !== null) {
1585
- message.payload = bytesFromBase64(object.payload);
1586
- }
1587
- if (
1588
- object.destinationSids !== undefined &&
1589
- object.destinationSids !== null
1590
- ) {
1591
- for (const e of object.destinationSids) {
1592
- message.destinationSids.push(String(e));
1593
- }
1594
- }
1595
- return message;
1573
+ return {
1574
+ participantSid: isSet(object.participantSid)
1575
+ ? String(object.participantSid)
1576
+ : "",
1577
+ payload: isSet(object.payload)
1578
+ ? bytesFromBase64(object.payload)
1579
+ : new Uint8Array(),
1580
+ destinationSids: Array.isArray(object?.destinationSids)
1581
+ ? object.destinationSids.map((e: any) => String(e))
1582
+ : [],
1583
+ };
1596
1584
  },
1597
1585
 
1598
1586
  toJSON(message: UserPacket): unknown {
@@ -1611,24 +1599,20 @@ export const UserPacket = {
1611
1599
  return obj;
1612
1600
  },
1613
1601
 
1614
- fromPartial(object: DeepPartial<UserPacket>): UserPacket {
1615
- const message = { ...baseUserPacket } as UserPacket;
1602
+ fromPartial<I extends Exact<DeepPartial<UserPacket>, I>>(
1603
+ object: I
1604
+ ): UserPacket {
1605
+ const message = createBaseUserPacket();
1616
1606
  message.participantSid = object.participantSid ?? "";
1617
1607
  message.payload = object.payload ?? new Uint8Array();
1618
- message.destinationSids = [];
1619
- if (
1620
- object.destinationSids !== undefined &&
1621
- object.destinationSids !== null
1622
- ) {
1623
- for (const e of object.destinationSids) {
1624
- message.destinationSids.push(e);
1625
- }
1626
- }
1608
+ message.destinationSids = object.destinationSids?.map((e) => e) || [];
1627
1609
  return message;
1628
1610
  },
1629
1611
  };
1630
1612
 
1631
- const baseParticipantTracks: object = { participantSid: "", trackSids: "" };
1613
+ function createBaseParticipantTracks(): ParticipantTracks {
1614
+ return { participantSid: "", trackSids: [] };
1615
+ }
1632
1616
 
1633
1617
  export const ParticipantTracks = {
1634
1618
  encode(
@@ -1647,8 +1631,7 @@ export const ParticipantTracks = {
1647
1631
  decode(input: _m0.Reader | Uint8Array, length?: number): ParticipantTracks {
1648
1632
  const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1649
1633
  let end = length === undefined ? reader.len : reader.pos + length;
1650
- const message = { ...baseParticipantTracks } as ParticipantTracks;
1651
- message.trackSids = [];
1634
+ const message = createBaseParticipantTracks();
1652
1635
  while (reader.pos < end) {
1653
1636
  const tag = reader.uint32();
1654
1637
  switch (tag >>> 3) {
@@ -1667,19 +1650,14 @@ export const ParticipantTracks = {
1667
1650
  },
1668
1651
 
1669
1652
  fromJSON(object: any): ParticipantTracks {
1670
- const message = { ...baseParticipantTracks } as ParticipantTracks;
1671
- message.trackSids = [];
1672
- if (object.participantSid !== undefined && object.participantSid !== null) {
1673
- message.participantSid = String(object.participantSid);
1674
- } else {
1675
- message.participantSid = "";
1676
- }
1677
- if (object.trackSids !== undefined && object.trackSids !== null) {
1678
- for (const e of object.trackSids) {
1679
- message.trackSids.push(String(e));
1680
- }
1681
- }
1682
- return message;
1653
+ return {
1654
+ participantSid: isSet(object.participantSid)
1655
+ ? String(object.participantSid)
1656
+ : "",
1657
+ trackSids: Array.isArray(object?.trackSids)
1658
+ ? object.trackSids.map((e: any) => String(e))
1659
+ : [],
1660
+ };
1683
1661
  },
1684
1662
 
1685
1663
  toJSON(message: ParticipantTracks): unknown {
@@ -1694,30 +1672,29 @@ export const ParticipantTracks = {
1694
1672
  return obj;
1695
1673
  },
1696
1674
 
1697
- fromPartial(object: DeepPartial<ParticipantTracks>): ParticipantTracks {
1698
- const message = { ...baseParticipantTracks } as ParticipantTracks;
1675
+ fromPartial<I extends Exact<DeepPartial<ParticipantTracks>, I>>(
1676
+ object: I
1677
+ ): ParticipantTracks {
1678
+ const message = createBaseParticipantTracks();
1699
1679
  message.participantSid = object.participantSid ?? "";
1700
- message.trackSids = [];
1701
- if (object.trackSids !== undefined && object.trackSids !== null) {
1702
- for (const e of object.trackSids) {
1703
- message.trackSids.push(e);
1704
- }
1705
- }
1680
+ message.trackSids = object.trackSids?.map((e) => e) || [];
1706
1681
  return message;
1707
1682
  },
1708
1683
  };
1709
1684
 
1710
- const baseClientInfo: object = {
1711
- sdk: 0,
1712
- version: "",
1713
- protocol: 0,
1714
- os: "",
1715
- osVersion: "",
1716
- deviceModel: "",
1717
- browser: "",
1718
- browserVersion: "",
1719
- address: "",
1720
- };
1685
+ function createBaseClientInfo(): ClientInfo {
1686
+ return {
1687
+ sdk: 0,
1688
+ version: "",
1689
+ protocol: 0,
1690
+ os: "",
1691
+ osVersion: "",
1692
+ deviceModel: "",
1693
+ browser: "",
1694
+ browserVersion: "",
1695
+ address: "",
1696
+ };
1697
+ }
1721
1698
 
1722
1699
  export const ClientInfo = {
1723
1700
  encode(
@@ -1757,7 +1734,7 @@ export const ClientInfo = {
1757
1734
  decode(input: _m0.Reader | Uint8Array, length?: number): ClientInfo {
1758
1735
  const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1759
1736
  let end = length === undefined ? reader.len : reader.pos + length;
1760
- const message = { ...baseClientInfo } as ClientInfo;
1737
+ const message = createBaseClientInfo();
1761
1738
  while (reader.pos < end) {
1762
1739
  const tag = reader.uint32();
1763
1740
  switch (tag >>> 3) {
@@ -1797,60 +1774,27 @@ export const ClientInfo = {
1797
1774
  },
1798
1775
 
1799
1776
  fromJSON(object: any): ClientInfo {
1800
- const message = { ...baseClientInfo } as ClientInfo;
1801
- if (object.sdk !== undefined && object.sdk !== null) {
1802
- message.sdk = clientInfo_SDKFromJSON(object.sdk);
1803
- } else {
1804
- message.sdk = 0;
1805
- }
1806
- if (object.version !== undefined && object.version !== null) {
1807
- message.version = String(object.version);
1808
- } else {
1809
- message.version = "";
1810
- }
1811
- if (object.protocol !== undefined && object.protocol !== null) {
1812
- message.protocol = Number(object.protocol);
1813
- } else {
1814
- message.protocol = 0;
1815
- }
1816
- if (object.os !== undefined && object.os !== null) {
1817
- message.os = String(object.os);
1818
- } else {
1819
- message.os = "";
1820
- }
1821
- if (object.osVersion !== undefined && object.osVersion !== null) {
1822
- message.osVersion = String(object.osVersion);
1823
- } else {
1824
- message.osVersion = "";
1825
- }
1826
- if (object.deviceModel !== undefined && object.deviceModel !== null) {
1827
- message.deviceModel = String(object.deviceModel);
1828
- } else {
1829
- message.deviceModel = "";
1830
- }
1831
- if (object.browser !== undefined && object.browser !== null) {
1832
- message.browser = String(object.browser);
1833
- } else {
1834
- message.browser = "";
1835
- }
1836
- if (object.browserVersion !== undefined && object.browserVersion !== null) {
1837
- message.browserVersion = String(object.browserVersion);
1838
- } else {
1839
- message.browserVersion = "";
1840
- }
1841
- if (object.address !== undefined && object.address !== null) {
1842
- message.address = String(object.address);
1843
- } else {
1844
- message.address = "";
1845
- }
1846
- return message;
1777
+ return {
1778
+ sdk: isSet(object.sdk) ? clientInfo_SDKFromJSON(object.sdk) : 0,
1779
+ version: isSet(object.version) ? String(object.version) : "",
1780
+ protocol: isSet(object.protocol) ? Number(object.protocol) : 0,
1781
+ os: isSet(object.os) ? String(object.os) : "",
1782
+ osVersion: isSet(object.osVersion) ? String(object.osVersion) : "",
1783
+ deviceModel: isSet(object.deviceModel) ? String(object.deviceModel) : "",
1784
+ browser: isSet(object.browser) ? String(object.browser) : "",
1785
+ browserVersion: isSet(object.browserVersion)
1786
+ ? String(object.browserVersion)
1787
+ : "",
1788
+ address: isSet(object.address) ? String(object.address) : "",
1789
+ };
1847
1790
  },
1848
1791
 
1849
1792
  toJSON(message: ClientInfo): unknown {
1850
1793
  const obj: any = {};
1851
1794
  message.sdk !== undefined && (obj.sdk = clientInfo_SDKToJSON(message.sdk));
1852
1795
  message.version !== undefined && (obj.version = message.version);
1853
- message.protocol !== undefined && (obj.protocol = message.protocol);
1796
+ message.protocol !== undefined &&
1797
+ (obj.protocol = Math.round(message.protocol));
1854
1798
  message.os !== undefined && (obj.os = message.os);
1855
1799
  message.osVersion !== undefined && (obj.osVersion = message.osVersion);
1856
1800
  message.deviceModel !== undefined &&
@@ -1862,8 +1806,10 @@ export const ClientInfo = {
1862
1806
  return obj;
1863
1807
  },
1864
1808
 
1865
- fromPartial(object: DeepPartial<ClientInfo>): ClientInfo {
1866
- const message = { ...baseClientInfo } as ClientInfo;
1809
+ fromPartial<I extends Exact<DeepPartial<ClientInfo>, I>>(
1810
+ object: I
1811
+ ): ClientInfo {
1812
+ const message = createBaseClientInfo();
1867
1813
  message.sdk = object.sdk ?? 0;
1868
1814
  message.version = object.version ?? "";
1869
1815
  message.protocol = object.protocol ?? 0;
@@ -1877,7 +1823,9 @@ export const ClientInfo = {
1877
1823
  },
1878
1824
  };
1879
1825
 
1880
- const baseClientConfiguration: object = { resumeConnection: 0 };
1826
+ function createBaseClientConfiguration(): ClientConfiguration {
1827
+ return { video: undefined, screen: undefined, resumeConnection: 0 };
1828
+ }
1881
1829
 
1882
1830
  export const ClientConfiguration = {
1883
1831
  encode(
@@ -1905,7 +1853,7 @@ export const ClientConfiguration = {
1905
1853
  decode(input: _m0.Reader | Uint8Array, length?: number): ClientConfiguration {
1906
1854
  const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1907
1855
  let end = length === undefined ? reader.len : reader.pos + length;
1908
- const message = { ...baseClientConfiguration } as ClientConfiguration;
1856
+ const message = createBaseClientConfiguration();
1909
1857
  while (reader.pos < end) {
1910
1858
  const tag = reader.uint32();
1911
1859
  switch (tag >>> 3) {
@@ -1927,28 +1875,17 @@ export const ClientConfiguration = {
1927
1875
  },
1928
1876
 
1929
1877
  fromJSON(object: any): ClientConfiguration {
1930
- const message = { ...baseClientConfiguration } as ClientConfiguration;
1931
- if (object.video !== undefined && object.video !== null) {
1932
- message.video = VideoConfiguration.fromJSON(object.video);
1933
- } else {
1934
- message.video = undefined;
1935
- }
1936
- if (object.screen !== undefined && object.screen !== null) {
1937
- message.screen = VideoConfiguration.fromJSON(object.screen);
1938
- } else {
1939
- message.screen = undefined;
1940
- }
1941
- if (
1942
- object.resumeConnection !== undefined &&
1943
- object.resumeConnection !== null
1944
- ) {
1945
- message.resumeConnection = clientConfigSettingFromJSON(
1946
- object.resumeConnection
1947
- );
1948
- } else {
1949
- message.resumeConnection = 0;
1950
- }
1951
- return message;
1878
+ return {
1879
+ video: isSet(object.video)
1880
+ ? VideoConfiguration.fromJSON(object.video)
1881
+ : undefined,
1882
+ screen: isSet(object.screen)
1883
+ ? VideoConfiguration.fromJSON(object.screen)
1884
+ : undefined,
1885
+ resumeConnection: isSet(object.resumeConnection)
1886
+ ? clientConfigSettingFromJSON(object.resumeConnection)
1887
+ : 0,
1888
+ };
1952
1889
  },
1953
1890
 
1954
1891
  toJSON(message: ClientConfiguration): unknown {
@@ -1968,24 +1905,26 @@ export const ClientConfiguration = {
1968
1905
  return obj;
1969
1906
  },
1970
1907
 
1971
- fromPartial(object: DeepPartial<ClientConfiguration>): ClientConfiguration {
1972
- const message = { ...baseClientConfiguration } as ClientConfiguration;
1973
- if (object.video !== undefined && object.video !== null) {
1974
- message.video = VideoConfiguration.fromPartial(object.video);
1975
- } else {
1976
- message.video = undefined;
1977
- }
1978
- if (object.screen !== undefined && object.screen !== null) {
1979
- message.screen = VideoConfiguration.fromPartial(object.screen);
1980
- } else {
1981
- message.screen = undefined;
1982
- }
1908
+ fromPartial<I extends Exact<DeepPartial<ClientConfiguration>, I>>(
1909
+ object: I
1910
+ ): ClientConfiguration {
1911
+ const message = createBaseClientConfiguration();
1912
+ message.video =
1913
+ object.video !== undefined && object.video !== null
1914
+ ? VideoConfiguration.fromPartial(object.video)
1915
+ : undefined;
1916
+ message.screen =
1917
+ object.screen !== undefined && object.screen !== null
1918
+ ? VideoConfiguration.fromPartial(object.screen)
1919
+ : undefined;
1983
1920
  message.resumeConnection = object.resumeConnection ?? 0;
1984
1921
  return message;
1985
1922
  },
1986
1923
  };
1987
1924
 
1988
- const baseVideoConfiguration: object = { hardwareEncoder: 0 };
1925
+ function createBaseVideoConfiguration(): VideoConfiguration {
1926
+ return { hardwareEncoder: 0 };
1927
+ }
1989
1928
 
1990
1929
  export const VideoConfiguration = {
1991
1930
  encode(
@@ -2001,7 +1940,7 @@ export const VideoConfiguration = {
2001
1940
  decode(input: _m0.Reader | Uint8Array, length?: number): VideoConfiguration {
2002
1941
  const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2003
1942
  let end = length === undefined ? reader.len : reader.pos + length;
2004
- const message = { ...baseVideoConfiguration } as VideoConfiguration;
1943
+ const message = createBaseVideoConfiguration();
2005
1944
  while (reader.pos < end) {
2006
1945
  const tag = reader.uint32();
2007
1946
  switch (tag >>> 3) {
@@ -2017,18 +1956,11 @@ export const VideoConfiguration = {
2017
1956
  },
2018
1957
 
2019
1958
  fromJSON(object: any): VideoConfiguration {
2020
- const message = { ...baseVideoConfiguration } as VideoConfiguration;
2021
- if (
2022
- object.hardwareEncoder !== undefined &&
2023
- object.hardwareEncoder !== null
2024
- ) {
2025
- message.hardwareEncoder = clientConfigSettingFromJSON(
2026
- object.hardwareEncoder
2027
- );
2028
- } else {
2029
- message.hardwareEncoder = 0;
2030
- }
2031
- return message;
1959
+ return {
1960
+ hardwareEncoder: isSet(object.hardwareEncoder)
1961
+ ? clientConfigSettingFromJSON(object.hardwareEncoder)
1962
+ : 0,
1963
+ };
2032
1964
  },
2033
1965
 
2034
1966
  toJSON(message: VideoConfiguration): unknown {
@@ -2040,13 +1972,606 @@ export const VideoConfiguration = {
2040
1972
  return obj;
2041
1973
  },
2042
1974
 
2043
- fromPartial(object: DeepPartial<VideoConfiguration>): VideoConfiguration {
2044
- const message = { ...baseVideoConfiguration } as VideoConfiguration;
1975
+ fromPartial<I extends Exact<DeepPartial<VideoConfiguration>, I>>(
1976
+ object: I
1977
+ ): VideoConfiguration {
1978
+ const message = createBaseVideoConfiguration();
2045
1979
  message.hardwareEncoder = object.hardwareEncoder ?? 0;
2046
1980
  return message;
2047
1981
  },
2048
1982
  };
2049
1983
 
1984
+ function createBaseRTPStats(): RTPStats {
1985
+ return {
1986
+ startTime: undefined,
1987
+ endTime: undefined,
1988
+ duration: 0,
1989
+ packets: 0,
1990
+ packetRate: 0,
1991
+ bytes: 0,
1992
+ bitrate: 0,
1993
+ packetsLost: 0,
1994
+ packetLossRate: 0,
1995
+ packetLossPercentage: 0,
1996
+ packetsDuplicate: 0,
1997
+ packetDuplicateRate: 0,
1998
+ bytesDuplicate: 0,
1999
+ bitrateDuplicate: 0,
2000
+ packetsPadding: 0,
2001
+ packetPaddingRate: 0,
2002
+ bytesPadding: 0,
2003
+ bitratePadding: 0,
2004
+ packetsOutOfOrder: 0,
2005
+ frames: 0,
2006
+ frameRate: 0,
2007
+ jitterCurrent: 0,
2008
+ jitterMax: 0,
2009
+ gapHistogram: {},
2010
+ nacks: 0,
2011
+ nackMisses: 0,
2012
+ plis: 0,
2013
+ lastPli: undefined,
2014
+ firs: 0,
2015
+ lastFir: undefined,
2016
+ rttCurrent: 0,
2017
+ rttMax: 0,
2018
+ keyFrames: 0,
2019
+ lastKeyFrame: undefined,
2020
+ layerLockPlis: 0,
2021
+ lastLayerLockPli: undefined,
2022
+ };
2023
+ }
2024
+
2025
+ export const RTPStats = {
2026
+ encode(
2027
+ message: RTPStats,
2028
+ writer: _m0.Writer = _m0.Writer.create()
2029
+ ): _m0.Writer {
2030
+ if (message.startTime !== undefined) {
2031
+ Timestamp.encode(
2032
+ toTimestamp(message.startTime),
2033
+ writer.uint32(10).fork()
2034
+ ).ldelim();
2035
+ }
2036
+ if (message.endTime !== undefined) {
2037
+ Timestamp.encode(
2038
+ toTimestamp(message.endTime),
2039
+ writer.uint32(18).fork()
2040
+ ).ldelim();
2041
+ }
2042
+ if (message.duration !== 0) {
2043
+ writer.uint32(25).double(message.duration);
2044
+ }
2045
+ if (message.packets !== 0) {
2046
+ writer.uint32(32).uint32(message.packets);
2047
+ }
2048
+ if (message.packetRate !== 0) {
2049
+ writer.uint32(41).double(message.packetRate);
2050
+ }
2051
+ if (message.bytes !== 0) {
2052
+ writer.uint32(48).uint64(message.bytes);
2053
+ }
2054
+ if (message.bitrate !== 0) {
2055
+ writer.uint32(57).double(message.bitrate);
2056
+ }
2057
+ if (message.packetsLost !== 0) {
2058
+ writer.uint32(64).uint32(message.packetsLost);
2059
+ }
2060
+ if (message.packetLossRate !== 0) {
2061
+ writer.uint32(73).double(message.packetLossRate);
2062
+ }
2063
+ if (message.packetLossPercentage !== 0) {
2064
+ writer.uint32(85).float(message.packetLossPercentage);
2065
+ }
2066
+ if (message.packetsDuplicate !== 0) {
2067
+ writer.uint32(88).uint32(message.packetsDuplicate);
2068
+ }
2069
+ if (message.packetDuplicateRate !== 0) {
2070
+ writer.uint32(97).double(message.packetDuplicateRate);
2071
+ }
2072
+ if (message.bytesDuplicate !== 0) {
2073
+ writer.uint32(104).uint64(message.bytesDuplicate);
2074
+ }
2075
+ if (message.bitrateDuplicate !== 0) {
2076
+ writer.uint32(113).double(message.bitrateDuplicate);
2077
+ }
2078
+ if (message.packetsPadding !== 0) {
2079
+ writer.uint32(120).uint32(message.packetsPadding);
2080
+ }
2081
+ if (message.packetPaddingRate !== 0) {
2082
+ writer.uint32(129).double(message.packetPaddingRate);
2083
+ }
2084
+ if (message.bytesPadding !== 0) {
2085
+ writer.uint32(136).uint64(message.bytesPadding);
2086
+ }
2087
+ if (message.bitratePadding !== 0) {
2088
+ writer.uint32(145).double(message.bitratePadding);
2089
+ }
2090
+ if (message.packetsOutOfOrder !== 0) {
2091
+ writer.uint32(152).uint32(message.packetsOutOfOrder);
2092
+ }
2093
+ if (message.frames !== 0) {
2094
+ writer.uint32(160).uint32(message.frames);
2095
+ }
2096
+ if (message.frameRate !== 0) {
2097
+ writer.uint32(169).double(message.frameRate);
2098
+ }
2099
+ if (message.jitterCurrent !== 0) {
2100
+ writer.uint32(177).double(message.jitterCurrent);
2101
+ }
2102
+ if (message.jitterMax !== 0) {
2103
+ writer.uint32(185).double(message.jitterMax);
2104
+ }
2105
+ Object.entries(message.gapHistogram).forEach(([key, value]) => {
2106
+ RTPStats_GapHistogramEntry.encode(
2107
+ { key: key as any, value },
2108
+ writer.uint32(194).fork()
2109
+ ).ldelim();
2110
+ });
2111
+ if (message.nacks !== 0) {
2112
+ writer.uint32(200).uint32(message.nacks);
2113
+ }
2114
+ if (message.nackMisses !== 0) {
2115
+ writer.uint32(208).uint32(message.nackMisses);
2116
+ }
2117
+ if (message.plis !== 0) {
2118
+ writer.uint32(216).uint32(message.plis);
2119
+ }
2120
+ if (message.lastPli !== undefined) {
2121
+ Timestamp.encode(
2122
+ toTimestamp(message.lastPli),
2123
+ writer.uint32(226).fork()
2124
+ ).ldelim();
2125
+ }
2126
+ if (message.firs !== 0) {
2127
+ writer.uint32(232).uint32(message.firs);
2128
+ }
2129
+ if (message.lastFir !== undefined) {
2130
+ Timestamp.encode(
2131
+ toTimestamp(message.lastFir),
2132
+ writer.uint32(242).fork()
2133
+ ).ldelim();
2134
+ }
2135
+ if (message.rttCurrent !== 0) {
2136
+ writer.uint32(248).uint32(message.rttCurrent);
2137
+ }
2138
+ if (message.rttMax !== 0) {
2139
+ writer.uint32(256).uint32(message.rttMax);
2140
+ }
2141
+ if (message.keyFrames !== 0) {
2142
+ writer.uint32(264).uint32(message.keyFrames);
2143
+ }
2144
+ if (message.lastKeyFrame !== undefined) {
2145
+ Timestamp.encode(
2146
+ toTimestamp(message.lastKeyFrame),
2147
+ writer.uint32(274).fork()
2148
+ ).ldelim();
2149
+ }
2150
+ if (message.layerLockPlis !== 0) {
2151
+ writer.uint32(280).uint32(message.layerLockPlis);
2152
+ }
2153
+ if (message.lastLayerLockPli !== undefined) {
2154
+ Timestamp.encode(
2155
+ toTimestamp(message.lastLayerLockPli),
2156
+ writer.uint32(290).fork()
2157
+ ).ldelim();
2158
+ }
2159
+ return writer;
2160
+ },
2161
+
2162
+ decode(input: _m0.Reader | Uint8Array, length?: number): RTPStats {
2163
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2164
+ let end = length === undefined ? reader.len : reader.pos + length;
2165
+ const message = createBaseRTPStats();
2166
+ while (reader.pos < end) {
2167
+ const tag = reader.uint32();
2168
+ switch (tag >>> 3) {
2169
+ case 1:
2170
+ message.startTime = fromTimestamp(
2171
+ Timestamp.decode(reader, reader.uint32())
2172
+ );
2173
+ break;
2174
+ case 2:
2175
+ message.endTime = fromTimestamp(
2176
+ Timestamp.decode(reader, reader.uint32())
2177
+ );
2178
+ break;
2179
+ case 3:
2180
+ message.duration = reader.double();
2181
+ break;
2182
+ case 4:
2183
+ message.packets = reader.uint32();
2184
+ break;
2185
+ case 5:
2186
+ message.packetRate = reader.double();
2187
+ break;
2188
+ case 6:
2189
+ message.bytes = longToNumber(reader.uint64() as Long);
2190
+ break;
2191
+ case 7:
2192
+ message.bitrate = reader.double();
2193
+ break;
2194
+ case 8:
2195
+ message.packetsLost = reader.uint32();
2196
+ break;
2197
+ case 9:
2198
+ message.packetLossRate = reader.double();
2199
+ break;
2200
+ case 10:
2201
+ message.packetLossPercentage = reader.float();
2202
+ break;
2203
+ case 11:
2204
+ message.packetsDuplicate = reader.uint32();
2205
+ break;
2206
+ case 12:
2207
+ message.packetDuplicateRate = reader.double();
2208
+ break;
2209
+ case 13:
2210
+ message.bytesDuplicate = longToNumber(reader.uint64() as Long);
2211
+ break;
2212
+ case 14:
2213
+ message.bitrateDuplicate = reader.double();
2214
+ break;
2215
+ case 15:
2216
+ message.packetsPadding = reader.uint32();
2217
+ break;
2218
+ case 16:
2219
+ message.packetPaddingRate = reader.double();
2220
+ break;
2221
+ case 17:
2222
+ message.bytesPadding = longToNumber(reader.uint64() as Long);
2223
+ break;
2224
+ case 18:
2225
+ message.bitratePadding = reader.double();
2226
+ break;
2227
+ case 19:
2228
+ message.packetsOutOfOrder = reader.uint32();
2229
+ break;
2230
+ case 20:
2231
+ message.frames = reader.uint32();
2232
+ break;
2233
+ case 21:
2234
+ message.frameRate = reader.double();
2235
+ break;
2236
+ case 22:
2237
+ message.jitterCurrent = reader.double();
2238
+ break;
2239
+ case 23:
2240
+ message.jitterMax = reader.double();
2241
+ break;
2242
+ case 24:
2243
+ const entry24 = RTPStats_GapHistogramEntry.decode(
2244
+ reader,
2245
+ reader.uint32()
2246
+ );
2247
+ if (entry24.value !== undefined) {
2248
+ message.gapHistogram[entry24.key] = entry24.value;
2249
+ }
2250
+ break;
2251
+ case 25:
2252
+ message.nacks = reader.uint32();
2253
+ break;
2254
+ case 26:
2255
+ message.nackMisses = reader.uint32();
2256
+ break;
2257
+ case 27:
2258
+ message.plis = reader.uint32();
2259
+ break;
2260
+ case 28:
2261
+ message.lastPli = fromTimestamp(
2262
+ Timestamp.decode(reader, reader.uint32())
2263
+ );
2264
+ break;
2265
+ case 29:
2266
+ message.firs = reader.uint32();
2267
+ break;
2268
+ case 30:
2269
+ message.lastFir = fromTimestamp(
2270
+ Timestamp.decode(reader, reader.uint32())
2271
+ );
2272
+ break;
2273
+ case 31:
2274
+ message.rttCurrent = reader.uint32();
2275
+ break;
2276
+ case 32:
2277
+ message.rttMax = reader.uint32();
2278
+ break;
2279
+ case 33:
2280
+ message.keyFrames = reader.uint32();
2281
+ break;
2282
+ case 34:
2283
+ message.lastKeyFrame = fromTimestamp(
2284
+ Timestamp.decode(reader, reader.uint32())
2285
+ );
2286
+ break;
2287
+ case 35:
2288
+ message.layerLockPlis = reader.uint32();
2289
+ break;
2290
+ case 36:
2291
+ message.lastLayerLockPli = fromTimestamp(
2292
+ Timestamp.decode(reader, reader.uint32())
2293
+ );
2294
+ break;
2295
+ default:
2296
+ reader.skipType(tag & 7);
2297
+ break;
2298
+ }
2299
+ }
2300
+ return message;
2301
+ },
2302
+
2303
+ fromJSON(object: any): RTPStats {
2304
+ return {
2305
+ startTime: isSet(object.startTime)
2306
+ ? fromJsonTimestamp(object.startTime)
2307
+ : undefined,
2308
+ endTime: isSet(object.endTime)
2309
+ ? fromJsonTimestamp(object.endTime)
2310
+ : undefined,
2311
+ duration: isSet(object.duration) ? Number(object.duration) : 0,
2312
+ packets: isSet(object.packets) ? Number(object.packets) : 0,
2313
+ packetRate: isSet(object.packetRate) ? Number(object.packetRate) : 0,
2314
+ bytes: isSet(object.bytes) ? Number(object.bytes) : 0,
2315
+ bitrate: isSet(object.bitrate) ? Number(object.bitrate) : 0,
2316
+ packetsLost: isSet(object.packetsLost) ? Number(object.packetsLost) : 0,
2317
+ packetLossRate: isSet(object.packetLossRate)
2318
+ ? Number(object.packetLossRate)
2319
+ : 0,
2320
+ packetLossPercentage: isSet(object.packetLossPercentage)
2321
+ ? Number(object.packetLossPercentage)
2322
+ : 0,
2323
+ packetsDuplicate: isSet(object.packetsDuplicate)
2324
+ ? Number(object.packetsDuplicate)
2325
+ : 0,
2326
+ packetDuplicateRate: isSet(object.packetDuplicateRate)
2327
+ ? Number(object.packetDuplicateRate)
2328
+ : 0,
2329
+ bytesDuplicate: isSet(object.bytesDuplicate)
2330
+ ? Number(object.bytesDuplicate)
2331
+ : 0,
2332
+ bitrateDuplicate: isSet(object.bitrateDuplicate)
2333
+ ? Number(object.bitrateDuplicate)
2334
+ : 0,
2335
+ packetsPadding: isSet(object.packetsPadding)
2336
+ ? Number(object.packetsPadding)
2337
+ : 0,
2338
+ packetPaddingRate: isSet(object.packetPaddingRate)
2339
+ ? Number(object.packetPaddingRate)
2340
+ : 0,
2341
+ bytesPadding: isSet(object.bytesPadding)
2342
+ ? Number(object.bytesPadding)
2343
+ : 0,
2344
+ bitratePadding: isSet(object.bitratePadding)
2345
+ ? Number(object.bitratePadding)
2346
+ : 0,
2347
+ packetsOutOfOrder: isSet(object.packetsOutOfOrder)
2348
+ ? Number(object.packetsOutOfOrder)
2349
+ : 0,
2350
+ frames: isSet(object.frames) ? Number(object.frames) : 0,
2351
+ frameRate: isSet(object.frameRate) ? Number(object.frameRate) : 0,
2352
+ jitterCurrent: isSet(object.jitterCurrent)
2353
+ ? Number(object.jitterCurrent)
2354
+ : 0,
2355
+ jitterMax: isSet(object.jitterMax) ? Number(object.jitterMax) : 0,
2356
+ gapHistogram: isObject(object.gapHistogram)
2357
+ ? Object.entries(object.gapHistogram).reduce<{ [key: number]: number }>(
2358
+ (acc, [key, value]) => {
2359
+ acc[Number(key)] = Number(value);
2360
+ return acc;
2361
+ },
2362
+ {}
2363
+ )
2364
+ : {},
2365
+ nacks: isSet(object.nacks) ? Number(object.nacks) : 0,
2366
+ nackMisses: isSet(object.nackMisses) ? Number(object.nackMisses) : 0,
2367
+ plis: isSet(object.plis) ? Number(object.plis) : 0,
2368
+ lastPli: isSet(object.lastPli)
2369
+ ? fromJsonTimestamp(object.lastPli)
2370
+ : undefined,
2371
+ firs: isSet(object.firs) ? Number(object.firs) : 0,
2372
+ lastFir: isSet(object.lastFir)
2373
+ ? fromJsonTimestamp(object.lastFir)
2374
+ : undefined,
2375
+ rttCurrent: isSet(object.rttCurrent) ? Number(object.rttCurrent) : 0,
2376
+ rttMax: isSet(object.rttMax) ? Number(object.rttMax) : 0,
2377
+ keyFrames: isSet(object.keyFrames) ? Number(object.keyFrames) : 0,
2378
+ lastKeyFrame: isSet(object.lastKeyFrame)
2379
+ ? fromJsonTimestamp(object.lastKeyFrame)
2380
+ : undefined,
2381
+ layerLockPlis: isSet(object.layerLockPlis)
2382
+ ? Number(object.layerLockPlis)
2383
+ : 0,
2384
+ lastLayerLockPli: isSet(object.lastLayerLockPli)
2385
+ ? fromJsonTimestamp(object.lastLayerLockPli)
2386
+ : undefined,
2387
+ };
2388
+ },
2389
+
2390
+ toJSON(message: RTPStats): unknown {
2391
+ const obj: any = {};
2392
+ message.startTime !== undefined &&
2393
+ (obj.startTime = message.startTime.toISOString());
2394
+ message.endTime !== undefined &&
2395
+ (obj.endTime = message.endTime.toISOString());
2396
+ message.duration !== undefined && (obj.duration = message.duration);
2397
+ message.packets !== undefined &&
2398
+ (obj.packets = Math.round(message.packets));
2399
+ message.packetRate !== undefined && (obj.packetRate = message.packetRate);
2400
+ message.bytes !== undefined && (obj.bytes = Math.round(message.bytes));
2401
+ message.bitrate !== undefined && (obj.bitrate = message.bitrate);
2402
+ message.packetsLost !== undefined &&
2403
+ (obj.packetsLost = Math.round(message.packetsLost));
2404
+ message.packetLossRate !== undefined &&
2405
+ (obj.packetLossRate = message.packetLossRate);
2406
+ message.packetLossPercentage !== undefined &&
2407
+ (obj.packetLossPercentage = message.packetLossPercentage);
2408
+ message.packetsDuplicate !== undefined &&
2409
+ (obj.packetsDuplicate = Math.round(message.packetsDuplicate));
2410
+ message.packetDuplicateRate !== undefined &&
2411
+ (obj.packetDuplicateRate = message.packetDuplicateRate);
2412
+ message.bytesDuplicate !== undefined &&
2413
+ (obj.bytesDuplicate = Math.round(message.bytesDuplicate));
2414
+ message.bitrateDuplicate !== undefined &&
2415
+ (obj.bitrateDuplicate = message.bitrateDuplicate);
2416
+ message.packetsPadding !== undefined &&
2417
+ (obj.packetsPadding = Math.round(message.packetsPadding));
2418
+ message.packetPaddingRate !== undefined &&
2419
+ (obj.packetPaddingRate = message.packetPaddingRate);
2420
+ message.bytesPadding !== undefined &&
2421
+ (obj.bytesPadding = Math.round(message.bytesPadding));
2422
+ message.bitratePadding !== undefined &&
2423
+ (obj.bitratePadding = message.bitratePadding);
2424
+ message.packetsOutOfOrder !== undefined &&
2425
+ (obj.packetsOutOfOrder = Math.round(message.packetsOutOfOrder));
2426
+ message.frames !== undefined && (obj.frames = Math.round(message.frames));
2427
+ message.frameRate !== undefined && (obj.frameRate = message.frameRate);
2428
+ message.jitterCurrent !== undefined &&
2429
+ (obj.jitterCurrent = message.jitterCurrent);
2430
+ message.jitterMax !== undefined && (obj.jitterMax = message.jitterMax);
2431
+ obj.gapHistogram = {};
2432
+ if (message.gapHistogram) {
2433
+ Object.entries(message.gapHistogram).forEach(([k, v]) => {
2434
+ obj.gapHistogram[k] = Math.round(v);
2435
+ });
2436
+ }
2437
+ message.nacks !== undefined && (obj.nacks = Math.round(message.nacks));
2438
+ message.nackMisses !== undefined &&
2439
+ (obj.nackMisses = Math.round(message.nackMisses));
2440
+ message.plis !== undefined && (obj.plis = Math.round(message.plis));
2441
+ message.lastPli !== undefined &&
2442
+ (obj.lastPli = message.lastPli.toISOString());
2443
+ message.firs !== undefined && (obj.firs = Math.round(message.firs));
2444
+ message.lastFir !== undefined &&
2445
+ (obj.lastFir = message.lastFir.toISOString());
2446
+ message.rttCurrent !== undefined &&
2447
+ (obj.rttCurrent = Math.round(message.rttCurrent));
2448
+ message.rttMax !== undefined && (obj.rttMax = Math.round(message.rttMax));
2449
+ message.keyFrames !== undefined &&
2450
+ (obj.keyFrames = Math.round(message.keyFrames));
2451
+ message.lastKeyFrame !== undefined &&
2452
+ (obj.lastKeyFrame = message.lastKeyFrame.toISOString());
2453
+ message.layerLockPlis !== undefined &&
2454
+ (obj.layerLockPlis = Math.round(message.layerLockPlis));
2455
+ message.lastLayerLockPli !== undefined &&
2456
+ (obj.lastLayerLockPli = message.lastLayerLockPli.toISOString());
2457
+ return obj;
2458
+ },
2459
+
2460
+ fromPartial<I extends Exact<DeepPartial<RTPStats>, I>>(object: I): RTPStats {
2461
+ const message = createBaseRTPStats();
2462
+ message.startTime = object.startTime ?? undefined;
2463
+ message.endTime = object.endTime ?? undefined;
2464
+ message.duration = object.duration ?? 0;
2465
+ message.packets = object.packets ?? 0;
2466
+ message.packetRate = object.packetRate ?? 0;
2467
+ message.bytes = object.bytes ?? 0;
2468
+ message.bitrate = object.bitrate ?? 0;
2469
+ message.packetsLost = object.packetsLost ?? 0;
2470
+ message.packetLossRate = object.packetLossRate ?? 0;
2471
+ message.packetLossPercentage = object.packetLossPercentage ?? 0;
2472
+ message.packetsDuplicate = object.packetsDuplicate ?? 0;
2473
+ message.packetDuplicateRate = object.packetDuplicateRate ?? 0;
2474
+ message.bytesDuplicate = object.bytesDuplicate ?? 0;
2475
+ message.bitrateDuplicate = object.bitrateDuplicate ?? 0;
2476
+ message.packetsPadding = object.packetsPadding ?? 0;
2477
+ message.packetPaddingRate = object.packetPaddingRate ?? 0;
2478
+ message.bytesPadding = object.bytesPadding ?? 0;
2479
+ message.bitratePadding = object.bitratePadding ?? 0;
2480
+ message.packetsOutOfOrder = object.packetsOutOfOrder ?? 0;
2481
+ message.frames = object.frames ?? 0;
2482
+ message.frameRate = object.frameRate ?? 0;
2483
+ message.jitterCurrent = object.jitterCurrent ?? 0;
2484
+ message.jitterMax = object.jitterMax ?? 0;
2485
+ message.gapHistogram = Object.entries(object.gapHistogram ?? {}).reduce<{
2486
+ [key: number]: number;
2487
+ }>((acc, [key, value]) => {
2488
+ if (value !== undefined) {
2489
+ acc[Number(key)] = Number(value);
2490
+ }
2491
+ return acc;
2492
+ }, {});
2493
+ message.nacks = object.nacks ?? 0;
2494
+ message.nackMisses = object.nackMisses ?? 0;
2495
+ message.plis = object.plis ?? 0;
2496
+ message.lastPli = object.lastPli ?? undefined;
2497
+ message.firs = object.firs ?? 0;
2498
+ message.lastFir = object.lastFir ?? undefined;
2499
+ message.rttCurrent = object.rttCurrent ?? 0;
2500
+ message.rttMax = object.rttMax ?? 0;
2501
+ message.keyFrames = object.keyFrames ?? 0;
2502
+ message.lastKeyFrame = object.lastKeyFrame ?? undefined;
2503
+ message.layerLockPlis = object.layerLockPlis ?? 0;
2504
+ message.lastLayerLockPli = object.lastLayerLockPli ?? undefined;
2505
+ return message;
2506
+ },
2507
+ };
2508
+
2509
+ function createBaseRTPStats_GapHistogramEntry(): RTPStats_GapHistogramEntry {
2510
+ return { key: 0, value: 0 };
2511
+ }
2512
+
2513
+ export const RTPStats_GapHistogramEntry = {
2514
+ encode(
2515
+ message: RTPStats_GapHistogramEntry,
2516
+ writer: _m0.Writer = _m0.Writer.create()
2517
+ ): _m0.Writer {
2518
+ if (message.key !== 0) {
2519
+ writer.uint32(8).int32(message.key);
2520
+ }
2521
+ if (message.value !== 0) {
2522
+ writer.uint32(16).uint32(message.value);
2523
+ }
2524
+ return writer;
2525
+ },
2526
+
2527
+ decode(
2528
+ input: _m0.Reader | Uint8Array,
2529
+ length?: number
2530
+ ): RTPStats_GapHistogramEntry {
2531
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2532
+ let end = length === undefined ? reader.len : reader.pos + length;
2533
+ const message = createBaseRTPStats_GapHistogramEntry();
2534
+ while (reader.pos < end) {
2535
+ const tag = reader.uint32();
2536
+ switch (tag >>> 3) {
2537
+ case 1:
2538
+ message.key = reader.int32();
2539
+ break;
2540
+ case 2:
2541
+ message.value = reader.uint32();
2542
+ break;
2543
+ default:
2544
+ reader.skipType(tag & 7);
2545
+ break;
2546
+ }
2547
+ }
2548
+ return message;
2549
+ },
2550
+
2551
+ fromJSON(object: any): RTPStats_GapHistogramEntry {
2552
+ return {
2553
+ key: isSet(object.key) ? Number(object.key) : 0,
2554
+ value: isSet(object.value) ? Number(object.value) : 0,
2555
+ };
2556
+ },
2557
+
2558
+ toJSON(message: RTPStats_GapHistogramEntry): unknown {
2559
+ const obj: any = {};
2560
+ message.key !== undefined && (obj.key = Math.round(message.key));
2561
+ message.value !== undefined && (obj.value = Math.round(message.value));
2562
+ return obj;
2563
+ },
2564
+
2565
+ fromPartial<I extends Exact<DeepPartial<RTPStats_GapHistogramEntry>, I>>(
2566
+ object: I
2567
+ ): RTPStats_GapHistogramEntry {
2568
+ const message = createBaseRTPStats_GapHistogramEntry();
2569
+ message.key = object.key ?? 0;
2570
+ message.value = object.value ?? 0;
2571
+ return message;
2572
+ },
2573
+ };
2574
+
2050
2575
  declare var self: any | undefined;
2051
2576
  declare var window: any | undefined;
2052
2577
  declare var global: any | undefined;
@@ -2089,6 +2614,7 @@ type Builtin =
2089
2614
  | number
2090
2615
  | boolean
2091
2616
  | undefined;
2617
+
2092
2618
  export type DeepPartial<T> = T extends Builtin
2093
2619
  ? T
2094
2620
  : T extends Array<infer U>
@@ -2099,6 +2625,36 @@ export type DeepPartial<T> = T extends Builtin
2099
2625
  ? { [K in keyof T]?: DeepPartial<T[K]> }
2100
2626
  : Partial<T>;
2101
2627
 
2628
+ type KeysOfUnion<T> = T extends T ? keyof T : never;
2629
+ export type Exact<P, I extends P> = P extends Builtin
2630
+ ? P
2631
+ : P & { [K in keyof P]: Exact<P[K], I[K]> } & Record<
2632
+ Exclude<keyof I, KeysOfUnion<P>>,
2633
+ never
2634
+ >;
2635
+
2636
+ function toTimestamp(date: Date): Timestamp {
2637
+ const seconds = date.getTime() / 1_000;
2638
+ const nanos = (date.getTime() % 1_000) * 1_000_000;
2639
+ return { seconds, nanos };
2640
+ }
2641
+
2642
+ function fromTimestamp(t: Timestamp): Date {
2643
+ let millis = t.seconds * 1_000;
2644
+ millis += t.nanos / 1_000_000;
2645
+ return new Date(millis);
2646
+ }
2647
+
2648
+ function fromJsonTimestamp(o: any): Date {
2649
+ if (o instanceof Date) {
2650
+ return o;
2651
+ } else if (typeof o === "string") {
2652
+ return new Date(o);
2653
+ } else {
2654
+ return fromTimestamp(Timestamp.fromJSON(o));
2655
+ }
2656
+ }
2657
+
2102
2658
  function longToNumber(long: Long): number {
2103
2659
  if (long.gt(Number.MAX_SAFE_INTEGER)) {
2104
2660
  throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER");
@@ -2110,3 +2666,11 @@ if (_m0.util.Long !== Long) {
2110
2666
  _m0.util.Long = Long as any;
2111
2667
  _m0.configure();
2112
2668
  }
2669
+
2670
+ function isObject(value: any): boolean {
2671
+ return typeof value === "object" && value !== null;
2672
+ }
2673
+
2674
+ function isSet(value: any): boolean {
2675
+ return value !== null && value !== undefined;
2676
+ }