@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/cjs/index.js CHANGED
@@ -10458,6 +10458,7 @@ class EventEmitter$2 extends events$1.exports.EventEmitter {
10458
10458
 
10459
10459
  class IngressSdpMunger {
10460
10460
  constructor() {
10461
+ this.customCodecParameters = new Map();
10461
10462
  this.customRtxCodecParameters = new Map();
10462
10463
  this.ssrc = generateSsrc();
10463
10464
  }
@@ -10470,6 +10471,7 @@ class IngressSdpMunger {
10470
10471
  logErrorAndThrow(exports.WcmeErrorType.SDP_MUNGE_MISSING_CODECS, `No codecs present in m-line with MID ${mediaDescription.mid} after filtering.`);
10471
10472
  }
10472
10473
  removeMidRidExtensions(mediaDescription);
10474
+ applyFormatParameters(mediaDescription, ['H264', 'opus'], this.customCodecParameters);
10473
10475
  applyFormatParameters(mediaDescription, ['rtx'], this.customRtxCodecParameters);
10474
10476
  if (options.twccDisabled) {
10475
10477
  disableTwcc(mediaDescription);
@@ -10496,6 +10498,11 @@ class IngressSdpMunger {
10496
10498
  });
10497
10499
  applyFormatParameters(mediaDescription, ['rtx'], this.customRtxCodecParameters);
10498
10500
  }
10501
+ setCodecParameters(parameters) {
10502
+ Object.entries(parameters).forEach(([param, value]) => {
10503
+ this.customCodecParameters.set(param, value);
10504
+ });
10505
+ }
10499
10506
  setRtxCodecParameters(parameters) {
10500
10507
  Object.entries(parameters).forEach(([param, value]) => {
10501
10508
  this.customRtxCodecParameters.set(param, value);
@@ -10666,7 +10673,18 @@ class Transceiver {
10666
10673
  return this._rtcRtpTransceiver.sender;
10667
10674
  }
10668
10675
  close() {
10669
- this._rtcRtpTransceiver.stop();
10676
+ try {
10677
+ this._rtcRtpTransceiver.stop();
10678
+ }
10679
+ catch (error) {
10680
+ if (error instanceof DOMException && error.name === 'InvalidStateError') {
10681
+ logger.warn('Peer connection is already closed, skipping call to RTCRtpTransceiver.stop()');
10682
+ }
10683
+ else {
10684
+ logger.error('An unexpected error occurred while stopping the RTCRtpTransceiver:', error);
10685
+ throw error;
10686
+ }
10687
+ }
10670
10688
  }
10671
10689
  }
10672
10690
 
@@ -10757,6 +10775,9 @@ class ReceiveOnlyTransceiver extends Transceiver {
10757
10775
  this.metadata.lastActiveSpeakerUpdateTimestamp = getCurrentTimestamp();
10758
10776
  }
10759
10777
  }
10778
+ setCodecParameters(parameters) {
10779
+ this.munger.setCodecParameters(parameters);
10780
+ }
10760
10781
  setRtxCodecParameters(parameters) {
10761
10782
  this.munger.setRtxCodecParameters(parameters);
10762
10783
  }
@@ -15317,6 +15338,9 @@ SCTP Max Message Size: ${maxMessageSize}`);
15317
15338
  munger,
15318
15339
  });
15319
15340
  if (getMediaFamily(mediaType) === exports.MediaFamily.Video) {
15341
+ recvOnlyTransceiver.setCodecParameters({
15342
+ 'sps-pps-idr-in-keyframe': '1',
15343
+ });
15320
15344
  recvOnlyTransceiver.setRtxCodecParameters({
15321
15345
  'rtx-time': mediaType === exports.MediaType.VideoMain ? defaultVideoMainRtxTime : defaultVideoSlidesRtxTime,
15322
15346
  });