@webex/web-client-media-engine 3.24.3 → 3.25.1
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 +43 -19
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +43 -19
- package/dist/esm/index.js.map +1 -1
- package/dist/types/index.d.ts +6 -0
- package/package.json +2 -2
package/dist/cjs/index.js
CHANGED
|
@@ -6696,7 +6696,7 @@ function isValidStreamInfo(obj) {
|
|
|
6696
6696
|
const maybeStreamInfo = obj;
|
|
6697
6697
|
return Boolean(maybeStreamInfo.id &&
|
|
6698
6698
|
isValidStreamId(maybeStreamInfo.id) &&
|
|
6699
|
-
['no source', 'invalid source', 'live', 'avatar', 'bandwidth disabled'].includes(maybeStreamInfo.state));
|
|
6699
|
+
['no source', 'invalid source', 'live', 'avatar', 'bandwidth disabled', 'away'].includes(maybeStreamInfo.state));
|
|
6700
6700
|
}
|
|
6701
6701
|
function areStreamInfosEqual(left, right) {
|
|
6702
6702
|
return (areStreamIdsEqual(left.id, right.id) && left.state === right.state && left.csi === right.csi);
|
|
@@ -10623,6 +10623,7 @@ class ReceiveOnlyTransceiver extends Transceiver {
|
|
|
10623
10623
|
stats.calliopeMediaType = this.mediaType;
|
|
10624
10624
|
stats.requestedBitrate = this.metadata.requestedBitrate;
|
|
10625
10625
|
stats.requestedFrameSize = this.metadata.requestedFrameSize;
|
|
10626
|
+
stats.requestedFrameRate = this.metadata.requestedFrameRate;
|
|
10626
10627
|
stats.isRequested = this.metadata.isRequested;
|
|
10627
10628
|
stats.lastRequestedUpdateTimestamp = this.metadata.lastRequestedUpdateTimestamp;
|
|
10628
10629
|
stats.isActiveSpeaker = this.metadata.isActiveSpeaker;
|
|
@@ -10647,13 +10648,14 @@ class ReceiveOnlyTransceiver extends Transceiver {
|
|
|
10647
10648
|
this.munger.reset();
|
|
10648
10649
|
}
|
|
10649
10650
|
handleRequested(streamRequest) {
|
|
10650
|
-
var _a, _b;
|
|
10651
|
+
var _a, _b, _c, _d;
|
|
10651
10652
|
if (!this.metadata.isRequested) {
|
|
10652
10653
|
this.metadata.isRequested = true;
|
|
10653
10654
|
this.metadata.lastRequestedUpdateTimestamp = getCurrentTimestamp();
|
|
10654
10655
|
}
|
|
10655
10656
|
this.metadata.requestedBitrate = streamRequest.maxPayloadBitsPerSecond;
|
|
10656
10657
|
this.metadata.requestedFrameSize = (_b = (_a = streamRequest.codecInfos[0]) === null || _a === void 0 ? void 0 : _a.h264) === null || _b === void 0 ? void 0 : _b.maxFs;
|
|
10658
|
+
this.metadata.requestedFrameRate = (_d = (_c = streamRequest.codecInfos[0]) === null || _c === void 0 ? void 0 : _c.h264) === null || _d === void 0 ? void 0 : _d.maxFps;
|
|
10657
10659
|
}
|
|
10658
10660
|
handleUnrequested() {
|
|
10659
10661
|
if (this.metadata.isRequested) {
|
|
@@ -10662,6 +10664,7 @@ class ReceiveOnlyTransceiver extends Transceiver {
|
|
|
10662
10664
|
}
|
|
10663
10665
|
this.metadata.requestedBitrate = undefined;
|
|
10664
10666
|
this.metadata.requestedFrameSize = undefined;
|
|
10667
|
+
this.metadata.requestedFrameRate = undefined;
|
|
10665
10668
|
this.receiveSlot._updateSource('no source', undefined);
|
|
10666
10669
|
}
|
|
10667
10670
|
handleActiveSpeakerUpdate(value) {
|
|
@@ -14397,6 +14400,7 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14397
14400
|
this.namedMediaGroupsChange = new TypedEvent();
|
|
14398
14401
|
this.requestedIdEncodingParamsMap = new Map();
|
|
14399
14402
|
this.updateSendParametersQueue = new AsyncQueue();
|
|
14403
|
+
this.sourceStateOverrideChange = new TypedEvent();
|
|
14400
14404
|
this.metadata = { lastRequestedUpdateTimestampsMap: new Map() };
|
|
14401
14405
|
this.munger = config.munger;
|
|
14402
14406
|
this.csi = config.csi;
|
|
@@ -14635,6 +14639,22 @@ class SendOnlyTransceiver extends Transceiver {
|
|
|
14635
14639
|
this.munger.deleteCodecParameters(parameters);
|
|
14636
14640
|
this.negotiationNeeded.emit(OfferAnswerType.LocalOnly);
|
|
14637
14641
|
}
|
|
14642
|
+
setSourceStateOverride(state) {
|
|
14643
|
+
this.sourceStateOverride = state;
|
|
14644
|
+
this.sourceStateOverrideChange.emit();
|
|
14645
|
+
}
|
|
14646
|
+
get currentSourceState() {
|
|
14647
|
+
if (this.sourceStateOverride) {
|
|
14648
|
+
return this.sourceStateOverride;
|
|
14649
|
+
}
|
|
14650
|
+
if (!this.publishedStream) {
|
|
14651
|
+
return 'no source';
|
|
14652
|
+
}
|
|
14653
|
+
if (this.publishedStream.muted) {
|
|
14654
|
+
return 'avatar';
|
|
14655
|
+
}
|
|
14656
|
+
return 'live';
|
|
14657
|
+
}
|
|
14638
14658
|
}
|
|
14639
14659
|
|
|
14640
14660
|
class SendSlot {
|
|
@@ -14679,6 +14699,12 @@ class SendSlot {
|
|
|
14679
14699
|
this.sendTransceiver.deleteCodecParameters(parameters);
|
|
14680
14700
|
});
|
|
14681
14701
|
}
|
|
14702
|
+
setSourceStateOverride(state) {
|
|
14703
|
+
this.sendTransceiver.setSourceStateOverride(state);
|
|
14704
|
+
}
|
|
14705
|
+
clearSourceStateOverride() {
|
|
14706
|
+
this.sendTransceiver.setSourceStateOverride(undefined);
|
|
14707
|
+
}
|
|
14682
14708
|
}
|
|
14683
14709
|
|
|
14684
14710
|
const organizeTransceiverStats = (sendTransceivers, recvTransceivers) => __awaiter$1(void 0, void 0, void 0, function* () {
|
|
@@ -14898,7 +14924,13 @@ class MultistreamConnection extends EventEmitter$2 {
|
|
|
14898
14924
|
const munger = new EgressSdpMunger({
|
|
14899
14925
|
doFullIce: this.options.doFullIce,
|
|
14900
14926
|
});
|
|
14901
|
-
const transceiver = new SendOnlyTransceiver({
|
|
14927
|
+
const transceiver = new SendOnlyTransceiver({
|
|
14928
|
+
rtcRtpTransceiver,
|
|
14929
|
+
mid,
|
|
14930
|
+
mediaType,
|
|
14931
|
+
munger,
|
|
14932
|
+
csi,
|
|
14933
|
+
});
|
|
14902
14934
|
if (getMediaFamily(mediaType) === exports.MediaFamily.Video) {
|
|
14903
14935
|
transceiver.rtxEnabled = true;
|
|
14904
14936
|
transceiver.setCodecParameters({
|
|
@@ -14928,6 +14960,9 @@ class MultistreamConnection extends EventEmitter$2 {
|
|
|
14928
14960
|
transceiver.namedMediaGroupsChange.on(() => {
|
|
14929
14961
|
this.sendSourceAdvertisement(mediaType);
|
|
14930
14962
|
});
|
|
14963
|
+
transceiver.sourceStateOverrideChange.on(() => {
|
|
14964
|
+
this.sendMediaRequestStatus(mediaType);
|
|
14965
|
+
});
|
|
14931
14966
|
this.sendTransceivers.set(mediaType, transceiver);
|
|
14932
14967
|
this.createJmpSession(mediaType);
|
|
14933
14968
|
}
|
|
@@ -15175,23 +15210,12 @@ SCTP Max Message Size: ${maxMessageSize}`);
|
|
|
15175
15210
|
}
|
|
15176
15211
|
}
|
|
15177
15212
|
getVideoStreamStates(mediaType) {
|
|
15178
|
-
var _a;
|
|
15179
15213
|
const sendTransceiver = this.getSendTransceiverOrThrow(mediaType);
|
|
15180
|
-
|
|
15181
|
-
|
|
15182
|
-
|
|
15183
|
-
|
|
15184
|
-
|
|
15185
|
-
state = 'no source';
|
|
15186
|
-
}
|
|
15187
|
-
else if (muted) {
|
|
15188
|
-
state = 'avatar';
|
|
15189
|
-
}
|
|
15190
|
-
else {
|
|
15191
|
-
state = 'live';
|
|
15192
|
-
}
|
|
15193
|
-
return { id, state, csi: sendTransceiver.csi };
|
|
15194
|
-
});
|
|
15214
|
+
return sendTransceiver.senderIds.map((id) => ({
|
|
15215
|
+
id,
|
|
15216
|
+
state: sendTransceiver.currentSourceState,
|
|
15217
|
+
csi: sendTransceiver.csi,
|
|
15218
|
+
}));
|
|
15195
15219
|
}
|
|
15196
15220
|
createReceiveTransceiver(mediaType) {
|
|
15197
15221
|
const rtcRtpTransceiver = this.pc.addTransceiver(toMediaStreamTrackKind(mediaType), {
|