livekit-client 0.17.1 → 0.17.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/api/SignalClient.d.ts +2 -2
  2. package/dist/api/SignalClient.js +27 -1
  3. package/dist/api/SignalClient.js.map +1 -1
  4. package/dist/proto/google/protobuf/timestamp.d.ts +122 -0
  5. package/dist/proto/google/protobuf/timestamp.js +93 -0
  6. package/dist/proto/google/protobuf/timestamp.js.map +1 -0
  7. package/dist/proto/livekit_models.d.ts +78 -2
  8. package/dist/proto/livekit_models.js +830 -34
  9. package/dist/proto/livekit_models.js.map +1 -1
  10. package/dist/proto/livekit_rtc.d.ts +12 -0
  11. package/dist/proto/livekit_rtc.js +72 -1
  12. package/dist/proto/livekit_rtc.js.map +1 -1
  13. package/dist/room/RTCEngine.d.ts +1 -1
  14. package/dist/room/RTCEngine.js +22 -5
  15. package/dist/room/RTCEngine.js.map +1 -1
  16. package/dist/room/Room.d.ts +2 -1
  17. package/dist/room/Room.js +16 -5
  18. package/dist/room/Room.js.map +1 -1
  19. package/dist/room/events.d.ts +12 -2
  20. package/dist/room/events.js +10 -0
  21. package/dist/room/events.js.map +1 -1
  22. package/dist/room/participant/LocalParticipant.d.ts +4 -1
  23. package/dist/room/participant/LocalParticipant.js +25 -0
  24. package/dist/room/participant/LocalParticipant.js.map +1 -1
  25. package/dist/room/participant/Participant.d.ts +5 -1
  26. package/dist/room/participant/Participant.js +15 -1
  27. package/dist/room/participant/Participant.js.map +1 -1
  28. package/dist/room/track/LocalTrack.js +1 -0
  29. package/dist/room/track/LocalTrack.js.map +1 -1
  30. package/dist/room/track/RemoteTrack.js +1 -0
  31. package/dist/room/track/RemoteTrack.js.map +1 -1
  32. package/dist/room/track/Track.d.ts +1 -0
  33. package/dist/room/track/Track.js +10 -3
  34. package/dist/room/track/Track.js.map +1 -1
  35. package/dist/room/track/create.js +1 -0
  36. package/dist/room/track/create.js.map +1 -1
  37. package/dist/room/utils.d.ts +1 -0
  38. package/dist/room/utils.js +5 -1
  39. package/dist/room/utils.js.map +1 -1
  40. package/dist/version.d.ts +2 -2
  41. package/dist/version.js +2 -2
  42. package/package.json +2 -2
  43. package/src/api/SignalClient.ts +12 -2
  44. package/src/proto/google/protobuf/timestamp.ts +222 -0
  45. package/src/proto/livekit_models.ts +937 -30
  46. package/src/proto/livekit_rtc.ts +107 -0
  47. package/src/room/RTCEngine.ts +23 -7
  48. package/src/room/Room.ts +32 -15
  49. package/src/room/events.ts +12 -0
  50. package/src/room/participant/LocalParticipant.ts +33 -2
  51. package/src/room/participant/Participant.ts +22 -2
  52. package/src/room/track/LocalTrack.ts +1 -0
  53. package/src/room/track/RemoteTrack.ts +1 -0
  54. package/src/room/track/Track.ts +12 -4
  55. package/src/room/track/create.ts +1 -0
  56. package/src/room/utils.ts +4 -0
  57. package/src/version.ts +2 -2
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable */
2
2
  import Long from "long";
3
3
  import _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,6 +496,50 @@ export interface VideoConfiguration {
483
496
  hardwareEncoder: ClientConfigSetting;
484
497
  }
485
498
 
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
+
486
543
  const baseRoom: object = {
487
544
  sid: "",
488
545
  name: "",
@@ -753,14 +810,131 @@ export const Codec = {
753
810
  },
754
811
  };
755
812
 
