@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/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 = {}));
|
|
@@ -14522,6 +14523,7 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14522
14523
|
this.rtxEnabled = false;
|
|
14523
14524
|
this.dtxDisabled = true;
|
|
14524
14525
|
this.streamMuteStateChange = new TypedEvent();
|
|
14526
|
+
this.streamReadyStateChanged = new TypedEvent();
|
|
14525
14527
|
this.streamPublishStateChange = new TypedEvent();
|
|
14526
14528
|
this.negotiationNeeded = new TypedEvent();
|
|
14527
14529
|
this.namedMediaGroupsChange = new TypedEvent();
|
|
@@ -14535,6 +14537,7 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14535
14537
|
this.handleTrackChange = this.handleTrackChange.bind(this);
|
|
14536
14538
|
this.handleStreamConstraintsChange = this.handleStreamConstraintsChange.bind(this);
|
|
14537
14539
|
this.handleStreamMuteStateChange = this.handleStreamMuteStateChange.bind(this);
|
|
14540
|
+
this.handleStreamEnded = this.handleStreamEnded.bind(this);
|
|
14538
14541
|
}
|
|
14539
14542
|
replaceSenderSource(stream) {
|
|
14540
14543
|
var _a, _b;
|
|
@@ -14566,6 +14569,9 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14566
14569
|
handleStreamMuteStateChange() {
|
|
14567
14570
|
this.streamMuteStateChange.emit();
|
|
14568
14571
|
}
|
|
14572
|
+
handleStreamEnded() {
|
|
14573
|
+
this.streamReadyStateChanged.emit();
|
|
14574
|
+
}
|
|
14569
14575
|
get requested() {
|
|
14570
14576
|
return this.requestedIdEncodingParamsMap.size > 0;
|
|
14571
14577
|
}
|
|
@@ -14588,6 +14594,7 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14588
14594
|
oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(LocalStreamEventNames.ConstraintsChange, this.handleStreamConstraintsChange);
|
|
14589
14595
|
oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(LocalStreamEventNames.UserMuteStateChange, this.handleStreamMuteStateChange);
|
|
14590
14596
|
oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(LocalStreamEventNames.SystemMuteStateChange, this.handleStreamMuteStateChange);
|
|
14597
|
+
oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(StreamEventNames.Ended, this.handleStreamEnded);
|
|
14591
14598
|
if (this.requested) {
|
|
14592
14599
|
yield this.replaceSenderSource(newStream);
|
|
14593
14600
|
}
|
|
@@ -14596,12 +14603,17 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14596
14603
|
newStream === null || newStream === void 0 ? void 0 : newStream.on(LocalStreamEventNames.ConstraintsChange, this.handleStreamConstraintsChange);
|
|
14597
14604
|
newStream === null || newStream === void 0 ? void 0 : newStream.on(LocalStreamEventNames.UserMuteStateChange, this.handleStreamMuteStateChange);
|
|
14598
14605
|
newStream === null || newStream === void 0 ? void 0 : newStream.on(LocalStreamEventNames.SystemMuteStateChange, this.handleStreamMuteStateChange);
|
|
14599
|
-
|
|
14600
|
-
|
|
14606
|
+
newStream === null || newStream === void 0 ? void 0 : newStream.on(StreamEventNames.Ended, this.handleStreamEnded);
|
|
14607
|
+
if ((!oldStream && newStream) || (oldStream && !newStream)) {
|
|
14601
14608
|
this.streamPublishStateChange.emit();
|
|
14602
14609
|
}
|
|
14603
|
-
|
|
14604
|
-
|
|
14610
|
+
if (oldStream && newStream) {
|
|
14611
|
+
if (oldStream.muted !== newStream.muted) {
|
|
14612
|
+
this.streamMuteStateChange.emit();
|
|
14613
|
+
}
|
|
14614
|
+
if (oldStream.readyState !== newStream.readyState) {
|
|
14615
|
+
this.streamReadyStateChanged.emit();
|
|
14616
|
+
}
|
|
14605
14617
|
}
|
|
14606
14618
|
});
|
|
14607
14619
|
}
|
|
@@ -14637,6 +14649,7 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14637
14649
|
if (stats.type === 'outbound-rtp') {
|
|
14638
14650
|
stats.mid = this.mid;
|
|
14639
14651
|
stats.csi = this.csi;
|
|
14652
|
+
stats.sourceState = this.currentSourceState;
|
|
14640
14653
|
stats.calliopeMediaType = this.mediaType;
|
|
14641
14654
|
const senderId = this.munger.getSenderIds().find((id) => id.ssrc === stats.ssrc);
|
|
14642
14655
|
if (senderId) {
|
|
@@ -14770,10 +14783,16 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14770
14783
|
this.negotiationNeeded.emit(OfferAnswerType.LocalOnly);
|
|
14771
14784
|
}
|
|
14772
14785
|
setSourceStateOverride(state) {
|
|
14786
|
+
if (getMediaFamily(this.mediaType) !== MediaFamily.Video) {
|
|
14787
|
+
logErrorAndThrow(WcmeErrorType.SET_SOURCE_STATE_OVERRIDE_FAILED, `Source state can only be overridden for video.`);
|
|
14788
|
+
}
|
|
14773
14789
|
this.sourceStateOverride = state;
|
|
14774
14790
|
this.sourceStateOverrideChange.emit();
|
|
14775
14791
|
}
|
|
14776
14792
|
get currentSourceState() {
|
|
14793
|
+
if (getMediaFamily(this.mediaType) !== MediaFamily.Video) {
|
|
14794
|
+
return undefined;
|
|
14795
|
+
}
|
|
14777
14796
|
if (this.sourceStateOverride) {
|
|
14778
14797
|
return this.sourceStateOverride;
|
|
14779
14798
|
}
|
|
@@ -15087,6 +15106,10 @@ class MultistreamConnection extends EventEmitter$2 {
|
|
|
15087
15106
|
this.sendSourceAdvertisement(mediaType);
|
|
15088
15107
|
this.sendMediaRequestStatus(mediaType);
|
|
15089
15108
|
});
|
|
15109
|
+
transceiver.streamReadyStateChanged.on(() => {
|
|
15110
|
+
this.sendSourceAdvertisement(mediaType);
|
|
15111
|
+
this.sendMediaRequestStatus(mediaType);
|
|
15112
|
+
});
|
|
15090
15113
|
transceiver.negotiationNeeded.on((offerAnswerType) => {
|
|
15091
15114
|
if (offerAnswerType === OfferAnswerType.Remote) {
|
|
15092
15115
|
this.emit(MultistreamConnectionEventNames.NegotiationNeeded);
|
|
@@ -15307,7 +15330,7 @@ SCTP Max Message Size: ${maxMessageSize}`);
|
|
|
15307
15330
|
if (!this.getSendTransceiverOrThrow(mediaType).requested) {
|
|
15308
15331
|
return;
|
|
15309
15332
|
}
|
|
15310
|
-
const streamStates = this.getVideoStreamStates(mediaType);
|
|
15333
|
+
const streamStates = this.getVideoStreamStates(getMediaContent(mediaType));
|
|
15311
15334
|
const task = () => {
|
|
15312
15335
|
var _a;
|
|
15313
15336
|
(_a = this.jmpSessions.get(mediaType)) === null || _a === void 0 ? void 0 : _a.sendMediaRequestStatus(streamStates);
|
|
@@ -15320,12 +15343,15 @@ SCTP Max Message Size: ${maxMessageSize}`);
|
|
|
15320
15343
|
}
|
|
15321
15344
|
}
|
|
15322
15345
|
sendSourceAdvertisement(mediaType) {
|
|
15323
|
-
var _a, _b;
|
|
15346
|
+
var _a, _b, _c;
|
|
15324
15347
|
const transceiver = this.getSendTransceiverOrThrow(mediaType);
|
|
15325
|
-
const numLiveSources = ((_a = transceiver.publishedStream) === null || _a === void 0 ? void 0 : _a.muted) === false
|
|
15348
|
+
const numLiveSources = ((_a = transceiver.publishedStream) === null || _a === void 0 ? void 0 : _a.muted) === false &&
|
|
15349
|
+
((_b = transceiver.publishedStream) === null || _b === void 0 ? void 0 : _b.readyState) === 'live'
|
|
15350
|
+
? 1
|
|
15351
|
+
: 0;
|
|
15326
15352
|
let task;
|
|
15327
15353
|
if (getMediaFamily(mediaType) === MediaFamily.Video) {
|
|
15328
|
-
const sources = this.getVideoStreamStates(mediaType);
|
|
15354
|
+
const sources = this.getVideoStreamStates(getMediaContent(mediaType));
|
|
15329
15355
|
if (sources === null) {
|
|
15330
15356
|
return;
|
|
15331
15357
|
}
|
|
@@ -15346,15 +15372,15 @@ SCTP Max Message Size: ${maxMessageSize}`);
|
|
|
15346
15372
|
.get(mediaType)) === null || _a === void 0 ? void 0 : _a.sendSourceAdvertisement(1, numLiveSources, mediaType === MediaType.AudioMain ? transceiver.namedMediaGroups : []);
|
|
15347
15373
|
};
|
|
15348
15374
|
}
|
|
15349
|
-
if (((
|
|
15375
|
+
if (((_c = this.dataChannel) === null || _c === void 0 ? void 0 : _c.readyState) === 'open') {
|
|
15350
15376
|
task();
|
|
15351
15377
|
}
|
|
15352
15378
|
else {
|
|
15353
15379
|
this.pendingJmpTasks.push(task);
|
|
15354
15380
|
}
|
|
15355
15381
|
}
|
|
15356
|
-
getVideoStreamStates(
|
|
15357
|
-
const sendTransceiver = this.getSendTransceiverOrThrow(
|
|
15382
|
+
getVideoStreamStates(mediaContent) {
|
|
15383
|
+
const sendTransceiver = this.getSendTransceiverOrThrow(getMediaType(MediaFamily.Video, mediaContent));
|
|
15358
15384
|
return sendTransceiver.senderIds.map((id) => ({
|
|
15359
15385
|
id,
|
|
15360
15386
|
state: sendTransceiver.currentSourceState,
|