@stream-io/video-client 0.3.35 → 0.3.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ### [0.3.36](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-client-0.3.35...@stream-io/video-client-0.3.36) (2023-10-25)
6
+
7
+
8
+ ### Features
9
+
10
+ * **dynascale:** pick scaleResolutionDownBy parameter from the changePublishQuality message ([#1113](https://github.com/GetStream/stream-video-js/issues/1113)) ([81b91d4](https://github.com/GetStream/stream-video-js/commit/81b91d48ca90a74f6af4b879c553ff2575dcb5bb))
11
+
5
12
  ### [0.3.35](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-client-0.3.34...@stream-io/video-client-0.3.35) (2023-10-19)
6
13
 
7
14
 
@@ -864,6 +864,10 @@ var ErrorCode;
864
864
  * @generated from protobuf enum value: ERROR_CODE_SFU_SHUTTING_DOWN = 600;
865
865
  */
866
866
  ErrorCode[ErrorCode["SFU_SHUTTING_DOWN"] = 600] = "SFU_SHUTTING_DOWN";
867
+ /**
868
+ * @generated from protobuf enum value: ERROR_CODE_SFU_FULL = 700;
869
+ */
870
+ ErrorCode[ErrorCode["SFU_FULL"] = 700] = "SFU_FULL";
867
871
  })(ErrorCode || (ErrorCode = {}));
868
872
  /**
869
873
  * @generated from protobuf enum stream.video.sfu.models.SdkType
@@ -898,6 +902,10 @@ var SdkType;
898
902
  * @generated from protobuf enum value: SDK_TYPE_REACT_NATIVE = 6;
899
903
  */
900
904
  SdkType[SdkType["REACT_NATIVE"] = 6] = "REACT_NATIVE";
905
+ /**
906
+ * @generated from protobuf enum value: SDK_TYPE_UNITY = 7;
907
+ */
908
+ SdkType[SdkType["UNITY"] = 7] = "UNITY";
901
909
  })(SdkType || (SdkType = {}));
902
910
  /**
903
911
  * @generated from protobuf enum stream.video.sfu.models.TrackUnpublishReason
@@ -5325,6 +5333,12 @@ class VideoLayerSetting$Type extends MessageType {
5325
5333
  ],
5326
5334
  },
5327
5335
  { no: 6, name: 'codec', kind: 'message', T: () => Codec },
5336
+ {
5337
+ no: 7,
5338
+ name: 'max_framerate',
5339
+ kind: 'scalar',
5340
+ T: 13 /*ScalarType.UINT32*/,
5341
+ },
5328
5342
  ]);
5329
5343
  }