813
+ const baseParticipantPermission: object = {
814
+ canSubscribe: false,
815
+ canPublish: false,
816
+ canPublishData: false,
817
+ hidden: false,
818
+ recorder: false,
819
+ };
820
+
821
+ export const ParticipantPermission = {
822
+ encode(
823
+ message: ParticipantPermission,
824
+ writer: _m0.Writer = _m0.Writer.create()
825
+ ): _m0.Writer {
826
+ if (message.canSubscribe === true) {
827
+ writer.uint32(8).bool(message.canSubscribe);
828
+ }
829
+ if (message.canPublish === true) {
830
+ writer.uint32(16).bool(message.canPublish);
831
+ }
832
+ if (message.canPublishData === true) {
833
+ writer.uint32(24).bool(message.canPublishData);
834
+ }
835
+ if (message.hidden === true) {
836
+ writer.uint32(56).bool(message.hidden);
837
+ }
838
+ if (message.recorder === true) {
839
+ writer.uint32(64).bool(message.recorder);
840
+ }
841
+ return writer;
842
+ },
843
+
844
+ decode(
845
+ input: _m0.Reader | Uint8Array,
846
+ length?: number
847
+ ): ParticipantPermission {
848
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
849
+ let end = length === undefined ? reader.len : reader.pos + length;
850
+ const message = { ...baseParticipantPermission } as ParticipantPermission;
851
+ while (reader.pos < end) {
852
+ const tag = reader.uint32();
853
+ switch (tag >>> 3) {
854
+ case 1:
855
+ message.canSubscribe = reader.bool();
856
+ break;
857
+ case 2:
858
+ message.canPublish = reader.bool();
859
+ break;
860
+ case 3:
861
+ message.canPublishData = reader.bool();
862
+ break;
863
+ case 7:
864
+ message.hidden = reader.bool();
865
+ break;
866
+ case 8:
867
+ message.recorder = reader.bool();
868
+ break;
869
+ default:
870
+ reader.skipType(tag & 7);
871
+ break;
872
+ }
873
+ }
874
+ return message;
875
+ },
876
+
877
+ fromJSON(object: any): ParticipantPermission {
878
+ const message = { ...baseParticipantPermission } as ParticipantPermission;
879
+ if (object.canSubscribe !== undefined && object.canSubscribe !== null) {
880
+ message.canSubscribe = Boolean(object.canSubscribe);
881
+ } else {
882
+ message.canSubscribe = false;
883
+ }
884
+ if (object.canPublish !== undefined && object.canPublish !== null) {
885
+ message.canPublish = Boolean(object.canPublish);
886
+ } else {
887
+ message.canPublish = false;
888
+ }
889
+ if (object.canPublishData !== undefined && object.canPublishData !== null) {
890
+ message.canPublishData = Boolean(object.canPublishData);
891
+ } else {
892
+ message.canPublishData = false;
893
+ }
894
+ if (object.hidden !== undefined && object.hidden !== null) {
895
+ message.hidden = Boolean(object.hidden);
896
+ } else {
897
+ message.hidden = false;
898
+ }
899
+ if (object.recorder !== undefined && object.recorder !== null) {
900
+ message.recorder = Boolean(object.recorder);
901
+ } else {
902
+ message.recorder = false;
903
+ }
904
+ return message;
905
+ },
906
+
907
+ toJSON(message: ParticipantPermission): unknown {
908
+ const obj: any = {};
909
+ message.canSubscribe !== undefined &&
910
+ (obj.canSubscribe = message.canSubscribe);
911
+ message.canPublish !== undefined && (obj.canPublish = message.canPublish);
912
+ message.canPublishData !== undefined &&
913
+ (obj.canPublishData = message.canPublishData);
914
+ message.hidden !== undefined && (obj.hidden = message.hidden);
915
+ message.recorder !== undefined && (obj.recorder = message.recorder);
916
+ return obj;
917
+ },
918
+
919
+ fromPartial(
920
+ object: DeepPartial<ParticipantPermission>
921
+ ): ParticipantPermission {
922
+ const message = { ...baseParticipantPermission } as ParticipantPermission;
923
+ message.canSubscribe = object.canSubscribe ?? false;
924
+ message.canPublish = object.canPublish ?? false;
925
+ message.canPublishData = object.canPublishData ?? false;
926
+ message.hidden = object.hidden ?? false;
927
+ message.recorder = object.recorder ?? false;
928
+ return message;
929
+ },
930
+ };
931
+
756
932
  const baseParticipantInfo: object = {
757
933
  sid: "",
758
934
  identity: "",
759
935
  state: 0,
760
936
  metadata: "",
761
937
  joinedAt: 0,
762
- hidden: false,
763
- recorder: false,
764
938
  name: "",
765
939
  version: 0,
766
940
  };
@@ -788,18 +962,18 @@ export const ParticipantInfo = {
788
962
  if (message.joinedAt !== 0) {
789
963
  writer.uint32(48).int64(message.joinedAt);
790
964
  }
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
965
  if (message.name !== "") {
798
966
  writer.uint32(74).string(message.name);
799
967
  }
800
968
  if (message.version !== 0) {
801
969
  writer.uint32(80).uint32(message.version);
802
970
  }
971
+ if (message.permission !== undefined) {
972
+ ParticipantPermission.encode(
973
+ message.permission,
974
+ writer.uint32(90).fork()
975
+ ).ldelim();
976
+ }
803
977
  return writer;
804
978
  },
805
979
 
@@ -829,18 +1003,18 @@ export const ParticipantInfo = {
829
1003
  case 6:
830
1004
  message.joinedAt = longToNumber(reader.int64() as Long);
831
1005
  break;
832
- case 7:
833
- message.hidden = reader.bool();
834
- break;
835
- case 8:
836
- message.recorder = reader.bool();
837
- break;
838
1006
  case 9:
839
1007
  message.name = reader.string();
840
1008
  break;
841
1009
  case 10:
842
1010
  message.version = reader.uint32();
843
1011
  break;
1012
+ case 11:
1013
+ message.permission = ParticipantPermission.decode(
1014
+ reader,
1015
+ reader.uint32()
1016
+ );
1017
+ break;
844
1018
  default:
845
1019
  reader.skipType(tag & 7);
846
1020
  break;
@@ -882,16 +1056,6 @@ export const ParticipantInfo = {
882
1056
  } else {
883
1057
  message.joinedAt = 0;
884
1058
  }
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
1059
  if (object.name !== undefined && object.name !== null) {
896
1060
  message.name = String(object.name);
897
1061
  } else {
@@ -902,6 +1066,11 @@ export const ParticipantInfo = {
902
1066
  } else {
903
1067
  message.version = 0;
904
1068
  }
1069
+ if (object.permission !== undefined && object.permission !== null) {
1070
+ message.permission = ParticipantPermission.fromJSON(object.permission);
1071
+ } else {
1072
+ message.permission = undefined;
1073
+ }
905
1074
  return message;
906
1075
  },
907
1076
 
@@ -920,10 +1089,12 @@ export const ParticipantInfo = {
920
1089
  }
921
1090
  message.metadata !== undefined && (obj.metadata = message.metadata);
922
1091
  message.joinedAt !== undefined && (obj.joinedAt = message.joinedAt);
923
- message.hidden !== undefined && (obj.hidden = message.hidden);
924
- message.recorder !== undefined && (obj.recorder = message.recorder);
925
1092
  message.name !== undefined && (obj.name = message.name);
926
1093
  message.version !== undefined && (obj.version = message.version);
1094
+ message.permission !== undefined &&
1095
+ (obj.permission = message.permission
1096
+ ? ParticipantPermission.toJSON(message.permission)
1097
+ : undefined);
927
1098
  return obj;
928
1099
  },
