@webex/web-client-media-engine 3.17.0 → 3.17.2

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
@@ -10464,7 +10464,7 @@ class Transceiver {
10464
10464
  class ReceiveOnlyTransceiver extends Transceiver {
10465
10465
  constructor(rtcRtpTransceiver, mid, munger) {
10466
10466
  super(rtcRtpTransceiver, mid);
10467
- this.metadata = {};
10467
+ this.metadata = { isActiveSpeaker: false };
10468
10468
  this.munger = munger;
10469
10469
  this._receiveSlot = new ReceiveSlot(() => {
10470
10470
  if (!this._rtcRtpTransceiver.mid) {
@@ -10495,6 +10495,8 @@ class ReceiveOnlyTransceiver extends Transceiver {
10495
10495
  stats.calliopeMediaType = this.metadata.mediaType;
10496
10496
  stats.requestedBitrate = this.metadata.requestedBitrate;
10497
10497
  stats.requestedFrameSize = this.metadata.requestedFrameSize;
10498
+ stats.isActiveSpeaker = this.metadata.isActiveSpeaker;
10499
+ stats.lastActiveSpeakerUpdateTimestamp = this.metadata.lastActiveSpeakerUpdateTimestamp;
10498
10500
  Object.assign(stats, this.receiverId);
10499
10501
  }
10500
10502
  statsMap.set(key, stats);
@@ -10524,6 +10526,12 @@ class ReceiveOnlyTransceiver extends Transceiver {
10524
10526
  this.metadata.requestedFrameSize = undefined;
10525
10527
  this.receiveSlot._updateSource('no source', undefined);
10526
10528
  }
10529
+ handleActiveSpeakerUpdate(value) {
10530
+ if (this.metadata.isActiveSpeaker !== value) {
10531
+ this.metadata.isActiveSpeaker = value;
10532
+ this.metadata.lastActiveSpeakerUpdateTimestamp = performance.timeOrigin + performance.now();
10533
+ }
10534
+ }
10527
10535
  }
10528
10536
  ReceiveOnlyTransceiver.rid = '1';
10529
10537
 
@@ -14808,6 +14816,15 @@ SCTP Max Message Size: ${maxMessageSize}`);
14808
14816
  });
14809
14817
  jmpSession.on(JmpSessionEvents.ActiveSpeaker, (data) => {
14810
14818
  this.emit(exports.MultistreamConnectionEventNames.ActiveSpeakerNotification, data.csis);
14819
+ this.recvTransceivers.forEach((transceivers) => {
14820
+ transceivers.forEach((t) => {
14821
+ const { currentRxCsi } = t.receiveSlot;
14822
+ if (currentRxCsi !== undefined) {
14823
+ const isActiveSpeaker = data.csis.some((activeCsi) => (activeCsi & 0xfffffffe) === (currentRxCsi & 0xfffffffe));
14824
+ t.handleActiveSpeakerUpdate(isActiveSpeaker);
14825
+ }
14826
+ });
14827
+ });
14811
14828
  });
14812
14829
  this.jmpSessions.set(mediaType, jmpSession);
14813
14830
  }