@webex/web-client-media-engine 1.37.5 → 1.37.6

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/dist/cjs/index.js CHANGED
@@ -8573,6 +8573,7 @@ class ReceiveSlot extends EventEmitter {
8573
8573
  this.handleTrackMuted = this.handleTrackMuted.bind(this);
8574
8574
  this.handleTrackUnmuted = this.handleTrackUnmuted.bind(this);
8575
8575
  this._stream = new MediaStream([track]);
8576
+ this._sourceState = 'no source';
8576
8577
  this.addTrackHandlers(track);
8577
8578
  }
8578
8579
  addTrackHandlers(track) {
@@ -8600,8 +8601,11 @@ class ReceiveSlot extends EventEmitter {
8600
8601
  this._stream.addTrack(newTrack);
8601
8602
  }
8602
8603
  _updateSource(state, csi) {
8603
- this.currentRxCsi = csi;
8604
- this.emit(exports.ReceiveSlotEvents.SourceUpdate, state, csi);
8604
+ if (state !== this._sourceState || csi !== this._currentRxCsi) {
8605
+ this._sourceState = state;
8606
+ this._currentRxCsi = csi;
8607
+ this.emit(exports.ReceiveSlotEvents.SourceUpdate, state, csi);
8608
+ }
8605
8609
  }
8606
8610
  close() {
8607
8611
  this._stream.getTracks().forEach((t) => {
@@ -8614,6 +8618,9 @@ class ReceiveSlot extends EventEmitter {
8614
8618
  get stream() {
8615
8619
  return this._stream;
8616
8620
  }
8621
+ get currentRxCsi() {
8622
+ return this._currentRxCsi;
8623
+ }
8617
8624
  }
8618
8625
  ReceiveSlot.Events = exports.ReceiveSlotEvents;
8619
8626
 
@@ -9677,8 +9684,9 @@ class MultistreamConnection extends EventEmitter {
9677
9684
  this.dataChannel.send(msg);
9678
9685
  });
9679
9686
  if (getMediaFamily(mediaType) === MediaFamily.Video) {
9687
+ let prevNumTotalSources = 0;
9688
+ let prevNumLiveSources = 0;
9680
9689
  jmpSession.on(JmpSessionEvents.SourceIndication, (data) => {
9681
- this.emit(exports.MultistreamConnectionEventNames.VideoSourceCountUpdate, data.numTotalSources, data.numLiveSources);
9682
9690
  data.sources.forEach((s) => {
9683
9691
  const receiveSlot = this.getReceiveSlotById(s.id);
9684
9692
  if (!receiveSlot) {
@@ -9687,6 +9695,12 @@ class MultistreamConnection extends EventEmitter {
9687
9695
  }
9688
9696
  receiveSlot._updateSource(s.state, s.csi);
9689
9697
  });
9698
+ if (data.numTotalSources !== prevNumTotalSources ||
9699
+ data.numLiveSources !== prevNumLiveSources) {
9700
+ prevNumTotalSources = data.numTotalSources;
9701
+ prevNumLiveSources = data.numLiveSources;
9702
+ this.emit(exports.MultistreamConnectionEventNames.VideoSourceCountUpdate, data.numTotalSources, data.numLiveSources, getMediaContent(mediaType));
9703
+ }
9690
9704
  });
9691
9705
  jmpSession.on(JmpSessionEvents.ScrRequestReceived, (data) => {
9692
9706
  this.sendSourceWarnings(mediaType, data.requests);
@@ -9694,8 +9708,9 @@ class MultistreamConnection extends EventEmitter {
9694
9708
  });
9695
9709
  }
9696
9710
  if (getMediaFamily(mediaType) === MediaFamily.Audio) {
9711
+ let prevNumTotalSources = 0;
9712
+ let prevNumLiveSources = 0;
9697
9713
  jmpSession.on(JmpSessionEvents.SourceIndication, (data) => {
9698
- this.emit(exports.MultistreamConnectionEventNames.AudioSourceCountUpdate, data.numTotalSources, data.numLiveSources);
9699
9714
  data.sources.forEach((s) => {
9700
9715
  const receiveSlot = this.getReceiveSlotById(s.id);
9701
9716
  if (!receiveSlot) {
@@ -9704,6 +9719,12 @@ class MultistreamConnection extends EventEmitter {
9704
9719
  }
9705
9720
  receiveSlot._updateSource(s.state, s.csi);
9706
9721
  });
9722
+ if (data.numTotalSources !== prevNumTotalSources ||
9723
+ data.numLiveSources !== prevNumLiveSources) {
9724
+ prevNumTotalSources = data.numTotalSources;
9725
+ prevNumLiveSources = data.numLiveSources;
9726
+ this.emit(exports.MultistreamConnectionEventNames.AudioSourceCountUpdate, data.numTotalSources, data.numLiveSources, getMediaContent(mediaType));
9727
+ }
9707
9728
  });
9708
9729
  jmpSession.on(JmpSessionEvents.ActiveSpeaker, (data) => this.emit(exports.MultistreamConnectionEventNames.ActiveSpeakerNotification, data));
9709
9730
  jmpSession.on(JmpSessionEvents.ScrRequestReceived, (data) => {