929
1100
 
@@ -940,10 +1111,13 @@ export const ParticipantInfo = {
940
1111
  }
941
1112
  message.metadata = object.metadata ?? "";
942
1113
  message.joinedAt = object.joinedAt ?? 0;
943
- message.hidden = object.hidden ?? false;
944
- message.recorder = object.recorder ?? false;
945
1114
  message.name = object.name ?? "";
946
1115
  message.version = object.version ?? 0;
1116
+ if (object.permission !== undefined && object.permission !== null) {
1117
+ message.permission = ParticipantPermission.fromPartial(object.permission);
1118
+ } else {
1119
+ message.permission = undefined;
1120
+ }
947
1121
  return message;
948
1122
  },
949
1123
  };
@@ -2047,6 +2221,717 @@ export const VideoConfiguration = {
2047
2221
  },
2048
2222
  };
2049
2223
 
2224
+ const baseRTPStats: object = {
2225
+ duration: 0,
2226
+ packets: 0,
2227
+ packetRate: 0,
2228
+ bytes: 0,
2229
+ bitrate: 0,
2230
+ packetsLost: 0,
2231
+ packetLossRate: 0,
2232
+ packetLossPercentage: 0,
2233
+ packetsDuplicate: 0,
2234
+ packetDuplicateRate: 0,
2235
+ bytesDuplicate: 0,
2236
+ bitrateDuplicate: 0,
2237
+ packetsPadding: 0,
2238
+ packetPaddingRate: 0,
2239
+ bytesPadding: 0,
2240
+ bitratePadding: 0,
2241
+ packetsOutOfOrder: 0,
2242
+ frames: 0,
2243
+ frameRate: 0,
2244
+ jitterCurrent: 0,
2245
+ jitterMax: 0,
2246
+ nacks: 0,
2247
+ nackMisses: 0,
2248
+ plis: 0,
2249
+ firs: 0,
2250
+ rttCurrent: 0,
2251
+ rttMax: 0,
2252
+ keyFrames: 0,
2253
+ layerLockPlis: 0,
2254
+ };
2255
+
2256
+ export const RTPStats = {
2257
+ encode(
2258
+ message: RTPStats,
2259
+ writer: _m0.Writer = _m0.Writer.create()
2260
+ ): _m0.Writer {
2261
+ if (message.startTime !== undefined) {
2262
+ Timestamp.encode(
2263
+ toTimestamp(message.startTime),
2264
+ writer.uint32(10).fork()
2265
+ ).ldelim();
2266
+ }
2267
+ if (message.endTime !== undefined) {
2268
+ Timestamp.encode(
2269
+ toTimestamp(message.endTime),
2270
+ writer.uint32(18).fork()
2271
+ ).ldelim();
2272
+ }
2273
+ if (message.duration !== 0) {
2274
+ writer.uint32(25).double(message.duration);
2275
+ }
2276
+ if (message.packets !== 0) {
2277
+ writer.uint32(32).uint32(message.packets);
2278
+ }
2279
+ if (message.packetRate !== 0) {
2280
+ writer.uint32(41).double(message.packetRate);
2281
+ }
2282
+ if (message.bytes !== 0) {
2283
+ writer.uint32(48).uint64(message.bytes);
2284
+ }
2285
+ if (message.bitrate !== 0) {
2286
+ writer.uint32(57).double(message.bitrate);
2287
+ }
2288
+ if (message.packetsLost !== 0) {
2289
+ writer.uint32(64).uint32(message.packetsLost);
2290
+ }
2291
+ if (message.packetLossRate !== 0) {
2292
+ writer.uint32(73).double(message.packetLossRate);
2293
+ }
2294
+ if (message.packetLossPercentage !== 0) {
2295
+ writer.uint32(85).float(message.packetLossPercentage);
2296
+ }
2297
+ if (message.packetsDuplicate !== 0) {
2298
+ writer.uint32(88).uint32(message.packetsDuplicate);
2299
+ }
2300
+ if (message.packetDuplicateRate !== 0) {
2301
+ writer.uint32(97).double(message.packetDuplicateRate);
2302
+ }
2303
+ if (message.bytesDuplicate !== 0) {
2304
+ writer.uint32(104).uint64(message.bytesDuplicate);
2305
+ }
2306
+ if (message.bitrateDuplicate !== 0) {
2307
+ writer.uint32(113).double(message.bitrateDuplicate);
2308
+ }
2309
+ if (message.packetsPadding !== 0) {
2310
+ writer.uint32(120).uint32(message.packetsPadding);
2311
+ }
2312
+ if (message.packetPaddingRate !== 0) {
2313
+ writer.uint32(129).double(message.packetPaddingRate);
2314
+ }
2315
+ if (message.bytesPadding !== 0) {
2316
+ writer.uint32(136).uint64(message.bytesPadding);
2317
+ }
2318
+ if (message.bitratePadding !== 0) {
2319
+ writer.uint32(145).double(message.bitratePadding);
2320
+ }
2321
+ if (message.packetsOutOfOrder !== 0) {
2322
+ writer.uint32(152).uint32(message.packetsOutOfOrder);
2323
+ }
2324
+ if (message.frames !== 0) {
2325
+ writer.uint32(160).uint32(message.frames);
2326
+ }
2327
+ if (message.frameRate !== 0) {
2328
+ writer.uint32(169).double(message.frameRate);
2329
+ }
2330
+ if (message.jitterCurrent !== 0) {
2331
+ writer.uint32(177).double(message.jitterCurrent);
2332
+ }
2333
+ if (message.jitterMax !== 0) {
2334
+ writer.uint32(185).double(message.jitterMax);
2335
+ }
2336
+ Object.entries(message.gapHistogram).forEach(([key, value]) => {
2337
+ RTPStats_GapHistogramEntry.encode(
2338
+ { key: key as any, value },
2339
+ writer.uint32(194).fork()
2340
+ ).ldelim();
2341
+ });
2342
+ if (message.nacks !== 0) {
2343
+ writer.uint32(200).uint32(message.nacks);
2344
+ }
2345
+ if (message.nackMisses !== 0) {
2346
+ writer.uint32(208).uint32(message.nackMisses);
2347
+ }
2348
+ if (message.plis !== 0) {
2349
+ writer.uint32(216).uint32(message.plis);
2350
+ }
2351
+ if (message.lastPli !== undefined) {
2352
+ Timestamp.encode(
2353
+ toTimestamp(message.lastPli),
2354
+ writer.uint32(226).fork()
2355
+ ).ldelim();
2356
+ }
2357
+ if (message.firs !== 0) {
2358
+ writer.uint32(232).uint32(message.firs);
2359
+ }
2360
+ if (message.lastFir !== undefined) {
2361
+ Timestamp.encode(
2362
+ toTimestamp(message.lastFir),
2363
+ writer.uint32(242).fork()
2364
+ ).ldelim();
2365
+ }
2366
+ if (message.rttCurrent !== 0) {
2367
+ writer.uint32(248).uint32(message.rttCurrent);
2368
+ }
2369
+ if (message.rttMax !== 0) {
2370
+ writer.uint32(256).uint32(message.rttMax);
2371
+ }
2372
+ if (message.keyFrames !== 0) {
2373
+ writer.uint32(264).uint32(message.keyFrames);
2374
+ }
2375
+ if (message.lastKeyFrame !== undefined) {
2376
+ Timestamp.encode(
2377
+ toTimestamp(message.lastKeyFrame),
2378
+ writer.uint32(274).fork()
2379
+ ).ldelim();
2380
+ }
2381
+ if (message.layerLockPlis !== 0) {
2382
+ writer.uint32(280).uint32(message.layerLockPlis);
2383
+ }
2384
+ if (message.lastLayerLockPli !== undefined) {
2385
+ Timestamp.encode(
2386
+ toTimestamp(message.lastLayerLockPli),
2387
+ writer.uint32(290).fork()
2388
+ ).ldelim();
2389
+ }
2390
+ return writer;
2391
+ },
2392
+
2393
+ decode(input: _m0.Reader | Uint8Array, length?: number): RTPStats {
2394
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2395
+ let end = length === undefined ? reader.len : reader.pos + length;
2396
+ const message = { ...baseRTPStats } as RTPStats;
2397
+ message.gapHistogram = {};
2398
+ while (reader.pos < end) {
2399
+ const tag = reader.uint32();
2400
+ switch (tag >>> 3) {
2401
+ case 1:
2402
+ message.startTime = fromTimestamp(
2403
+ Timestamp.decode(reader, reader.uint32())
2404
+ );
2405
+ break;
2406
+ case 2:
2407
+ message.endTime = fromTimestamp(
2408
+ Timestamp.decode(reader, reader.uint32())
2409
+ );
2410
+ break;
2411
+ case 3:
2412
+ message.duration = reader.double();
2413
+ break;
2414
+ case 4:
2415
+ message.packets = reader.uint32();
2416
+ break;
2417
+ case 5:
2418
+ message.packetRate = reader.double();
2419
+ break;
2420
+ case 6:
2421
+ message.bytes = longToNumber(reader.uint64() as Long);
2422
+ break;
2423
+ case 7:
2424
+ message.bitrate = reader.double();
2425
+ break;
2426
+ case 8:
2427
+ message.packetsLost = reader.uint32();
2428
+ break;
2429
+ case 9:
2430
+ message.packetLossRate = reader.double();
2431
+ break;
2432
+ case 10:
2433
+ message.packetLossPercentage = reader.float();
2434
+ break;
2435
+ case 11:
2436
+ message.packetsDuplicate = reader.uint32();
2437
+ break;
2438
+ case 12:
2439
+ message.packetDuplicateRate = reader.double();
2440
+ break;
2441
+ case 13:
2442
+ message.bytesDuplicate = longToNumber(reader.uint64() as Long);
2443
+ break;
2444
+ case 14:
2445
+ message.bitrateDuplicate = reader.double();
2446
+ break;
2447
+ case 15:
2448
+ message.packetsPadding = reader.uint32();
2449
+ break;
2450
+ case 16:
2451
+ message.packetPaddingRate = reader.double();
2452
+ break;
2453
+ case 17:
2454
+ message.bytesPadding = longToNumber(reader.uint64() as Long);
2455
+ break;
2456
+ case 18:
2457
+ message.bitratePadding = reader.double();
2458
+ break;
2459
+ case 19:
2460
+ message.packetsOutOfOrder = reader.uint32();
2461
+ break;
2462
+ case 20:
2463
+ message.frames = reader.uint32();
2464
+ break;
2465
+ case 21:
2466
+ message.frameRate = reader.double();
2467
+ break;
2468
+ case 22:
2469
+ message.jitterCurrent = reader.double();
2470
+ break;
2471
+ case 23:
2472
+ message.jitterMax = reader.double();
2473
+ break;
2474
+ case 24:
2475
+ const entry24 = RTPStats_GapHistogramEntry.decode(
2476
+ reader,
2477
+ reader.uint32()
2478
+ );
2479
+ if (entry24.value !== undefined) {
2480
+ message.gapHistogram[entry24.key] = entry24.value;
2481
+ }
2482
+ break;
2483
+ case 25:
2484
+ message.nacks = reader.uint32();
2485
+ break;
2486
+ case 26:
2487
+ message.nackMisses = reader.uint32();
2488
+ break;
2489
+ case 27:
2490
+ message.plis = reader.uint32();
2491
+ break;
2492
+ case 28:
2493
+ message.lastPli = fromTimestamp(
2494
+ Timestamp.decode(reader, reader.uint32())
2495
+ );
2496
+ break;
2497
+ case 29:
2498
+ message.firs = reader.uint32();
2499
+ break;
2500
+ case 30:
2501
+ message.lastFir = fromTimestamp(
2502
+ Timestamp.decode(reader, reader.uint32())
2503
+ );
2504
+ break;
2505
+ case 31:
2506
+ message.rttCurrent = reader.uint32();
2507
+ break;
2508
+ case 32:
2509
+ message.rttMax = reader.uint32();
2510
+ break;
2511
+ case 33:
2512
+ message.keyFrames = reader.uint32();
2513
+ break;
2514
+ case 34:
2515
+ message.lastKeyFrame = fromTimestamp(
2516
+ Timestamp.decode(reader, reader.uint32())
2517
+ );
2518
+ break;
2519
+ case 35:
2520
+ message.layerLockPlis = reader.uint32();
2521
+ break;
2522
+ case 36:
2523
+ message.lastLayerLockPli = fromTimestamp(
2524
+ Timestamp.decode(reader, reader.uint32())
2525
+ );
2526
+ break;
2527
+ default:
2528
+ reader.skipType(tag & 7);
2529
+ break;
2530
+ }
2531
+ }
2532
+ return message;
2533
+ },
2534
+
2535
+ fromJSON(object: any): RTPStats {
2536
+ const message = { ...baseRTPStats } as RTPStats;
2537
+ message.gapHistogram = {};
2538
+ if (object.startTime !== undefined && object.startTime !== null) {
2539
+ message.startTime = fromJsonTimestamp(object.startTime);
2540
+ } else {
2541
+ message.startTime = undefined;
2542
+ }
2543
+ if (object.endTime !== undefined && object.endTime !== null) {
2544
+ message.endTime = fromJsonTimestamp(object.endTime);
2545
+ } else {
2546
+ message.endTime = undefined;
2547
+ }
2548
+ if (object.duration !== undefined && object.duration !== null) {
2549
+ message.duration = Number(object.duration);
2550
+ } else {
2551
+ message.duration = 0;
2552
+ }
2553
+ if (object.packets !== undefined && object.packets !== null) {
2554
+ message.packets = Number(object.packets);
2555
+ } else {
2556
+ message.packets = 0;
2557
+ }
2558
+ if (object.packetRate !== undefined && object.packetRate !== null) {
2559
+ message.packetRate = Number(object.packetRate);
2560
+ } else {
2561
+ message.packetRate = 0;
2562
+ }
2563
+ if (object.bytes !== undefined && object.bytes !== null) {
2564
+ message.bytes = Number(object.bytes);
2565
+ } else {
2566
+ message.bytes = 0;
2567
+ }
2568
+ if (object.bitrate !== undefined && object.bitrate !== null) {
2569
+ message.bitrate = Number(object.bitrate);
2570
+ } else {
2571
+ message.bitrate = 0;
2572
+ }
2573
+ if (object.packetsLost !== undefined && object.packetsLost !== null) {
2574
+ message.packetsLost = Number(object.packetsLost);
2575
+ } else {
2576
+ message.packetsLost = 0;
2577
+ }
2578
+ if (object.packetLossRate !== undefined && object.packetLossRate !== null) {
2579
+ message.packetLossRate = Number(object.packetLossRate);
2580
+ } else {
2581
+ message.packetLossRate = 0;
2582
+ }
2583
+ if (
2584
+ object.packetLossPercentage !== undefined &&
2585
+ object.packetLossPercentage !== null
2586
+ ) {
2587
+ message.packetLossPercentage = Number(object.packetLossPercentage);
2588
+ } else {
2589
+ message.packetLossPercentage = 0;
2590
+ }
2591
+ if (
2592
+ object.packetsDuplicate !== undefined &&
2593
+ object.packetsDuplicate !== null
2594
+ ) {
2595
+ message.packetsDuplicate = Number(object.packetsDuplicate);
2596
+ } else {
2597
+ message.packetsDuplicate = 0;
2598
+ }
2599
+ if (
2600
+ object.packetDuplicateRate !== undefined &&
2601
+ object.packetDuplicateRate !== null
2602
+ ) {
2603
+ message.packetDuplicateRate = Number(object.packetDuplicateRate);
2604
+ } else {
2605
+ message.packetDuplicateRate = 0;
2606
+ }
2607
+ if (object.bytesDuplicate !== undefined && object.bytesDuplicate !== null) {
2608
+ message.bytesDuplicate = Number(object.bytesDuplicate);
2609
+ } else {
2610
+ message.bytesDuplicate = 0;
2611
+ }
2612
+ if (
2613
+ object.bitrateDuplicate !== undefined &&
2614
+ object.bitrateDuplicate !== null
2615
+ ) {
2616
+ message.bitrateDuplicate = Number(object.bitrateDuplicate);
2617
+ } else {
2618
+ message.bitrateDuplicate = 0;
2619
+ }
2620
+ if (object.packetsPadding !== undefined && object.packetsPadding !== null) {
2621
+ message.packetsPadding = Number(object.packetsPadding);
2622
+ } else {
2623
+ message.packetsPadding = 0;
2624
+ }
2625
+ if (
2626
+ object.packetPaddingRate !== undefined &&
2627
+ object.packetPaddingRate !== null
2628
+ ) {
2629
+ message.packetPaddingRate = Number(object.packetPaddingRate);
2630
+ } else {
2631
+ message.packetPaddingRate = 0;
2632
+ }
2633
+ if (object.bytesPadding !== undefined && object.bytesPadding !== null) {
2634
+ message.bytesPadding = Number(object.bytesPadding);
2635
+ } else {
2636
+ message.bytesPadding = 0;
2637
+ }
2638
+ if (object.bitratePadding !== undefined && object.bitratePadding !== null) {
2639
+ message.bitratePadding = Number(object.bitratePadding);
2640
+ } else {
2641
+ message.bitratePadding = 0;
2642
+ }
2643
+ if (
2644
+ object.packetsOutOfOrder !== undefined &&
2645
+ object.packetsOutOfOrder !== null
2646
+ ) {
2647
+ message.packetsOutOfOrder = Number(object.packetsOutOfOrder);
2648
+ } else {
2649
+ message.packetsOutOfOrder = 0;
2650
+ }
2651
+ if (object.frames !== undefined && object.frames !== null) {
2652
+ message.frames = Number(object.frames);
2653
+ } else {
2654
+ message.frames = 0;
2655
+ }
2656
+ if (object.frameRate !== undefined && object.frameRate !== null) {
2657
+ message.frameRate = Number(object.frameRate);
2658
+ } else {
2659
+ message.frameRate = 0;
2660
+ }
2661
+ if (object.jitterCurrent !== undefined && object.jitterCurrent !== null) {
2662
+ message.jitterCurrent = Number(object.jitterCurrent);
2663
+ } else {
2664
+ message.jitterCurrent = 0;
2665
+ }
2666
+ if (object.jitterMax !== undefined && object.jitterMax !== null) {
2667
+ message.jitterMax = Number(object.jitterMax);
2668
+ } else {
2669
+ message.jitterMax = 0;
2670
+ }
2671
+ if (object.gapHistogram !== undefined && object.gapHistogram !== null) {
2672
+ Object.entries(object.gapHistogram).forEach(([key, value]) => {
2673
+ message.gapHistogram[Number(key)] = Number(value);
2674
+ });
2675
+ }
2676
+ if (object.nacks !== undefined && object.nacks !== null) {
2677
+ message.nacks = Number(object.nacks);
2678
+ } else {
2679
+ message.nacks = 0;
2680
+ }
2681
+ if (object.nackMisses !== undefined && object.nackMisses !== null) {
2682
+ message.nackMisses = Number(object.nackMisses);
2683
+ } else {
2684
+ message.nackMisses = 0;
2685
+ }
2686
+ if (object.plis !== undefined && object.plis !== null) {
2687
+ message.plis = Number(object.plis);
2688
+ } else {
2689
+ message.plis = 0;
2690
+ }
2691
+ if (object.lastPli !== undefined && object.lastPli !== null) {
2692
+ message.lastPli = fromJsonTimestamp(object.lastPli);
2693
+ } else {
2694
+ message.lastPli = undefined;
2695
+ }
2696
+ if (object.firs !== undefined && object.firs !== null) {
2697
+ message.firs = Number(object.firs);
2698
+ } else {
2699
+ message.firs = 0;
2700
+ }
2701
+ if (object.lastFir !== undefined && object.lastFir !== null) {
2702
+ message.lastFir = fromJsonTimestamp(object.lastFir);
2703
+ } else {
2704
+ message.lastFir = undefined;
2705
+ }
2706
+ if (object.rttCurrent !== undefined && object.rttCurrent !== null) {
2707
+ message.rttCurrent = Number(object.rttCurrent);
2708
+ } else {
2709
+ message.rttCurrent = 0;
2710
+ }
2711
+ if (object.rttMax !== undefined && object.rttMax !== null) {
2712
+ message.rttMax = Number(object.rttMax);
2713
+ } else {
2714
+ message.rttMax = 0;
2715
+ }
2716
+ if (object.keyFrames !== undefined && object.keyFrames !== null) {
2717
+ message.keyFrames = Number(object.keyFrames);
2718
+ } else {
2719
+ message.keyFrames = 0;
2720
+ }
2721
+ if (object.lastKeyFrame !== undefined && object.lastKeyFrame !== null) {
2722
+ message.lastKeyFrame = fromJsonTimestamp(object.lastKeyFrame);
2723
+ } else {
2724
+ message.lastKeyFrame = undefined;
2725
+ }
2726
+ if (object.layerLockPlis !== undefined && object.layerLockPlis !== null) {
2727
+ message.layerLockPlis = Number(object.layerLockPlis);
2728
+ } else {
2729
+ message.layerLockPlis = 0;
2730
+ }
2731
+ if (
2732
+ object.lastLayerLockPli !== undefined &&
2733
+ object.lastLayerLockPli !== null
2734
+ ) {
2735
+ message.lastLayerLockPli = fromJsonTimestamp(object.lastLayerLockPli);
2736
+ } else {
2737
+ message.lastLayerLockPli = undefined;
2738
+ }
2739
+ return message;
2740
+ },
2741
+
2742
+ toJSON(message: RTPStats): unknown {
2743
+ const obj: any = {};
2744
+ message.startTime !== undefined &&
2745
+ (obj.startTime = message.startTime.toISOString());
2746
+ message.endTime !== undefined &&
2747
+ (obj.endTime = message.endTime.toISOString());
2748
+ message.duration !== undefined && (obj.duration = message.duration);
2749
+ message.packets !== undefined && (obj.packets = message.packets);
2750
+ message.packetRate !== undefined && (obj.packetRate = message.packetRate);
2751
+ message.bytes !== undefined && (obj.bytes = message.bytes);
2752
+ message.bitrate !== undefined && (obj.bitrate = message.bitrate);
2753
+ message.packetsLost !== undefined &&
2754
+ (obj.packetsLost = message.packetsLost);
2755
+ message.packetLossRate !== undefined &&
2756
+ (obj.packetLossRate = message.packetLossRate);
2757
+ message.packetLossPercentage !== undefined &&
2758
+ (obj.packetLossPercentage = message.packetLossPercentage);
2759
+ message.packetsDuplicate !== undefined &&
2760
+ (obj.packetsDuplicate = message.packetsDuplicate);
2761
+ message.packetDuplicateRate !== undefined &&
2762
+ (obj.packetDuplicateRate = message.packetDuplicateRate);
2763
+ message.bytesDuplicate !== undefined &&
2764
+ (obj.bytesDuplicate = message.bytesDuplicate);
2765
+ message.bitrateDuplicate !== undefined &&
2766
+ (obj.bitrateDuplicate = message.bitrateDuplicate);
2767
+ message.packetsPadding !== undefined &&
2768
+ (obj.packetsPadding = message.packetsPadding);
2769
+ message.packetPaddingRate !== undefined &&
2770
+ (obj.packetPaddingRate = message.packetPaddingRate);
2771
+ message.bytesPadding !== undefined &&
2772
+ (obj.bytesPadding = message.bytesPadding);
2773
+ message.bitratePadding !== undefined &&
2774
+ (obj.bitratePadding = message.bitratePadding);
2775
+ message.packetsOutOfOrder !== undefined &&
2776
+ (obj.packetsOutOfOrder = message.packetsOutOfOrder);
2777
+ message.frames !== undefined && (obj.frames = message.frames);
2778
+ message.frameRate !== undefined && (obj.frameRate = message.frameRate);
2779
+ message.jitterCurrent !== undefined &&
2780
+ (obj.jitterCurrent = message.jitterCurrent);
2781
+ message.jitterMax !== undefined && (obj.jitterMax = message.jitterMax);
2782
+ obj.gapHistogram = {};
2783
+ if (message.gapHistogram) {
2784
+ Object.entries(message.gapHistogram).forEach(([k, v]) => {
2785
+ obj.gapHistogram[k] = v;
2786
+ });
2787
+ }
2788
+ message.nacks !== undefined && (obj.nacks = message.nacks);
2789
+ message.nackMisses !== undefined && (obj.nackMisses = message.nackMisses);
2790
+ message.plis !== undefined && (obj.plis = message.plis);
2791
+ message.lastPli !== undefined &&
2792
+ (obj.lastPli = message.lastPli.toISOString());
2793
+ message.firs !== undefined && (obj.firs = message.firs);
2794
+ message.lastFir !== undefined &&
2795
+ (obj.lastFir = message.lastFir.toISOString());
2796
+ message.rttCurrent !== undefined && (obj.rttCurrent = message.rttCurrent);
2797
+ message.rttMax !== undefined && (obj.rttMax = message.rttMax);
2798
+ message.keyFrames !== undefined && (obj.keyFrames = message.keyFrames);
2799
+ message.lastKeyFrame !== undefined &&
2800
+ (obj.lastKeyFrame = message.lastKeyFrame.toISOString());
2801
+ message.layerLockPlis !== undefined &&
2802
+ (obj.layerLockPlis = message.layerLockPlis);
2803
+ message.lastLayerLockPli !== undefined &&
2804
+ (obj.lastLayerLockPli = message.lastLayerLockPli.toISOString());
2805
+ return obj;
2806
+ },
2807
+
2808
+ fromPartial(object: DeepPartial<RTPStats>): RTPStats {
2809
+ const message = { ...baseRTPStats } as RTPStats;
2810
+ message.startTime = object.startTime ?? undefined;
2811
+ message.endTime = object.endTime ?? undefined;
2812
+ message.duration = object.duration ?? 0;
2813
+ message.packets = object.packets ?? 0;
2814
+ message.packetRate = object.packetRate ?? 0;
2815
+ message.bytes = object.bytes ?? 0;
2816
+ message.bitrate = object.bitrate ?? 0;
2817
+ message.packetsLost = object.packetsLost ?? 0;
2818
+ message.packetLossRate = object.packetLossRate ?? 0;
2819
+ message.packetLossPercentage = object.packetLossPercentage ?? 0;
2820
+ message.packetsDuplicate = object.packetsDuplicate ?? 0;
2821
+ message.packetDuplicateRate = object.packetDuplicateRate ?? 0;
2822
+ message.bytesDuplicate = object.bytesDuplicate ?? 0;
2823
+ message.bitrateDuplicate = object.bitrateDuplicate ?? 0;
2824
+ message.packetsPadding = object.packetsPadding ?? 0;
2825
+ message.packetPaddingRate = object.packetPaddingRate ?? 0;
2826
+ message.bytesPadding = object.bytesPadding ?? 0;
2827
+ message.bitratePadding = object.bitratePadding ?? 0;
2828
+ message.packetsOutOfOrder = object.packetsOutOfOrder ?? 0;
2829
+ message.frames = object.frames ?? 0;
2830
+ message.frameRate = object.frameRate ?? 0;
2831
+ message.jitterCurrent = object.jitterCurrent ?? 0;
2832
+ message.jitterMax = object.jitterMax ?? 0;
2833
+ message.gapHistogram = {};
2834
+ if (object.gapHistogram !== undefined && object.gapHistogram !== null) {
2835
+ Object.entries(object.gapHistogram).forEach(([key, value]) => {
2836
+ if (value !== undefined) {
2837
+ message.gapHistogram[Number(key)] = Number(value);
2838
+ }
2839
+ });
2840
+ }
2841
+ message.nacks = object.nacks ?? 0;
2842
+ message.nackMisses = object.nackMisses ?? 0;
2843
+ message.plis = object.plis ?? 0;
2844
+ message.lastPli = object.lastPli ?? undefined;
2845
+ message.firs = object.firs ?? 0;
2846
+ message.lastFir = object.lastFir ?? undefined;
2847
+ message.rttCurrent = object.rttCurrent ?? 0;
2848
+ message.rttMax = object.rttMax ?? 0;
2849
+ message.keyFrames = object.keyFrames ?? 0;
2850
+ message.lastKeyFrame = object.lastKeyFrame ?? undefined;
2851
+ message.layerLockPlis = object.layerLockPlis ?? 0;
2852
+ message.lastLayerLockPli = object.lastLayerLockPli ?? undefined;
2853
+ return message;
2854
+ },
2855
+ };
2856
+
2857
+ const baseRTPStats_GapHistogramEntry: object = { key: 0, value: 0 };
2858
+
2859
+ export const RTPStats_GapHistogramEntry = {
2860
+ encode(
2861
+ message: RTPStats_GapHistogramEntry,
2862
+ writer: _m0.Writer = _m0.Writer.create()
2863
+ ): _m0.Writer {
2864
+ if (message.key !== 0) {
2865
+ writer.uint32(8).int32(message.key);
2866
+ }
2867
+ if (message.value !== 0) {
2868
+ writer.uint32(16).uint32(message.value);
2869
+ }
2870
+ return writer;
2871
+ },
2872
+
2873
+ decode(
2874
+ input: _m0.Reader | Uint8Array,
2875
+ length?: number
2876
+ ): RTPStats_GapHistogramEntry {
2877
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
2878
+ let end = length === undefined ? reader.len : reader.pos + length;
2879
+ const message = {
2880
+ ...baseRTPStats_GapHistogramEntry,
2881
+ } as RTPStats_GapHistogramEntry;
2882
+ while (reader.pos < end) {
2883
+ const tag = reader.uint32();
2884
+ switch (tag >>> 3) {
2885
+ case 1:
2886
+ message.key = reader.int32();
2887
+ break;
2888
+ case 2:
2889
+ message.value = reader.uint32();
2890
+ break;
2891
+ default:
2892
+ reader.skipType(tag & 7);
2893
+ break;
2894
+ }
2895
+ }
2896
+ return message;
2897
+ },
2898
+
2899
+ fromJSON(object: any): RTPStats_GapHistogramEntry {
2900
+ const message = {
2901
+ ...baseRTPStats_GapHistogramEntry,
2902
+ } as RTPStats_GapHistogramEntry;
2903
+ if (object.key !== undefined && object.key !== null) {
2904
+ message.key = Number(object.key);
2905
+ } else {
2906
+ message.key = 0;
2907
+ }
2908
+ if (object.value !== undefined && object.value !== null) {
2909
+ message.value = Number(object.value);
2910
+ } else {
2911
+ message.value = 0;
2912
+ }
2913
+ return message;
2914
+ },
2915
+
2916
+ toJSON(message: RTPStats_GapHistogramEntry): unknown {
2917
+ const obj: any = {};
2918
+ message.key !== undefined && (obj.key = message.key);
2919
+ message.value !== undefined && (obj.value = message.value);
2920
+ return obj;
2921
+ },
2922
+
2923
+ fromPartial(
2924
+ object: DeepPartial<RTPStats_GapHistogramEntry>
2925
+ ): RTPStats_GapHistogramEntry {
2926
+ const message = {
2927
+ ...baseRTPStats_GapHistogramEntry,
2928
+ } as RTPStats_GapHistogramEntry;
2929
+ message.key = object.key ?? 0;
2930
+ message.value = object.value ?? 0;
2931
+ return message;
2932
+ },
2933
+ };
2934
+
2050
2935
  declare var self: any | undefined;
