@webex/web-client-media-engine 3.31.6 → 3.33.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 +20 -14
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +20 -14
- package/dist/esm/index.js.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -7218,6 +7218,7 @@ exports.WcmeErrorType = void 0;
|
|
|
7218
7218
|
WcmeErrorType["GET_MAX_BITRATE_FAILED"] = "GET_MAX_BITRATE_FAILED";
|
|
7219
7219
|
WcmeErrorType["GET_PAYLOAD_TYPE_FAILED"] = "GET_PAYLOAD_TYPE_FAILED";
|
|
7220
7220
|
WcmeErrorType["SET_NMG_FAILED"] = "SET_NMG_FAILED";
|
|
7221
|
+
WcmeErrorType["SET_SOURCE_STATE_OVERRIDE_FAILED"] = "SET_SOURCE_STATE_OVERRIDE_FAILED";
|
|
7221
7222
|
WcmeErrorType["DATA_CHANNEL_SEND_FAILED"] = "DATA_CHANNEL_SEND_FAILED";
|
|
7222
7223
|
WcmeErrorType["RENEW_PEER_CONNECTION_FAILED"] = "RENEW_PEER_CONNECTION_FAILED";
|
|
7223
7224
|
})(exports.WcmeErrorType || (exports.WcmeErrorType = {}));
|
|
@@ -7543,6 +7544,7 @@ exports.MediaCodecMimeType = void 0;
|
|
|
7543
7544
|
})(exports.MediaCodecMimeType || (exports.MediaCodecMimeType = {}));
|
|
7544
7545
|
const defaultMaxVideoEncodeFrameSize = 8160;
|
|
7545
7546
|
const defaultMaxVideoEncodeMbps = 244800;
|
|
7547
|
+
const defaultStartBitrateKbps = 3000;
|
|
7546
7548
|
exports.RecommendedOpusBitrates = void 0;
|
|
7547
7549
|
(function (RecommendedOpusBitrates) {
|
|
7548
7550
|
RecommendedOpusBitrates[RecommendedOpusBitrates["NB"] = 12000] = "NB";
|
|
@@ -9954,14 +9956,12 @@ class EgressSdpMunger {
|
|
|
9954
9956
|
logger.log(`Some unsupported remote candidates have been removed from mid ${mediaDescription.mid}`);
|
|
9955
9957
|
}
|
|
9956
9958
|
mediaDescription.bandwidth = undefined;
|
|
9957
|
-
[...mediaDescription.codecs.values()].forEach((ci) => {
|
|
9958
|
-
ci.fmtParams.set('x-google-start-bitrate', '60000');
|
|
9959
|
-
});
|
|
9960
9959
|
if (mediaDescription.type === 'audio') {
|
|
9961
9960
|
[...mediaDescription.codecs.values()].forEach((ci) => {
|
|
9962
9961
|
ci.fmtParams.set('usedtx', mungeOptions.dtxDisabled ? '0' : '1');
|
|
9963
9962
|
});
|
|
9964
9963
|
}
|
|
9964
|
+
applyFormatParameters(mediaDescription, ['H264', 'opus'], this.customCodecParameters);
|
|
9965
9965
|
}
|
|
9966
9966
|
getSenderIds() {
|
|
9967
9967
|
return this.streamIds;
|
|
@@ -10497,9 +10497,6 @@ class IngressSdpMunger {
|
|
|
10497
10497
|
if (retainCandidatesByTransportType(mediaDescription, ['udp', 'tcp'])) {
|
|
10498
10498
|
logger.log(`Some unsupported remote candidates have been removed from mid ${mediaDescription.mid}`);
|
|
10499
10499
|
}
|
|
10500
|
-
[...mediaDescription.codecs.values()].forEach((ci) => {
|
|
10501
|
-
ci.fmtParams.set('x-google-start-bitrate', '60000');
|
|
10502
|
-
});
|
|
10503
10500
|
applyFormatParameters(mediaDescription, ['rtx'], this.customRtxCodecParameters);
|
|
10504
10501
|
}
|
|
10505
10502
|
setCodecParameters(parameters) {
|
|
@@ -14652,6 +14649,7 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14652
14649
|
if (stats.type === 'outbound-rtp') {
|
|
14653
14650
|
stats.mid = this.mid;
|
|
14654
14651
|
stats.csi = this.csi;
|
|
14652
|
+
stats.sourceState = this.currentSourceState;
|
|
14655
14653
|
stats.calliopeMediaType = this.mediaType;
|
|
14656
14654
|
const senderId = this.munger.getSenderIds().find((id) => id.ssrc === stats.ssrc);
|
|
14657
14655
|
if (senderId) {
|
|
@@ -14785,10 +14783,16 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14785
14783
|
this.negotiationNeeded.emit(OfferAnswerType.LocalOnly);
|
|
14786
14784
|
}
|
|
14787
14785
|
setSourceStateOverride(state) {
|
|
14786
|
+
if (getMediaFamily(this.mediaType) !== exports.MediaFamily.Video) {
|
|
14787
|
+
logErrorAndThrow(exports.WcmeErrorType.SET_SOURCE_STATE_OVERRIDE_FAILED, `Source state can only be overridden for video.`);
|
|
14788
|
+
}
|
|
14788
14789
|
this.sourceStateOverride = state;
|
|
14789
14790
|
this.sourceStateOverrideChange.emit();
|
|
14790
14791
|
}
|
|
14791
14792
|
get currentSourceState() {
|
|
14793
|
+
if (getMediaFamily(this.mediaType) !== exports.MediaFamily.Video) {
|
|
14794
|
+
return undefined;
|
|
14795
|
+
}
|
|
14792
14796
|
if (this.sourceStateOverride) {
|
|
14793
14797
|
return this.sourceStateOverride;
|
|
14794
14798
|
}
|
|
@@ -14965,6 +14969,7 @@ const defaultMultistreamConnectionOptions = {
|
|
|
14965
14969
|
doFullIce: BrowserInfo.isFirefox(),
|
|
14966
14970
|
stopIceGatheringAfterFirstRelayCandidate: false,
|
|
14967
14971
|
disableAudioMainDtx: true,
|
|
14972
|
+
preferredStartingBitrateKbps: defaultStartBitrateKbps,
|
|
14968
14973
|
metricsCallback: () => { },
|
|
14969
14974
|
};
|
|
14970
14975
|
class MultistreamConnection extends EventEmitter$2 {
|
|
@@ -15083,13 +15088,14 @@ class MultistreamConnection extends EventEmitter$2 {
|
|
|
15083
15088
|
munger,
|
|
15084
15089
|
csi,
|
|
15085
15090
|
});
|
|
15091
|
+
let codecParameters = {
|
|
15092
|
+
'x-google-start-bitrate': `${this.options.preferredStartingBitrateKbps}`,
|
|
15093
|
+
};
|
|
15086
15094
|
if (getMediaFamily(mediaType) === exports.MediaFamily.Video) {
|
|
15087
15095
|
transceiver.rtxEnabled = true;
|
|
15088
|
-
|
|
15089
|
-
'max-mbps': `${defaultMaxVideoEncodeMbps}`,
|
|
15090
|
-
'max-fs': `${defaultMaxVideoEncodeFrameSize}`,
|
|
15091
|
-
});
|
|
15096
|
+
codecParameters = Object.assign(Object.assign({}, codecParameters), { 'max-mbps': `${defaultMaxVideoEncodeMbps}`, 'max-fs': `${defaultMaxVideoEncodeFrameSize}` });
|
|
15092
15097
|
}
|
|
15098
|
+
transceiver.setCodecParameters(codecParameters);
|
|
15093
15099
|
transceiver.twccDisabled =
|
|
15094
15100
|
getMediaFamily(mediaType) === exports.MediaFamily.Audio ? this.options.disableAudioTwcc : false;
|
|
15095
15101
|
transceiver.dtxDisabled = mediaType !== exports.MediaType.AudioMain || this.options.disableAudioMainDtx;
|
|
@@ -15326,7 +15332,7 @@ SCTP Max Message Size: ${maxMessageSize}`);
|
|
|
15326
15332
|
if (!this.getSendTransceiverOrThrow(mediaType).requested) {
|
|
15327
15333
|
return;
|
|
15328
15334
|
}
|
|
15329
|
-
const streamStates = this.getVideoStreamStates(mediaType);
|
|
15335
|
+
const streamStates = this.getVideoStreamStates(getMediaContent(mediaType));
|
|
15330
15336
|
const task = () => {
|
|
15331
15337
|
var _a;
|
|
15332
15338
|
(_a = this.jmpSessions.get(mediaType)) === null || _a === void 0 ? void 0 : _a.sendMediaRequestStatus(streamStates);
|
|
@@ -15347,7 +15353,7 @@ SCTP Max Message Size: ${maxMessageSize}`);
|
|
|
15347
15353
|
: 0;
|
|
15348
15354
|
let task;
|
|
15349
15355
|
if (getMediaFamily(mediaType) === exports.MediaFamily.Video) {
|
|
15350
|
-
const sources = this.getVideoStreamStates(mediaType);
|
|
15356
|
+
const sources = this.getVideoStreamStates(getMediaContent(mediaType));
|
|
15351
15357
|
if (sources === null) {
|
|
15352
15358
|
return;
|
|
15353
15359
|
}
|
|
@@ -15375,8 +15381,8 @@ SCTP Max Message Size: ${maxMessageSize}`);
|
|
|
15375
15381
|
this.pendingJmpTasks.push(task);
|
|
15376
15382
|
}
|
|
15377
15383
|
}
|
|
15378
|
-
getVideoStreamStates(
|
|
15379
|
-
const sendTransceiver = this.getSendTransceiverOrThrow(
|
|
15384
|
+
getVideoStreamStates(mediaContent) {
|
|
15385
|
+
const sendTransceiver = this.getSendTransceiverOrThrow(getMediaType(exports.MediaFamily.Video, mediaContent));
|
|
15380
15386
|
return sendTransceiver.senderIds.map((id) => ({
|
|
15381
15387
|
id,
|
|
15382
15388
|
state: sendTransceiver.currentSourceState,
|