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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
 
@@ -9092,6 +9099,7 @@ class SsrcEgressStreamSignaler {
9092
9099
  mLine.simulcast = undefined;
9093
9100
  mLine.ssrcs = [];
9094
9101
  mLine.ssrcGroups = [];
9102
+ mLine.extMaps = mLine.extMaps.filter((extMapLine) => !/^urn:ietf:params:rtp-hdrext:sdes:(?:mid|rtp-stream-id|repaired-rtp-stream-id)$/.test(extMapLine.uri));
9095
9103
  if (this.streamIds.length === 0) {
9096
9104
  const numStreams = simulcastEnabled ? 3 : 1;
9097
9105
  [...Array(numStreams).keys()].forEach(() => {
@@ -9677,8 +9685,9 @@ class MultistreamConnection extends EventEmitter {
9677
9685
  this.dataChannel.send(msg);
9678
9686
  });
9679
9687
  if (getMediaFamily(mediaType) === MediaFamily.Video) {
9688
+ let prevNumTotalSources = 0;
9689
+ let prevNumLiveSources = 0;
9680
9690
  jmpSession.on(JmpSessionEvents.SourceIndication, (data) => {
9681
- this.emit(exports.MultistreamConnectionEventNames.VideoSourceCountUpdate, data.numTotalSources, data.numLiveSources);
9682
9691
  data.sources.forEach((s) => {
9683
9692
  const receiveSlot = this.getReceiveSlotById(s.id);
9684
9693
  if (!receiveSlot) {
@@ -9687,6 +9696,12 @@ class MultistreamConnection extends EventEmitter {
9687
9696
  }
9688
9697
  receiveSlot._updateSource(s.state, s.csi);
9689
9698
  });
9699
+ if (data.numTotalSources !== prevNumTotalSources ||
9700
+ data.numLiveSources !== prevNumLiveSources) {
9701
+ prevNumTotalSources = data.numTotalSources;
9702
+ prevNumLiveSources = data.numLiveSources;
9703
+ this.emit(exports.MultistreamConnectionEventNames.VideoSourceCountUpdate, data.numTotalSources, data.numLiveSources, getMediaContent(mediaType));
9704
+ }
9690
9705
  });
9691
9706
  jmpSession.on(JmpSessionEvents.ScrRequestReceived, (data) => {
9692
9707
  this.sendSourceWarnings(mediaType, data.requests);
@@ -9694,8 +9709,9 @@ class MultistreamConnection extends EventEmitter {
9694
9709
  });
9695
9710
  }
9696
9711
  if (getMediaFamily(mediaType) === MediaFamily.Audio) {
9712
+ let prevNumTotalSources = 0;
9713
+ let prevNumLiveSources = 0;
9697
9714
  jmpSession.on(JmpSessionEvents.SourceIndication, (data) => {
9698
- this.emit(exports.MultistreamConnectionEventNames.AudioSourceCountUpdate, data.numTotalSources, data.numLiveSources);
9699
9715
  data.sources.forEach((s) => {
9700
9716
  const receiveSlot = this.getReceiveSlotById(s.id);
9701
9717
  if (!receiveSlot) {
@@ -9704,6 +9720,12 @@ class MultistreamConnection extends EventEmitter {
9704
9720
  }
9705
9721
  receiveSlot._updateSource(s.state, s.csi);
9706
9722
  });
9723
+ if (data.numTotalSources !== prevNumTotalSources ||
9724
+ data.numLiveSources !== prevNumLiveSources) {
9725
+ prevNumTotalSources = data.numTotalSources;
9726
+ prevNumLiveSources = data.numLiveSources;
9727
+ this.emit(exports.MultistreamConnectionEventNames.AudioSourceCountUpdate, data.numTotalSources, data.numLiveSources, getMediaContent(mediaType));
9728
+ }
9707
9729
  });
9708
9730
  jmpSession.on(JmpSessionEvents.ActiveSpeaker, (data) => this.emit(exports.MultistreamConnectionEventNames.ActiveSpeakerNotification, data));
9709
9731
  jmpSession.on(JmpSessionEvents.ScrRequestReceived, (data) => {