2051
2936
  declare var window: any | undefined;
2052
2937
  declare var global: any | undefined;
@@ -2099,6 +2984,28 @@ export type DeepPartial<T> = T extends Builtin
2099
2984
  ? { [K in keyof T]?: DeepPartial<T[K]> }
2100
2985
  : Partial<T>;
2101
2986
 
2987
+ function toTimestamp(date: Date): Timestamp {
2988
+ const seconds = date.getTime() / 1_000;
2989
+ const nanos = (date.getTime() % 1_000) * 1_000_000;
2990
+ return { seconds, nanos };
2991
+ }
2992
+
2993
+ function fromTimestamp(t: Timestamp): Date {
2994
+ let millis = t.seconds * 1_000;
2995
+ millis += t.nanos / 1_000_000;
2996
+ return new Date(millis);
2997
+ }
2998
+
2999
+ function fromJsonTimestamp(o: any): Date {
3000
+ if (o instanceof Date) {
3001
+ return o;
3002
+ } else if (typeof o === "string") {
3003
+ return new Date(o);
3004
+ } else {
3005
+ return fromTimestamp(Timestamp.fromJSON(o));
3006
+ }
3007
+ }
3008
+
2102
3009
  function longToNumber(long: Long): number {
2103
3010
  if (long.gt(Number.MAX_SAFE_INTEGER)) {
2104
3011
  throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER");