@webex/web-client-media-engine 3.31.5 → 3.32.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 +37 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +37 -11
- package/dist/esm/index.js.map +1 -1
- package/dist/types/index.d.ts +4 -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 = {}));
|
|
@@ -14526,6 +14527,7 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14526
14527
|
this.rtxEnabled = false;
|
|
14527
14528
|
this.dtxDisabled = true;
|
|
14528
14529
|
this.streamMuteStateChange = new TypedEvent();
|
|
14530
|
+
this.streamReadyStateChanged = new TypedEvent();
|
|
14529
14531
|
this.streamPublishStateChange = new TypedEvent();
|
|
14530
14532
|
this.negotiationNeeded = new TypedEvent();
|
|
14531
14533
|
this.namedMediaGroupsChange = new TypedEvent();
|
|
@@ -14539,6 +14541,7 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14539
14541
|
this.handleTrackChange = this.handleTrackChange.bind(this);
|
|
14540
14542
|
this.handleStreamConstraintsChange = this.handleStreamConstraintsChange.bind(this);
|
|
14541
14543
|
this.handleStreamMuteStateChange = this.handleStreamMuteStateChange.bind(this);
|
|
14544
|
+
this.handleStreamEnded = this.handleStreamEnded.bind(this);
|
|
14542
14545
|
}
|
|
14543
14546
|
replaceSenderSource(stream) {
|
|
14544
14547
|
var _a, _b;
|
|
@@ -14570,6 +14573,9 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14570
14573
|
handleStreamMuteStateChange() {
|
|
14571
14574
|
this.streamMuteStateChange.emit();
|
|
14572
14575
|
}
|
|
14576
|
+
handleStreamEnded() {
|
|
14577
|
+
this.streamReadyStateChanged.emit();
|
|
14578
|
+
}
|
|
14573
14579
|
get requested() {
|
|
14574
14580
|
return this.requestedIdEncodingParamsMap.size > 0;
|
|
14575
14581
|
}
|
|
@@ -14592,6 +14598,7 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14592
14598
|
oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(exports.LocalStreamEventNames.ConstraintsChange, this.handleStreamConstraintsChange);
|
|
14593
14599
|
oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(exports.LocalStreamEventNames.UserMuteStateChange, this.handleStreamMuteStateChange);
|
|
14594
14600
|
oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(exports.LocalStreamEventNames.SystemMuteStateChange, this.handleStreamMuteStateChange);
|
|
14601
|
+
oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(exports.StreamEventNames.Ended, this.handleStreamEnded);
|
|
14595
14602
|
if (this.requested) {
|
|
14596
14603
|
yield this.replaceSenderSource(newStream);
|
|
14597
14604
|
}
|
|
@@ -14600,12 +14607,17 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14600
14607
|
newStream === null || newStream === void 0 ? void 0 : newStream.on(exports.LocalStreamEventNames.ConstraintsChange, this.handleStreamConstraintsChange);
|
|
14601
14608
|
newStream === null || newStream === void 0 ? void 0 : newStream.on(exports.LocalStreamEventNames.UserMuteStateChange, this.handleStreamMuteStateChange);
|
|
14602
14609
|
newStream === null || newStream === void 0 ? void 0 : newStream.on(exports.LocalStreamEventNames.SystemMuteStateChange, this.handleStreamMuteStateChange);
|
|
14603
|
-
|
|
14604
|
-
|
|
14610
|
+
newStream === null || newStream === void 0 ? void 0 : newStream.on(exports.StreamEventNames.Ended, this.handleStreamEnded);
|
|
14611
|
+
if ((!oldStream && newStream) || (oldStream && !newStream)) {
|
|
14605
14612
|
this.streamPublishStateChange.emit();
|
|
14606
14613
|
}
|
|
14607
|
-
|
|
14608
|
-
|
|
14614
|
+
if (oldStream && newStream) {
|
|
14615
|
+
if (oldStream.muted !== newStream.muted) {
|
|
14616
|
+
this.streamMuteStateChange.emit();
|
|
14617
|
+
}
|
|
14618
|
+
if (oldStream.readyState !== newStream.readyState) {
|
|
14619
|
+
this.streamReadyStateChanged.emit();
|
|
14620
|
+
}
|
|
14609
14621
|
}
|
|
14610
14622
|
});
|
|
14611
14623
|
}
|
|
@@ -14641,6 +14653,7 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14641
14653
|
if (stats.type === 'outbound-rtp') {
|
|
14642
14654
|
stats.mid = this.mid;
|
|
14643
14655
|
stats.csi = this.csi;
|
|
14656
|
+
stats.sourceState = this.currentSourceState;
|
|
14644
14657
|
stats.calliopeMediaType = this.mediaType;
|
|
14645
14658
|
const senderId = this.munger.getSenderIds().find((id) => id.ssrc === stats.ssrc);
|
|
14646
14659
|
if (senderId) {
|
|
@@ -14774,10 +14787,16 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14774
14787
|
this.negotiationNeeded.emit(OfferAnswerType.LocalOnly);
|
|
14775
14788
|
}
|
|
14776
14789
|
setSourceStateOverride(state) {
|
|
14790
|
+
if (getMediaFamily(this.mediaType) !== exports.MediaFamily.Video) {
|
|
14791
|
+
logErrorAndThrow(exports.WcmeErrorType.SET_SOURCE_STATE_OVERRIDE_FAILED, `Source state can only be overridden for video.`);
|
|
14792
|
+
}
|
|
14777
14793
|
this.sourceStateOverride = state;
|
|
14778
14794
|
this.sourceStateOverrideChange.emit();
|
|
14779
14795
|
}
|
|
14780
14796
|
get currentSourceState() {
|
|
14797
|
+
if (getMediaFamily(this.mediaType) !== exports.MediaFamily.Video) {
|
|
14798
|
+
return undefined;
|
|
14799
|
+
}
|
|
14781
14800
|
if (this.sourceStateOverride) {
|
|
14782
14801
|
return this.sourceStateOverride;
|
|
14783
14802
|
}
|
|
@@ -15091,6 +15110,10 @@ class MultistreamConnection extends EventEmitter$2 {
|
|
|
15091
15110
|
this.sendSourceAdvertisement(mediaType);
|
|
15092
15111
|
this.sendMediaRequestStatus(mediaType);
|
|
15093
15112
|
});
|
|
15113
|
+
transceiver.streamReadyStateChanged.on(() => {
|
|
15114
|
+
this.sendSourceAdvertisement(mediaType);
|
|
15115
|
+
this.sendMediaRequestStatus(mediaType);
|
|
15116
|
+
});
|
|
15094
15117
|
transceiver.negotiationNeeded.on((offerAnswerType) => {
|
|
15095
15118
|
if (offerAnswerType === OfferAnswerType.Remote) {
|
|
15096
15119
|
this.emit(exports.MultistreamConnectionEventNames.NegotiationNeeded);
|
|
@@ -15311,7 +15334,7 @@ SCTP Max Message Size: ${maxMessageSize}`);
|
|
|
15311
15334
|
if (!this.getSendTransceiverOrThrow(mediaType).requested) {
|
|
15312
15335
|
return;
|
|
15313
15336
|
}
|
|
15314
|
-
const streamStates = this.getVideoStreamStates(mediaType);
|
|
15337
|
+
const streamStates = this.getVideoStreamStates(getMediaContent(mediaType));
|
|
15315
15338
|
const task = () => {
|
|
15316
15339
|
var _a;
|
|
15317
15340
|
(_a = this.jmpSessions.get(mediaType)) === null || _a === void 0 ? void 0 : _a.sendMediaRequestStatus(streamStates);
|
|
@@ -15324,12 +15347,15 @@ SCTP Max Message Size: ${maxMessageSize}`);
|
|
|
15324
15347
|
}
|
|
15325
15348
|
}
|
|
15326
15349
|
sendSourceAdvertisement(mediaType) {
|
|
15327
|
-
var _a, _b;
|
|
15350
|
+
var _a, _b, _c;
|
|
15328
15351
|
const transceiver = this.getSendTransceiverOrThrow(mediaType);
|
|
15329
|
-
const numLiveSources = ((_a = transceiver.publishedStream) === null || _a === void 0 ? void 0 : _a.muted) === false
|
|
15352
|
+
const numLiveSources = ((_a = transceiver.publishedStream) === null || _a === void 0 ? void 0 : _a.muted) === false &&
|
|
15353
|
+
((_b = transceiver.publishedStream) === null || _b === void 0 ? void 0 : _b.readyState) === 'live'
|
|
15354
|
+
? 1
|
|
15355
|
+
: 0;
|
|
15330
15356
|
let task;
|
|
15331
15357
|
if (getMediaFamily(mediaType) === exports.MediaFamily.Video) {
|
|
15332
|
-
const sources = this.getVideoStreamStates(mediaType);
|
|
15358
|
+
const sources = this.getVideoStreamStates(getMediaContent(mediaType));
|
|
15333
15359
|
if (sources === null) {
|
|
15334
15360
|
return;
|
|
15335
15361
|
}
|
|
@@ -15350,15 +15376,15 @@ SCTP Max Message Size: ${maxMessageSize}`);
|
|
|
15350
15376
|
.get(mediaType)) === null || _a === void 0 ? void 0 : _a.sendSourceAdvertisement(1, numLiveSources, mediaType === exports.MediaType.AudioMain ? transceiver.namedMediaGroups : []);
|
|
15351
15377
|
};
|
|
15352
15378
|
}
|
|
15353
|
-
if (((
|
|
15379
|
+
if (((_c = this.dataChannel) === null || _c === void 0 ? void 0 : _c.readyState) === 'open') {
|
|
15354
15380
|
task();
|
|
15355
15381
|
}
|
|
15356
15382
|
else {
|
|
15357
15383
|
this.pendingJmpTasks.push(task);
|
|
15358
15384
|
}
|
|
15359
15385
|
}
|
|
15360
|
-
getVideoStreamStates(
|
|
15361
|
-
const sendTransceiver = this.getSendTransceiverOrThrow(
|
|
15386
|
+
getVideoStreamStates(mediaContent) {
|
|
15387
|
+
const sendTransceiver = this.getSendTransceiverOrThrow(getMediaType(exports.MediaFamily.Video, mediaContent));
|
|
15362
15388
|
return sendTransceiver.senderIds.map((id) => ({
|
|
15363
15389
|
id,
|
|
15364
15390
|
state: sendTransceiver.currentSourceState,
|