@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/esm/index.js
CHANGED
|
@@ -7214,6 +7214,7 @@ var WcmeErrorType;
|
|
|
7214
7214
|
WcmeErrorType["GET_MAX_BITRATE_FAILED"] = "GET_MAX_BITRATE_FAILED";
|
|
7215
7215
|
WcmeErrorType["GET_PAYLOAD_TYPE_FAILED"] = "GET_PAYLOAD_TYPE_FAILED";
|
|
7216
7216
|
WcmeErrorType["SET_NMG_FAILED"] = "SET_NMG_FAILED";
|
|
7217
|
+
WcmeErrorType["SET_SOURCE_STATE_OVERRIDE_FAILED"] = "SET_SOURCE_STATE_OVERRIDE_FAILED";
|
|
7217
7218
|
WcmeErrorType["DATA_CHANNEL_SEND_FAILED"] = "DATA_CHANNEL_SEND_FAILED";
|
|
7218
7219
|
WcmeErrorType["RENEW_PEER_CONNECTION_FAILED"] = "RENEW_PEER_CONNECTION_FAILED";
|
|
7219
7220
|
})(WcmeErrorType || (WcmeErrorType = {}));
|
|
@@ -7539,6 +7540,7 @@ var MediaCodecMimeType;
|
|
|
7539
7540
|
})(MediaCodecMimeType || (MediaCodecMimeType = {}));
|
|
7540
7541
|
const defaultMaxVideoEncodeFrameSize = 8160;
|
|
7541
7542
|
const defaultMaxVideoEncodeMbps = 244800;
|
|
7543
|
+
const defaultStartBitrateKbps = 3000;
|
|
7542
7544
|
var RecommendedOpusBitrates;
|
|
7543
7545
|
(function (RecommendedOpusBitrates) {
|
|
7544
7546
|
RecommendedOpusBitrates[RecommendedOpusBitrates["NB"] = 12000] = "NB";
|
|
@@ -9950,14 +9952,12 @@ class EgressSdpMunger {
|
|
|
9950
9952
|
logger.log(`Some unsupported remote candidates have been removed from mid ${mediaDescription.mid}`);
|
|
9951
9953
|
}
|
|
9952
9954
|
mediaDescription.bandwidth = undefined;
|
|
9953
|
-
[...mediaDescription.codecs.values()].forEach((ci) => {
|
|
9954
|
-
ci.fmtParams.set('x-google-start-bitrate', '60000');
|
|
9955
|
-
});
|
|
9956
9955
|
if (mediaDescription.type === 'audio') {
|
|
9957
9956
|
[...mediaDescription.codecs.values()].forEach((ci) => {
|
|
9958
9957
|
ci.fmtParams.set('usedtx', mungeOptions.dtxDisabled ? '0' : '1');
|
|
9959
9958
|
});
|
|
9960
9959
|
}
|
|
9960
|
+
applyFormatParameters(mediaDescription, ['H264', 'opus'], this.customCodecParameters);
|
|
9961
9961
|
}
|
|
9962
9962
|
getSenderIds() {
|
|
9963
9963
|
return this.streamIds;
|
|
@@ -10493,9 +10493,6 @@ class IngressSdpMunger {
|
|
|
10493
10493
|
if (retainCandidatesByTransportType(mediaDescription, ['udp', 'tcp'])) {
|
|
10494
10494
|
logger.log(`Some unsupported remote candidates have been removed from mid ${mediaDescription.mid}`);
|
|
10495
10495
|
}
|
|
10496
|
-
[...mediaDescription.codecs.values()].forEach((ci) => {
|
|
10497
|
-
ci.fmtParams.set('x-google-start-bitrate', '60000');
|
|
10498
|
-
});
|
|
10499
10496
|
applyFormatParameters(mediaDescription, ['rtx'], this.customRtxCodecParameters);
|
|
10500
10497
|
}
|
|
10501
10498
|
setCodecParameters(parameters) {
|
|
@@ -14648,6 +14645,7 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14648
14645
|
if (stats.type === 'outbound-rtp') {
|
|
14649
14646
|
stats.mid = this.mid;
|
|
14650
14647
|
stats.csi = this.csi;
|
|
14648
|
+
stats.sourceState = this.currentSourceState;
|
|
14651
14649
|
stats.calliopeMediaType = this.mediaType;
|
|
14652
14650
|
const senderId = this.munger.getSenderIds().find((id) => id.ssrc === stats.ssrc);
|
|
14653
14651
|
if (senderId) {
|
|
@@ -14781,10 +14779,16 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14781
14779
|
this.negotiationNeeded.emit(OfferAnswerType.LocalOnly);
|
|
14782
14780
|
}
|
|
14783
14781
|
setSourceStateOverride(state) {
|
|
14782
|
+
if (getMediaFamily(this.mediaType) !== MediaFamily.Video) {
|
|
14783
|
+
logErrorAndThrow(WcmeErrorType.SET_SOURCE_STATE_OVERRIDE_FAILED, `Source state can only be overridden for video.`);
|
|
14784
|
+
}
|
|
14784
14785
|
this.sourceStateOverride = state;
|
|
14785
14786
|
this.sourceStateOverrideChange.emit();
|
|
14786
14787
|
}
|
|
14787
14788
|
get currentSourceState() {
|
|
14789
|
+
if (getMediaFamily(this.mediaType) !== MediaFamily.Video) {
|
|
14790
|
+
return undefined;
|
|
14791
|
+
}
|
|
14788
14792
|
if (this.sourceStateOverride) {
|
|
14789
14793
|
return this.sourceStateOverride;
|
|
14790
14794
|
}
|
|
@@ -14961,6 +14965,7 @@ const defaultMultistreamConnectionOptions = {
|
|
|
14961
14965
|
doFullIce: BrowserInfo.isFirefox(),
|
|
14962
14966
|
stopIceGatheringAfterFirstRelayCandidate: false,
|
|
14963
14967
|
disableAudioMainDtx: true,
|
|
14968
|
+
preferredStartingBitrateKbps: defaultStartBitrateKbps,
|
|
14964
14969
|
metricsCallback: () => { },
|
|
14965
14970
|
};
|
|
14966
14971
|
class MultistreamConnection extends EventEmitter$2 {
|
|
@@ -15079,13 +15084,14 @@ class MultistreamConnection extends EventEmitter$2 {
|
|
|
15079
15084
|
munger,
|
|
15080
15085
|
csi,
|
|
15081
15086
|
});
|
|
15087
|
+
let codecParameters = {
|
|
15088
|
+
'x-google-start-bitrate': `${this.options.preferredStartingBitrateKbps}`,
|
|
15089
|
+
};
|
|
15082
15090
|
if (getMediaFamily(mediaType) === MediaFamily.Video) {
|
|
15083
15091
|
transceiver.rtxEnabled = true;
|
|
15084
|
-
|
|
15085
|
-
'max-mbps': `${defaultMaxVideoEncodeMbps}`,
|
|
15086
|
-
'max-fs': `${defaultMaxVideoEncodeFrameSize}`,
|
|
15087
|
-
});
|
|
15092
|
+
codecParameters = Object.assign(Object.assign({}, codecParameters), { 'max-mbps': `${defaultMaxVideoEncodeMbps}`, 'max-fs': `${defaultMaxVideoEncodeFrameSize}` });
|
|
15088
15093
|
}
|
|
15094
|
+
transceiver.setCodecParameters(codecParameters);
|
|
15089
15095
|
transceiver.twccDisabled =
|
|
15090
15096
|
getMediaFamily(mediaType) === MediaFamily.Audio ? this.options.disableAudioTwcc : false;
|
|
15091
15097
|
transceiver.dtxDisabled = mediaType !== MediaType.AudioMain || this.options.disableAudioMainDtx;
|
|
@@ -15322,7 +15328,7 @@ SCTP Max Message Size: ${maxMessageSize}`);
|
|
|
15322
15328
|
if (!this.getSendTransceiverOrThrow(mediaType).requested) {
|
|
15323
15329
|
return;
|
|
15324
15330
|
}
|
|
15325
|
-
const streamStates = this.getVideoStreamStates(mediaType);
|
|
15331
|
+
const streamStates = this.getVideoStreamStates(getMediaContent(mediaType));
|
|
15326
15332
|
const task = () => {
|
|
15327
15333
|
var _a;
|
|
15328
15334
|
(_a = this.jmpSessions.get(mediaType)) === null || _a === void 0 ? void 0 : _a.sendMediaRequestStatus(streamStates);
|
|
@@ -15343,7 +15349,7 @@ SCTP Max Message Size: ${maxMessageSize}`);
|
|
|
15343
15349
|
: 0;
|
|
15344
15350
|
let task;
|
|
15345
15351
|
if (getMediaFamily(mediaType) === MediaFamily.Video) {
|
|
15346
|
-
const sources = this.getVideoStreamStates(mediaType);
|
|
15352
|
+
const sources = this.getVideoStreamStates(getMediaContent(mediaType));
|
|
15347
15353
|
if (sources === null) {
|
|
15348
15354
|
return;
|
|
15349
15355
|
}
|
|
@@ -15371,8 +15377,8 @@ SCTP Max Message Size: ${maxMessageSize}`);
|
|
|
15371
15377
|
this.pendingJmpTasks.push(task);
|
|
15372
15378
|
}
|
|
15373
15379
|
}
|
|
15374
|
-
getVideoStreamStates(
|
|
15375
|
-
const sendTransceiver = this.getSendTransceiverOrThrow(
|
|
15380
|
+
getVideoStreamStates(mediaContent) {
|
|
15381
|
+
const sendTransceiver = this.getSendTransceiverOrThrow(getMediaType(MediaFamily.Video, mediaContent));
|
|
15376
15382
|
return sendTransceiver.senderIds.map((id) => ({
|
|
15377
15383
|
id,
|
|
15378
15384
|
state: sendTransceiver.currentSourceState,
|