@webex/web-client-media-engine 3.28.1 → 3.28.3

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/esm/index.js CHANGED
@@ -10454,6 +10454,7 @@ class EventEmitter$2 extends events$1.exports.EventEmitter {
10454
10454
 
10455
10455
  class IngressSdpMunger {
10456
10456
  constructor() {
10457
+ this.customCodecParameters = new Map();
10457
10458
  this.customRtxCodecParameters = new Map();
10458
10459
  this.ssrc = generateSsrc();
10459
10460
  }
@@ -10466,6 +10467,7 @@ class IngressSdpMunger {
10466
10467
  logErrorAndThrow(WcmeErrorType.SDP_MUNGE_MISSING_CODECS, `No codecs present in m-line with MID ${mediaDescription.mid} after filtering.`);
10467
10468
  }
10468
10469
  removeMidRidExtensions(mediaDescription);
10470
+ applyFormatParameters(mediaDescription, ['H264', 'opus'], this.customCodecParameters);
10469
10471
  applyFormatParameters(mediaDescription, ['rtx'], this.customRtxCodecParameters);
10470
10472
  if (options.twccDisabled) {
10471
10473
  disableTwcc(mediaDescription);
@@ -10492,6 +10494,11 @@ class IngressSdpMunger {
10492
10494
  });
10493
10495
  applyFormatParameters(mediaDescription, ['rtx'], this.customRtxCodecParameters);
10494
10496
  }
10497
+ setCodecParameters(parameters) {
10498
+ Object.entries(parameters).forEach(([param, value]) => {
10499
+ this.customCodecParameters.set(param, value);
10500
+ });
10501
+ }
10495
10502
  setRtxCodecParameters(parameters) {
10496
10503
  Object.entries(parameters).forEach(([param, value]) => {
10497
10504
  this.customRtxCodecParameters.set(param, value);
@@ -10662,7 +10669,18 @@ class Transceiver {
10662
10669
  return this._rtcRtpTransceiver.sender;
10663
10670
  }
10664
10671
  close() {
10665
- this._rtcRtpTransceiver.stop();
10672
+ try {
10673
+ this._rtcRtpTransceiver.stop();
10674
+ }
10675
+ catch (error) {
10676
+ if (error instanceof DOMException && error.name === 'InvalidStateError') {
10677
+ logger.warn('Peer connection is already closed, skipping call to RTCRtpTransceiver.stop()');
10678
+ }
10679
+ else {
10680
+ logger.error('An unexpected error occurred while stopping the RTCRtpTransceiver:', error);
10681
+ throw error;
10682
+ }
10683
+ }
10666
10684
  }
10667
10685
  }
10668
10686
 
@@ -10753,6 +10771,9 @@ class ReceiveOnlyTransceiver extends Transceiver {
10753
10771
  this.metadata.lastActiveSpeakerUpdateTimestamp = getCurrentTimestamp();
10754
10772
  }
10755
10773
  }
10774
+ setCodecParameters(parameters) {
10775
+ this.munger.setCodecParameters(parameters);
10776
+ }
10756
10777
  setRtxCodecParameters(parameters) {
10757
10778
  this.munger.setRtxCodecParameters(parameters);
10758
10779
  }
@@ -15313,6 +15334,9 @@ SCTP Max Message Size: ${maxMessageSize}`);
15313
15334
  munger,
15314
15335
  });
15315
15336
  if (getMediaFamily(mediaType) === MediaFamily.Video) {
15337
+ recvOnlyTransceiver.setCodecParameters({
15338
+ 'sps-pps-idr-in-keyframe': '1',
15339
+ });
15316
15340
  recvOnlyTransceiver.setRtxCodecParameters({
15317
15341
  'rtx-time': mediaType === MediaType.VideoMain ? defaultVideoMainRtxTime : defaultVideoSlidesRtxTime,
15318
15342
  });