5330
5344
  create(value) {
@@ -5334,6 +5348,7 @@ class VideoLayerSetting$Type extends MessageType {
5334
5348
  maxBitrate: 0,
5335
5349
  scaleResolutionDownBy: 0,
5336
5350
  priority: 0,
5351
+ maxFramerate: 0,
5337
5352
  };
5338
5353
  globalThis.Object.defineProperty(message, MESSAGE_TYPE, {
5339
5354
  enumerable: false,
@@ -5366,6 +5381,9 @@ class VideoLayerSetting$Type extends MessageType {
5366
5381
  case /* stream.video.sfu.models.Codec codec */ 6:
5367
5382
  message.codec = Codec.internalBinaryRead(reader, reader.uint32(), options, message.codec);
5368
5383
  break;
5384
+ case /* uint32 max_framerate */ 7:
5385
+ message.maxFramerate = reader.uint32();
5386
+ break;
5369
5387
  default:
5370
5388
  let u = options.readUnknownField;
5371
5389
  if (u === 'throw')
@@ -5396,6 +5414,9 @@ class VideoLayerSetting$Type extends MessageType {
5396
5414
  /* stream.video.sfu.models.Codec codec = 6; */
5397
5415
  if (message.codec)
5398
5416
  Codec.internalBinaryWrite(message.codec, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
5417
+ /* uint32 max_framerate = 7; */
5418
+ if (message.maxFramerate !== 0)
5419
+ writer.tag(7, WireType.Varint).uint32(message.maxFramerate);
5399
5420
  let u = options.writeUnknownFields;
5400
5421
  if (u !== false)
5401
5422
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -6632,8 +6653,8 @@ class Publisher {
6632
6653
  }
6633
6654
  });
6634
6655
  };
6635
- this.updateVideoPublishQuality = async (enabledRids) => {
6636
- logger$3('info', 'Update publish quality, requested rids by SFU:', enabledRids);
6656
+ this.updateVideoPublishQuality = async (enabledLayers) => {
6657
+ logger$3('info', 'Update publish quality, requested layers by SFU:', enabledLayers);
6637
6658
  const videoSender = this.transceiverRegistry[TrackType.VIDEO]?.sender;
6638
6659
  if (!videoSender) {
6639
6660
  logger$3('warn', 'Update publish quality, no video sender found.');
@@ -6645,6 +6666,9 @@ class Publisher {
6645
6666
  return;
6646
6667
  }
6647
6668
  let changed = false;
6669
+ let enabledRids = enabledLayers
6670
+ .filter((ly) => ly.active)
6671
+ .map((ly) => ly.name);
6648
6672
  params.encodings.forEach((enc) => {
6649
6673
  // flip 'active' flag only when necessary
6650
6674
  const shouldEnable = enabledRids.includes(enc.rid);
@@ -6652,17 +6676,36 @@ class Publisher {
6652
6676
  enc.active = shouldEnable;
6653
6677
  changed = true;
6654
6678
  }
6679
+ if (shouldEnable) {
6680
+ let layer = enabledLayers.find((vls) => vls.name === enc.rid);
6681
+ if (layer !== undefined) {
6682
+ if (layer.scaleResolutionDownBy >= 1 &&
6683
+ layer.scaleResolutionDownBy !== enc.scaleResolutionDownBy) {
6684
+ logger$3('debug', '[dynascale]: setting scaleResolutionDownBy from server', 'layer', layer.name, 'scale-resolution-down-by', layer.scaleResolutionDownBy);
6685
+ enc.scaleResolutionDownBy = layer.scaleResolutionDownBy;
6686
+ changed = true;
6687
+ }
6688
+ if (layer.maxBitrate > 0 && layer.maxBitrate !== enc.maxBitrate) {
6689
+ logger$3('debug', '[dynascale] setting max-bitrate from the server', 'layer', layer.name, 'max-bitrate', layer.maxBitrate);
6690
+ enc.maxBitrate = layer.maxBitrate;
6691
+ changed = true;
6692
+ }
6693
+ if (layer.maxFramerate > 0 &&
6694
+ layer.maxFramerate !== enc.maxFramerate) {
6695
+ logger$3('debug', '[dynascale]: setting maxFramerate from server', 'layer', layer.name, 'max-framerate', layer.maxFramerate);
6696
+ enc.maxFramerate = layer.maxFramerate;
6697
+ changed = true;
6698
+ }
6699
+ }
6700
+ }
6655
6701
  });
6656
- const activeRids = params.encodings
6657
- .filter((e) => e.active)
6658
- .map((e) => e.rid)
6659
- .join(', ');
6702
+ const activeLayers = params.encodings.filter((e) => e.active);
6660
6703
  if (changed) {
6661
6704
  await videoSender.setParameters(params);
6662
- logger$3('info', `Update publish quality, enabled rids: ${activeRids}`);
6705
+ logger$3('info', `Update publish quality, enabled rids: `, activeLayers);
6663
6706
  }
6664
6707
  else {
6665
- logger$3('info', `Update publish quality, no change: ${activeRids}`);
6708
+ logger$3('info', `Update publish quality, no change: `, activeLayers);
6666
6709
  }
6667
6710
  };
6668
6711
  /**
@@ -8798,7 +8841,7 @@ const watchChangePublishQuality = (dispatcher, call) => {
8798
8841
  const { videoSenders } = e.eventPayload.changePublishQuality;
8799
8842
  videoSenders.forEach((videoSender) => {
8800
8843
  const { layers } = videoSender;
8801
- call.updatePublishQuality(layers.filter((l) => l.active).map((l) => l.name));
8844
+ call.updatePublishQuality(layers.filter((l) => l.active));
8802
8845
  });
8803
8846
  });
8804
8847
  };
@@ -11088,7 +11131,7 @@ class Call {
11088
11131
  *
11089
11132
  * @param params.ring if set to true, a `call.ring` event will be sent to the call members.
11090
11133
  * @param params.notify if set to true, a `call.notification` event will be sent to the call members.
11091
- * @param params.members_limit the members limit.
11134
+ * @param params.members_limit the total number of members to return as part of the response.
11092
11135
  */
11093
11136
  this.get = async (params) => {
11094
11137
  const response = await this.streamClient.get(this.streamClientBasePath, params);
@@ -11760,8 +11803,8 @@ class Call {
11760
11803
  * @param enabledRids
11761
11804
  * @returns
11762
11805
  */
11763
- this.updatePublishQuality = async (enabledRids) => {
11764
- return this.publisher?.updateVideoPublishQuality(enabledRids);
11806
+ this.updatePublishQuality = async (enabledLayers) => {
11807
+ return this.publisher?.updateVideoPublishQuality(enabledLayers);
11765
11808
  };
11766
11809
  this.assertCallJoined = () => {
11767
11810
  return new Promise((resolve) => {
@@ -13972,7 +14015,7 @@ class StreamClient {
13972
14015
  });
13973
14016
  };
13974
14017
  this.getUserAgent = () => {
13975
- const version = "0.3.35" ;
14018
+ const version = "0.3.36" ;
13976
14019
  return (this.userAgent ||
13977
14020
  `stream-video-javascript-client-${this.node ? 'node' : 'browser'}-${version}`);
13978
14021
  };