@whereby.com/media 1.6.3 → 1.6.5
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/index.cjs +80 -48
- package/dist/index.d.cts +16 -12
- package/dist/index.d.mts +16 -12
- package/dist/index.d.ts +16 -12
- package/dist/index.mjs +80 -48
- package/dist/legacy-esm.js +80 -48
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -3548,20 +3548,32 @@ class P2pRtcManager {
|
|
|
3548
3548
|
maybeRestrictRelayBandwidth(session) {
|
|
3549
3549
|
session.maybeRestrictRelayBandwidth();
|
|
3550
3550
|
}
|
|
3551
|
-
addNewStream(streamId, stream) {
|
|
3551
|
+
addNewStream(streamId, stream, audioPaused, videoPaused, beforeEffectTracks = []) {
|
|
3552
3552
|
if (stream === this.localStreams[streamId]) {
|
|
3553
3553
|
return;
|
|
3554
3554
|
}
|
|
3555
3555
|
this._addLocalStream(streamId, stream);
|
|
3556
3556
|
if (streamId === CAMERA_STREAM_ID) {
|
|
3557
3557
|
this._addStreamToPeerConnections(stream);
|
|
3558
|
-
const
|
|
3558
|
+
const audioTrack = stream.getAudioTracks()[0];
|
|
3559
3559
|
const videoTrack = stream.getVideoTracks()[0];
|
|
3560
3560
|
if (audioTrack) {
|
|
3561
|
-
|
|
3561
|
+
if (!audioTrack.effectTrack) {
|
|
3562
|
+
this._monitorAudioTrack(audioTrack);
|
|
3563
|
+
}
|
|
3564
|
+
const beforeEffectTrack = beforeEffectTracks.find((t) => t.kind === "audio");
|
|
3565
|
+
if (beforeEffectTrack) {
|
|
3566
|
+
this._monitorAudioTrack(beforeEffectTrack);
|
|
3567
|
+
}
|
|
3562
3568
|
}
|
|
3563
|
-
if (videoTrack
|
|
3564
|
-
|
|
3569
|
+
if (videoTrack) {
|
|
3570
|
+
if (!videoTrack.effectTrack) {
|
|
3571
|
+
this._monitorVideoTrack(videoTrack);
|
|
3572
|
+
}
|
|
3573
|
+
const beforeEffectTrack = beforeEffectTracks.find((t) => t.kind === "video");
|
|
3574
|
+
if (beforeEffectTrack) {
|
|
3575
|
+
this._monitorVideoTrack(beforeEffectTrack);
|
|
3576
|
+
}
|
|
3565
3577
|
}
|
|
3566
3578
|
if (this._localStreamDeregisterFunction) {
|
|
3567
3579
|
this._localStreamDeregisterFunction();
|
|
@@ -3582,17 +3594,11 @@ class P2pRtcManager {
|
|
|
3582
3594
|
return;
|
|
3583
3595
|
}
|
|
3584
3596
|
replaceTrack(oldTrack, newTrack) {
|
|
3585
|
-
if (
|
|
3586
|
-
this.
|
|
3587
|
-
}
|
|
3588
|
-
if (oldTrack && oldTrack.kind === "video" && !newTrack.replacement) {
|
|
3589
|
-
this._stopMonitoringVideoTrack(oldTrack);
|
|
3590
|
-
}
|
|
3591
|
-
if (newTrack && newTrack.kind === "audio") {
|
|
3592
|
-
this._startMonitoringAudioTrack(newTrack);
|
|
3597
|
+
if (newTrack.kind === "audio" && !newTrack.effectTrack) {
|
|
3598
|
+
this._monitorAudioTrack(newTrack);
|
|
3593
3599
|
}
|
|
3594
|
-
if (newTrack.kind === "video" && !newTrack.
|
|
3595
|
-
this.
|
|
3600
|
+
if (newTrack.kind === "video" && !newTrack.effectTrack) {
|
|
3601
|
+
this._monitorVideoTrack(newTrack);
|
|
3596
3602
|
}
|
|
3597
3603
|
return this._replaceTrackToPeerConnections(oldTrack, newTrack);
|
|
3598
3604
|
}
|
|
@@ -4106,17 +4112,21 @@ class P2pRtcManager {
|
|
|
4106
4112
|
clearTimeout(this._fetchMediaServersTimer);
|
|
4107
4113
|
this._fetchMediaServersTimer = null;
|
|
4108
4114
|
}
|
|
4109
|
-
|
|
4115
|
+
_monitorAudioTrack(track) {
|
|
4116
|
+
var _a, _b;
|
|
4117
|
+
if (((_a = this._audioTrackBeingMonitored) === null || _a === void 0 ? void 0 : _a.id) === track.id)
|
|
4118
|
+
return;
|
|
4119
|
+
(_b = this._audioTrackBeingMonitored) === null || _b === void 0 ? void 0 : _b.removeEventListener("ended", this._audioTrackOnEnded);
|
|
4110
4120
|
track.addEventListener("ended", this._audioTrackOnEnded);
|
|
4121
|
+
this._audioTrackBeingMonitored = track;
|
|
4111
4122
|
}
|
|
4112
|
-
|
|
4113
|
-
|
|
4114
|
-
|
|
4115
|
-
|
|
4123
|
+
_monitorVideoTrack(track) {
|
|
4124
|
+
var _a, _b;
|
|
4125
|
+
if (((_a = this._videoTrackBeingMonitored) === null || _a === void 0 ? void 0 : _a.id) === track.id)
|
|
4126
|
+
return;
|
|
4127
|
+
(_b = this._videoTrackBeingMonitored) === null || _b === void 0 ? void 0 : _b.removeEventListener("ended", this._videoTrackOnEnded);
|
|
4116
4128
|
track.addEventListener("ended", this._videoTrackOnEnded);
|
|
4117
|
-
|
|
4118
|
-
_stopMonitoringVideoTrack(track) {
|
|
4119
|
-
track.removeEventListener("ended", this._videoTrackOnEnded);
|
|
4129
|
+
this._videoTrackBeingMonitored = track;
|
|
4120
4130
|
}
|
|
4121
4131
|
_connect(clientId) {
|
|
4122
4132
|
this.rtcStatsReconnect();
|
|
@@ -4476,7 +4486,9 @@ class P2pRtcManager {
|
|
|
4476
4486
|
return;
|
|
4477
4487
|
}
|
|
4478
4488
|
if (enable === false) {
|
|
4479
|
-
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended"
|
|
4489
|
+
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended"
|
|
4490
|
+
? 0
|
|
4491
|
+
: 5000;
|
|
4480
4492
|
setTimeout(() => {
|
|
4481
4493
|
localStream.getVideoTracks().forEach((track) => {
|
|
4482
4494
|
if (track.enabled === false) {
|
|
@@ -4500,7 +4512,7 @@ class P2pRtcManager {
|
|
|
4500
4512
|
navigator.mediaDevices.getUserMedia({ video: constraints }).then((stream) => {
|
|
4501
4513
|
const track = stream.getVideoTracks()[0];
|
|
4502
4514
|
localStream.addTrack(track);
|
|
4503
|
-
this.
|
|
4515
|
+
this._monitorVideoTrack(track);
|
|
4504
4516
|
this._emit(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
|
|
4505
4517
|
streamId: localStream.id,
|
|
4506
4518
|
tracks: [track],
|
|
@@ -4987,6 +4999,7 @@ class VegaRtcManager {
|
|
|
4987
4999
|
this._receiveTransport = null;
|
|
4988
5000
|
this._clientStates = new Map();
|
|
4989
5001
|
this._streamIdToVideoConsumerId = new Map();
|
|
5002
|
+
this._streamIdToVideoResolution = new Map();
|
|
4990
5003
|
this._consumers = new Map();
|
|
4991
5004
|
this._dataConsumers = new Map();
|
|
4992
5005
|
this._localStreamDeregisterFunction = null;
|
|
@@ -5089,6 +5102,7 @@ class VegaRtcManager {
|
|
|
5089
5102
|
this._sendTransport = null;
|
|
5090
5103
|
this._receiveTransport = null;
|
|
5091
5104
|
this._streamIdToVideoConsumerId.clear();
|
|
5105
|
+
this._streamIdToVideoResolution.clear();
|
|
5092
5106
|
if (this._reconnect) {
|
|
5093
5107
|
this._reconnectTimeOut = setTimeout(() => this._connect(), 1000);
|
|
5094
5108
|
}
|
|
@@ -5725,20 +5739,16 @@ class VegaRtcManager {
|
|
|
5725
5739
|
}
|
|
5726
5740
|
}
|
|
5727
5741
|
replaceTrack(oldTrack, track) {
|
|
5728
|
-
if (oldTrack && oldTrack.kind === "audio") {
|
|
5729
|
-
this._stopMonitoringAudioTrack(oldTrack);
|
|
5730
|
-
}
|
|
5731
|
-
if (oldTrack && oldTrack.kind === "video" && !track.replacement) {
|
|
5732
|
-
this._stopMonitoringVideoTrack(oldTrack);
|
|
5733
|
-
}
|
|
5734
5742
|
if (track.kind === "audio") {
|
|
5735
|
-
|
|
5743
|
+
if (!track.effectTrack) {
|
|
5744
|
+
this._monitorAudioTrack(track);
|
|
5745
|
+
}
|
|
5736
5746
|
this._micTrack = track;
|
|
5737
5747
|
this._replaceMicTrack();
|
|
5738
5748
|
}
|
|
5739
5749
|
if (track.kind === "video") {
|
|
5740
|
-
if (!track.
|
|
5741
|
-
this.
|
|
5750
|
+
if (!track.effectTrack) {
|
|
5751
|
+
this._monitorVideoTrack(track);
|
|
5742
5752
|
}
|
|
5743
5753
|
this._webcamTrack = track;
|
|
5744
5754
|
this._replaceWebcamTrack();
|
|
@@ -5762,7 +5772,7 @@ class VegaRtcManager {
|
|
|
5762
5772
|
(_b = (_a = this._micAnalyserDebugger) === null || _a === void 0 ? void 0 : _a.onScoreUpdated) === null || _b === void 0 ? void 0 : _b.call(_a, data);
|
|
5763
5773
|
this._sendMicScore(this._micPaused ? 0 : data.out);
|
|
5764
5774
|
}
|
|
5765
|
-
addNewStream(streamId, stream, audioPaused, videoPaused) {
|
|
5775
|
+
addNewStream(streamId, stream, audioPaused, videoPaused, beforeEffectTracks = []) {
|
|
5766
5776
|
if (streamId === "0") {
|
|
5767
5777
|
this._micPaused = audioPaused;
|
|
5768
5778
|
this._webcamPaused = videoPaused;
|
|
@@ -5770,14 +5780,24 @@ class VegaRtcManager {
|
|
|
5770
5780
|
const audioTrack = stream.getAudioTracks()[0];
|
|
5771
5781
|
if (videoTrack) {
|
|
5772
5782
|
this._sendWebcam(videoTrack);
|
|
5773
|
-
if (!videoTrack.
|
|
5774
|
-
this.
|
|
5783
|
+
if (!videoTrack.effectTrack) {
|
|
5784
|
+
this._monitorVideoTrack(videoTrack);
|
|
5785
|
+
}
|
|
5786
|
+
const beforeEffectTrack = beforeEffectTracks.find(t => t.kind === "video");
|
|
5787
|
+
if (beforeEffectTrack) {
|
|
5788
|
+
this._monitorVideoTrack(beforeEffectTrack);
|
|
5775
5789
|
}
|
|
5776
5790
|
}
|
|
5777
5791
|
if (audioTrack) {
|
|
5778
5792
|
this._sendMic(audioTrack);
|
|
5779
5793
|
this._syncMicAnalyser();
|
|
5780
|
-
|
|
5794
|
+
if (!audioTrack.effectTrack) {
|
|
5795
|
+
this._monitorAudioTrack(audioTrack);
|
|
5796
|
+
}
|
|
5797
|
+
const beforeEffectTrack = beforeEffectTracks.find(t => t.kind === "audio");
|
|
5798
|
+
if (beforeEffectTrack) {
|
|
5799
|
+
this._monitorAudioTrack(beforeEffectTrack);
|
|
5800
|
+
}
|
|
5781
5801
|
}
|
|
5782
5802
|
if (this._localStreamDeregisterFunction) {
|
|
5783
5803
|
this._localStreamDeregisterFunction();
|
|
@@ -5865,7 +5885,7 @@ class VegaRtcManager {
|
|
|
5865
5885
|
navigator.mediaDevices.getUserMedia({ video: constraints }).then((stream) => {
|
|
5866
5886
|
const track = stream.getVideoTracks()[0];
|
|
5867
5887
|
localStream.addTrack(track);
|
|
5868
|
-
this.
|
|
5888
|
+
this._monitorVideoTrack(track);
|
|
5869
5889
|
this._emitToPWA(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
|
|
5870
5890
|
streamId: localStream.id,
|
|
5871
5891
|
tracks: [track],
|
|
@@ -5898,8 +5918,10 @@ class VegaRtcManager {
|
|
|
5898
5918
|
logger$1.info("updateStreamResolution()", { streamId, width, height });
|
|
5899
5919
|
const consumerId = this._streamIdToVideoConsumerId.get(streamId);
|
|
5900
5920
|
const consumer = this._consumers.get(consumerId);
|
|
5901
|
-
if (!consumer)
|
|
5921
|
+
if (!consumer) {
|
|
5922
|
+
this._streamIdToVideoResolution.set(streamId, { width, height });
|
|
5902
5923
|
return;
|
|
5924
|
+
}
|
|
5903
5925
|
const numberOfActiveVideos = getNumberOfActiveVideos(this._consumers);
|
|
5904
5926
|
const numberOfTemporalLayers = getNumberOfTemporalLayers(consumer);
|
|
5905
5927
|
const { spatialLayer, temporalLayer } = getLayers({ width, height }, {
|
|
@@ -5960,17 +5982,21 @@ class VegaRtcManager {
|
|
|
5960
5982
|
rtcStats.server.connect();
|
|
5961
5983
|
}
|
|
5962
5984
|
}
|
|
5963
|
-
|
|
5985
|
+
_monitorAudioTrack(track) {
|
|
5986
|
+
var _a, _b;
|
|
5987
|
+
if (((_a = this._audioTrackBeingMonitored) === null || _a === void 0 ? void 0 : _a.id) === track.id)
|
|
5988
|
+
return;
|
|
5989
|
+
(_b = this._audioTrackBeingMonitored) === null || _b === void 0 ? void 0 : _b.removeEventListener("ended", this._audioTrackOnEnded);
|
|
5964
5990
|
track.addEventListener("ended", this._audioTrackOnEnded);
|
|
5991
|
+
this._audioTrackBeingMonitored = track;
|
|
5965
5992
|
}
|
|
5966
|
-
|
|
5967
|
-
|
|
5968
|
-
|
|
5969
|
-
|
|
5993
|
+
_monitorVideoTrack(track) {
|
|
5994
|
+
var _a, _b;
|
|
5995
|
+
if (((_a = this._videoTrackBeingMonitored) === null || _a === void 0 ? void 0 : _a.id) === track.id)
|
|
5996
|
+
return;
|
|
5997
|
+
(_b = this._videoTrackBeingMonitored) === null || _b === void 0 ? void 0 : _b.removeEventListener("ended", this._videoTrackOnEnded);
|
|
5970
5998
|
track.addEventListener("ended", this._videoTrackOnEnded);
|
|
5971
|
-
|
|
5972
|
-
_stopMonitoringVideoTrack(track) {
|
|
5973
|
-
track.removeEventListener("ended", this._videoTrackOnEnded);
|
|
5999
|
+
this._videoTrackBeingMonitored = track;
|
|
5974
6000
|
}
|
|
5975
6001
|
_onMessage(message) {
|
|
5976
6002
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -6050,6 +6076,11 @@ class VegaRtcManager {
|
|
|
6050
6076
|
}
|
|
6051
6077
|
stream.addTrack(consumer.track);
|
|
6052
6078
|
this._syncIncomingStreamsWithPWA(clientId);
|
|
6079
|
+
const resolution = this._streamIdToVideoResolution.get(stream.id);
|
|
6080
|
+
if (resolution) {
|
|
6081
|
+
this.updateStreamResolution(stream.id, null, resolution);
|
|
6082
|
+
this._streamIdToVideoResolution.delete(stream.id);
|
|
6083
|
+
}
|
|
6053
6084
|
});
|
|
6054
6085
|
}
|
|
6055
6086
|
_onConsumerClosed({ consumerId, reason }) {
|
|
@@ -6138,6 +6169,7 @@ class VegaRtcManager {
|
|
|
6138
6169
|
stream.removeTrack(consumer.track);
|
|
6139
6170
|
if (stream.getTracks().length === 0) {
|
|
6140
6171
|
this._streamIdToVideoConsumerId.delete(stream.id);
|
|
6172
|
+
this._streamIdToVideoResolution.delete(stream.id);
|
|
6141
6173
|
if (screenShare) {
|
|
6142
6174
|
clientState.screenStream = null;
|
|
6143
6175
|
clientState.hasEmittedScreenStream = false;
|
package/dist/index.d.cts
CHANGED
|
@@ -264,7 +264,7 @@ type GetDeviceDataResult = {
|
|
|
264
264
|
};
|
|
265
265
|
};
|
|
266
266
|
interface CustomMediaStreamTrack extends MediaStreamTrack {
|
|
267
|
-
|
|
267
|
+
effectTrack?: boolean;
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
declare function getMediaConstraints({ disableAEC, disableAGC, hd, lax, lowDataMode, preferredDeviceIds, resolution, simulcast, widescreen, }: GetMediaConstraintsOptions): any;
|
|
@@ -343,6 +343,8 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
343
343
|
_lastReverseDirectionAttemptByClientId: any;
|
|
344
344
|
_stoppedVideoTrack: any;
|
|
345
345
|
icePublicIPGatheringTimeoutID: any;
|
|
346
|
+
_videoTrackBeingMonitored?: CustomMediaStreamTrack;
|
|
347
|
+
_audioTrackBeingMonitored?: CustomMediaStreamTrack;
|
|
346
348
|
constructor({ selfId, room, emitter, serverSocket, webrtcProvider, features, }: {
|
|
347
349
|
selfId: any;
|
|
348
350
|
room: any;
|
|
@@ -359,8 +361,8 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
359
361
|
}): boolean;
|
|
360
362
|
supportsScreenShareAudio(): boolean;
|
|
361
363
|
maybeRestrictRelayBandwidth(session: any): void;
|
|
362
|
-
addNewStream(streamId: string, stream: MediaStream): void;
|
|
363
|
-
replaceTrack(oldTrack: CustomMediaStreamTrack, newTrack: CustomMediaStreamTrack): Promise<any[]>;
|
|
364
|
+
addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean, beforeEffectTracks?: CustomMediaStreamTrack[]): void;
|
|
365
|
+
replaceTrack(oldTrack: CustomMediaStreamTrack | null, newTrack: CustomMediaStreamTrack): Promise<any[]>;
|
|
364
366
|
accept({ clientId, shouldAddLocalVideo }: {
|
|
365
367
|
clientId: string;
|
|
366
368
|
shouldAddLocalVideo?: boolean;
|
|
@@ -414,10 +416,8 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
414
416
|
_removeLocalStream(streamId: string): void;
|
|
415
417
|
_updateAndScheduleMediaServersRefresh({ iceServers, sfuServer, mediaserverConfigTtlSeconds }: any): void;
|
|
416
418
|
_clearMediaServersRefresh(): void;
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
_startMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
420
|
-
_stopMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
419
|
+
_monitorAudioTrack(track: any): void;
|
|
420
|
+
_monitorVideoTrack(track: CustomMediaStreamTrack): void;
|
|
421
421
|
_connect(clientId: string): Promise<any>;
|
|
422
422
|
_maybeRestartIce(clientId: string, session: any): void;
|
|
423
423
|
_setCodecPreferences(pc: any, vp9On: any, av1On: any, redOn: any): void;
|
|
@@ -1073,6 +1073,10 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1073
1073
|
_receiveTransport: any;
|
|
1074
1074
|
_clientStates: any;
|
|
1075
1075
|
_streamIdToVideoConsumerId: any;
|
|
1076
|
+
_streamIdToVideoResolution: Map<string, {
|
|
1077
|
+
width: number;
|
|
1078
|
+
height: number;
|
|
1079
|
+
}>;
|
|
1076
1080
|
_consumers: any;
|
|
1077
1081
|
_dataConsumers: any;
|
|
1078
1082
|
_localStreamDeregisterFunction: any;
|
|
@@ -1106,6 +1110,8 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1106
1110
|
_iceServers: any;
|
|
1107
1111
|
_sfuServer: any;
|
|
1108
1112
|
_mediaserverConfigTtlSeconds: any;
|
|
1113
|
+
_videoTrackBeingMonitored?: CustomMediaStreamTrack;
|
|
1114
|
+
_audioTrackBeingMonitored?: CustomMediaStreamTrack;
|
|
1109
1115
|
constructor({ selfId, room, emitter, serverSocket, webrtcProvider, features, eventClaim, deviceHandlerFactory, }: {
|
|
1110
1116
|
selfId: any;
|
|
1111
1117
|
room: any;
|
|
@@ -1161,7 +1167,7 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1161
1167
|
replaceTrack(oldTrack: CustomMediaStreamTrack | null, track: CustomMediaStreamTrack): void;
|
|
1162
1168
|
removeStream(streamId: string, _stream: MediaStream, requestedByClientId: string): void;
|
|
1163
1169
|
_onMicAnalyserScoreUpdated(data: any): void;
|
|
1164
|
-
addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean): void;
|
|
1170
|
+
addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean, beforeEffectTracks?: CustomMediaStreamTrack[]): void;
|
|
1165
1171
|
_syncMicAnalyser(): void;
|
|
1166
1172
|
stopOrResumeAudio(stream: MediaStream, enabled: boolean): void;
|
|
1167
1173
|
_handleStopOrResumeVideo({ enable, track }: {
|
|
@@ -1184,10 +1190,8 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1184
1190
|
sendStatsCustomEvent(eventName: string, data?: any): void;
|
|
1185
1191
|
rtcStatsDisconnect(): void;
|
|
1186
1192
|
rtcStatsReconnect(): void;
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
_startMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
1190
|
-
_stopMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
1193
|
+
_monitorAudioTrack(track: any): void;
|
|
1194
|
+
_monitorVideoTrack(track: CustomMediaStreamTrack): void;
|
|
1191
1195
|
_onMessage(message: any): Promise<void>;
|
|
1192
1196
|
_onConsumerReady(options: any): Promise<void>;
|
|
1193
1197
|
_onConsumerClosed({ consumerId, reason }: {
|
package/dist/index.d.mts
CHANGED
|
@@ -264,7 +264,7 @@ type GetDeviceDataResult = {
|
|
|
264
264
|
};
|
|
265
265
|
};
|
|
266
266
|
interface CustomMediaStreamTrack extends MediaStreamTrack {
|
|
267
|
-
|
|
267
|
+
effectTrack?: boolean;
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
declare function getMediaConstraints({ disableAEC, disableAGC, hd, lax, lowDataMode, preferredDeviceIds, resolution, simulcast, widescreen, }: GetMediaConstraintsOptions): any;
|
|
@@ -343,6 +343,8 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
343
343
|
_lastReverseDirectionAttemptByClientId: any;
|
|
344
344
|
_stoppedVideoTrack: any;
|
|
345
345
|
icePublicIPGatheringTimeoutID: any;
|
|
346
|
+
_videoTrackBeingMonitored?: CustomMediaStreamTrack;
|
|
347
|
+
_audioTrackBeingMonitored?: CustomMediaStreamTrack;
|
|
346
348
|
constructor({ selfId, room, emitter, serverSocket, webrtcProvider, features, }: {
|
|
347
349
|
selfId: any;
|
|
348
350
|
room: any;
|
|
@@ -359,8 +361,8 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
359
361
|
}): boolean;
|
|
360
362
|
supportsScreenShareAudio(): boolean;
|
|
361
363
|
maybeRestrictRelayBandwidth(session: any): void;
|
|
362
|
-
addNewStream(streamId: string, stream: MediaStream): void;
|
|
363
|
-
replaceTrack(oldTrack: CustomMediaStreamTrack, newTrack: CustomMediaStreamTrack): Promise<any[]>;
|
|
364
|
+
addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean, beforeEffectTracks?: CustomMediaStreamTrack[]): void;
|
|
365
|
+
replaceTrack(oldTrack: CustomMediaStreamTrack | null, newTrack: CustomMediaStreamTrack): Promise<any[]>;
|
|
364
366
|
accept({ clientId, shouldAddLocalVideo }: {
|
|
365
367
|
clientId: string;
|
|
366
368
|
shouldAddLocalVideo?: boolean;
|
|
@@ -414,10 +416,8 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
414
416
|
_removeLocalStream(streamId: string): void;
|
|
415
417
|
_updateAndScheduleMediaServersRefresh({ iceServers, sfuServer, mediaserverConfigTtlSeconds }: any): void;
|
|
416
418
|
_clearMediaServersRefresh(): void;
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
_startMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
420
|
-
_stopMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
419
|
+
_monitorAudioTrack(track: any): void;
|
|
420
|
+
_monitorVideoTrack(track: CustomMediaStreamTrack): void;
|
|
421
421
|
_connect(clientId: string): Promise<any>;
|
|
422
422
|
_maybeRestartIce(clientId: string, session: any): void;
|
|
423
423
|
_setCodecPreferences(pc: any, vp9On: any, av1On: any, redOn: any): void;
|
|
@@ -1073,6 +1073,10 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1073
1073
|
_receiveTransport: any;
|
|
1074
1074
|
_clientStates: any;
|
|
1075
1075
|
_streamIdToVideoConsumerId: any;
|
|
1076
|
+
_streamIdToVideoResolution: Map<string, {
|
|
1077
|
+
width: number;
|
|
1078
|
+
height: number;
|
|
1079
|
+
}>;
|
|
1076
1080
|
_consumers: any;
|
|
1077
1081
|
_dataConsumers: any;
|
|
1078
1082
|
_localStreamDeregisterFunction: any;
|
|
@@ -1106,6 +1110,8 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1106
1110
|
_iceServers: any;
|
|
1107
1111
|
_sfuServer: any;
|
|
1108
1112
|
_mediaserverConfigTtlSeconds: any;
|
|
1113
|
+
_videoTrackBeingMonitored?: CustomMediaStreamTrack;
|
|
1114
|
+
_audioTrackBeingMonitored?: CustomMediaStreamTrack;
|
|
1109
1115
|
constructor({ selfId, room, emitter, serverSocket, webrtcProvider, features, eventClaim, deviceHandlerFactory, }: {
|
|
1110
1116
|
selfId: any;
|
|
1111
1117
|
room: any;
|
|
@@ -1161,7 +1167,7 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1161
1167
|
replaceTrack(oldTrack: CustomMediaStreamTrack | null, track: CustomMediaStreamTrack): void;
|
|
1162
1168
|
removeStream(streamId: string, _stream: MediaStream, requestedByClientId: string): void;
|
|
1163
1169
|
_onMicAnalyserScoreUpdated(data: any): void;
|
|
1164
|
-
addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean): void;
|
|
1170
|
+
addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean, beforeEffectTracks?: CustomMediaStreamTrack[]): void;
|
|
1165
1171
|
_syncMicAnalyser(): void;
|
|
1166
1172
|
stopOrResumeAudio(stream: MediaStream, enabled: boolean): void;
|
|
1167
1173
|
_handleStopOrResumeVideo({ enable, track }: {
|
|
@@ -1184,10 +1190,8 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1184
1190
|
sendStatsCustomEvent(eventName: string, data?: any): void;
|
|
1185
1191
|
rtcStatsDisconnect(): void;
|
|
1186
1192
|
rtcStatsReconnect(): void;
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
_startMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
1190
|
-
_stopMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
1193
|
+
_monitorAudioTrack(track: any): void;
|
|
1194
|
+
_monitorVideoTrack(track: CustomMediaStreamTrack): void;
|
|
1191
1195
|
_onMessage(message: any): Promise<void>;
|
|
1192
1196
|
_onConsumerReady(options: any): Promise<void>;
|
|
1193
1197
|
_onConsumerClosed({ consumerId, reason }: {
|
package/dist/index.d.ts
CHANGED
|
@@ -264,7 +264,7 @@ type GetDeviceDataResult = {
|
|
|
264
264
|
};
|
|
265
265
|
};
|
|
266
266
|
interface CustomMediaStreamTrack extends MediaStreamTrack {
|
|
267
|
-
|
|
267
|
+
effectTrack?: boolean;
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
declare function getMediaConstraints({ disableAEC, disableAGC, hd, lax, lowDataMode, preferredDeviceIds, resolution, simulcast, widescreen, }: GetMediaConstraintsOptions): any;
|
|
@@ -343,6 +343,8 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
343
343
|
_lastReverseDirectionAttemptByClientId: any;
|
|
344
344
|
_stoppedVideoTrack: any;
|
|
345
345
|
icePublicIPGatheringTimeoutID: any;
|
|
346
|
+
_videoTrackBeingMonitored?: CustomMediaStreamTrack;
|
|
347
|
+
_audioTrackBeingMonitored?: CustomMediaStreamTrack;
|
|
346
348
|
constructor({ selfId, room, emitter, serverSocket, webrtcProvider, features, }: {
|
|
347
349
|
selfId: any;
|
|
348
350
|
room: any;
|
|
@@ -359,8 +361,8 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
359
361
|
}): boolean;
|
|
360
362
|
supportsScreenShareAudio(): boolean;
|
|
361
363
|
maybeRestrictRelayBandwidth(session: any): void;
|
|
362
|
-
addNewStream(streamId: string, stream: MediaStream): void;
|
|
363
|
-
replaceTrack(oldTrack: CustomMediaStreamTrack, newTrack: CustomMediaStreamTrack): Promise<any[]>;
|
|
364
|
+
addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean, beforeEffectTracks?: CustomMediaStreamTrack[]): void;
|
|
365
|
+
replaceTrack(oldTrack: CustomMediaStreamTrack | null, newTrack: CustomMediaStreamTrack): Promise<any[]>;
|
|
364
366
|
accept({ clientId, shouldAddLocalVideo }: {
|
|
365
367
|
clientId: string;
|
|
366
368
|
shouldAddLocalVideo?: boolean;
|
|
@@ -414,10 +416,8 @@ declare class P2pRtcManager implements RtcManager {
|
|
|
414
416
|
_removeLocalStream(streamId: string): void;
|
|
415
417
|
_updateAndScheduleMediaServersRefresh({ iceServers, sfuServer, mediaserverConfigTtlSeconds }: any): void;
|
|
416
418
|
_clearMediaServersRefresh(): void;
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
_startMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
420
|
-
_stopMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
419
|
+
_monitorAudioTrack(track: any): void;
|
|
420
|
+
_monitorVideoTrack(track: CustomMediaStreamTrack): void;
|
|
421
421
|
_connect(clientId: string): Promise<any>;
|
|
422
422
|
_maybeRestartIce(clientId: string, session: any): void;
|
|
423
423
|
_setCodecPreferences(pc: any, vp9On: any, av1On: any, redOn: any): void;
|
|
@@ -1073,6 +1073,10 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1073
1073
|
_receiveTransport: any;
|
|
1074
1074
|
_clientStates: any;
|
|
1075
1075
|
_streamIdToVideoConsumerId: any;
|
|
1076
|
+
_streamIdToVideoResolution: Map<string, {
|
|
1077
|
+
width: number;
|
|
1078
|
+
height: number;
|
|
1079
|
+
}>;
|
|
1076
1080
|
_consumers: any;
|
|
1077
1081
|
_dataConsumers: any;
|
|
1078
1082
|
_localStreamDeregisterFunction: any;
|
|
@@ -1106,6 +1110,8 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1106
1110
|
_iceServers: any;
|
|
1107
1111
|
_sfuServer: any;
|
|
1108
1112
|
_mediaserverConfigTtlSeconds: any;
|
|
1113
|
+
_videoTrackBeingMonitored?: CustomMediaStreamTrack;
|
|
1114
|
+
_audioTrackBeingMonitored?: CustomMediaStreamTrack;
|
|
1109
1115
|
constructor({ selfId, room, emitter, serverSocket, webrtcProvider, features, eventClaim, deviceHandlerFactory, }: {
|
|
1110
1116
|
selfId: any;
|
|
1111
1117
|
room: any;
|
|
@@ -1161,7 +1167,7 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1161
1167
|
replaceTrack(oldTrack: CustomMediaStreamTrack | null, track: CustomMediaStreamTrack): void;
|
|
1162
1168
|
removeStream(streamId: string, _stream: MediaStream, requestedByClientId: string): void;
|
|
1163
1169
|
_onMicAnalyserScoreUpdated(data: any): void;
|
|
1164
|
-
addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean): void;
|
|
1170
|
+
addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean, beforeEffectTracks?: CustomMediaStreamTrack[]): void;
|
|
1165
1171
|
_syncMicAnalyser(): void;
|
|
1166
1172
|
stopOrResumeAudio(stream: MediaStream, enabled: boolean): void;
|
|
1167
1173
|
_handleStopOrResumeVideo({ enable, track }: {
|
|
@@ -1184,10 +1190,8 @@ declare class VegaRtcManager implements RtcManager {
|
|
|
1184
1190
|
sendStatsCustomEvent(eventName: string, data?: any): void;
|
|
1185
1191
|
rtcStatsDisconnect(): void;
|
|
1186
1192
|
rtcStatsReconnect(): void;
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
_startMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
1190
|
-
_stopMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
|
|
1193
|
+
_monitorAudioTrack(track: any): void;
|
|
1194
|
+
_monitorVideoTrack(track: CustomMediaStreamTrack): void;
|
|
1191
1195
|
_onMessage(message: any): Promise<void>;
|
|
1192
1196
|
_onConsumerReady(options: any): Promise<void>;
|
|
1193
1197
|
_onConsumerClosed({ consumerId, reason }: {
|
package/dist/index.mjs
CHANGED
|
@@ -3527,20 +3527,32 @@ class P2pRtcManager {
|
|
|
3527
3527
|
maybeRestrictRelayBandwidth(session) {
|
|
3528
3528
|
session.maybeRestrictRelayBandwidth();
|
|
3529
3529
|
}
|
|
3530
|
-
addNewStream(streamId, stream) {
|
|
3530
|
+
addNewStream(streamId, stream, audioPaused, videoPaused, beforeEffectTracks = []) {
|
|
3531
3531
|
if (stream === this.localStreams[streamId]) {
|
|
3532
3532
|
return;
|
|
3533
3533
|
}
|
|
3534
3534
|
this._addLocalStream(streamId, stream);
|
|
3535
3535
|
if (streamId === CAMERA_STREAM_ID) {
|
|
3536
3536
|
this._addStreamToPeerConnections(stream);
|
|
3537
|
-
const
|
|
3537
|
+
const audioTrack = stream.getAudioTracks()[0];
|
|
3538
3538
|
const videoTrack = stream.getVideoTracks()[0];
|
|
3539
3539
|
if (audioTrack) {
|
|
3540
|
-
|
|
3540
|
+
if (!audioTrack.effectTrack) {
|
|
3541
|
+
this._monitorAudioTrack(audioTrack);
|
|
3542
|
+
}
|
|
3543
|
+
const beforeEffectTrack = beforeEffectTracks.find((t) => t.kind === "audio");
|
|
3544
|
+
if (beforeEffectTrack) {
|
|
3545
|
+
this._monitorAudioTrack(beforeEffectTrack);
|
|
3546
|
+
}
|
|
3541
3547
|
}
|
|
3542
|
-
if (videoTrack
|
|
3543
|
-
|
|
3548
|
+
if (videoTrack) {
|
|
3549
|
+
if (!videoTrack.effectTrack) {
|
|
3550
|
+
this._monitorVideoTrack(videoTrack);
|
|
3551
|
+
}
|
|
3552
|
+
const beforeEffectTrack = beforeEffectTracks.find((t) => t.kind === "video");
|
|
3553
|
+
if (beforeEffectTrack) {
|
|
3554
|
+
this._monitorVideoTrack(beforeEffectTrack);
|
|
3555
|
+
}
|
|
3544
3556
|
}
|
|
3545
3557
|
if (this._localStreamDeregisterFunction) {
|
|
3546
3558
|
this._localStreamDeregisterFunction();
|
|
@@ -3561,17 +3573,11 @@ class P2pRtcManager {
|
|
|
3561
3573
|
return;
|
|
3562
3574
|
}
|
|
3563
3575
|
replaceTrack(oldTrack, newTrack) {
|
|
3564
|
-
if (
|
|
3565
|
-
this.
|
|
3566
|
-
}
|
|
3567
|
-
if (oldTrack && oldTrack.kind === "video" && !newTrack.replacement) {
|
|
3568
|
-
this._stopMonitoringVideoTrack(oldTrack);
|
|
3569
|
-
}
|
|
3570
|
-
if (newTrack && newTrack.kind === "audio") {
|
|
3571
|
-
this._startMonitoringAudioTrack(newTrack);
|
|
3576
|
+
if (newTrack.kind === "audio" && !newTrack.effectTrack) {
|
|
3577
|
+
this._monitorAudioTrack(newTrack);
|
|
3572
3578
|
}
|
|
3573
|
-
if (newTrack.kind === "video" && !newTrack.
|
|
3574
|
-
this.
|
|
3579
|
+
if (newTrack.kind === "video" && !newTrack.effectTrack) {
|
|
3580
|
+
this._monitorVideoTrack(newTrack);
|
|
3575
3581
|
}
|
|
3576
3582
|
return this._replaceTrackToPeerConnections(oldTrack, newTrack);
|
|
3577
3583
|
}
|
|
@@ -4085,17 +4091,21 @@ class P2pRtcManager {
|
|
|
4085
4091
|
clearTimeout(this._fetchMediaServersTimer);
|
|
4086
4092
|
this._fetchMediaServersTimer = null;
|
|
4087
4093
|
}
|
|
4088
|
-
|
|
4094
|
+
_monitorAudioTrack(track) {
|
|
4095
|
+
var _a, _b;
|
|
4096
|
+
if (((_a = this._audioTrackBeingMonitored) === null || _a === void 0 ? void 0 : _a.id) === track.id)
|
|
4097
|
+
return;
|
|
4098
|
+
(_b = this._audioTrackBeingMonitored) === null || _b === void 0 ? void 0 : _b.removeEventListener("ended", this._audioTrackOnEnded);
|
|
4089
4099
|
track.addEventListener("ended", this._audioTrackOnEnded);
|
|
4100
|
+
this._audioTrackBeingMonitored = track;
|
|
4090
4101
|
}
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4094
|
-
|
|
4102
|
+
_monitorVideoTrack(track) {
|
|
4103
|
+
var _a, _b;
|
|
4104
|
+
if (((_a = this._videoTrackBeingMonitored) === null || _a === void 0 ? void 0 : _a.id) === track.id)
|
|
4105
|
+
return;
|
|
4106
|
+
(_b = this._videoTrackBeingMonitored) === null || _b === void 0 ? void 0 : _b.removeEventListener("ended", this._videoTrackOnEnded);
|
|
4095
4107
|
track.addEventListener("ended", this._videoTrackOnEnded);
|
|
4096
|
-
|
|
4097
|
-
_stopMonitoringVideoTrack(track) {
|
|
4098
|
-
track.removeEventListener("ended", this._videoTrackOnEnded);
|
|
4108
|
+
this._videoTrackBeingMonitored = track;
|
|
4099
4109
|
}
|
|
4100
4110
|
_connect(clientId) {
|
|
4101
4111
|
this.rtcStatsReconnect();
|
|
@@ -4455,7 +4465,9 @@ class P2pRtcManager {
|
|
|
4455
4465
|
return;
|
|
4456
4466
|
}
|
|
4457
4467
|
if (enable === false) {
|
|
4458
|
-
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended"
|
|
4468
|
+
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended"
|
|
4469
|
+
? 0
|
|
4470
|
+
: 5000;
|
|
4459
4471
|
setTimeout(() => {
|
|
4460
4472
|
localStream.getVideoTracks().forEach((track) => {
|
|
4461
4473
|
if (track.enabled === false) {
|
|
@@ -4479,7 +4491,7 @@ class P2pRtcManager {
|
|
|
4479
4491
|
navigator.mediaDevices.getUserMedia({ video: constraints }).then((stream) => {
|
|
4480
4492
|
const track = stream.getVideoTracks()[0];
|
|
4481
4493
|
localStream.addTrack(track);
|
|
4482
|
-
this.
|
|
4494
|
+
this._monitorVideoTrack(track);
|
|
4483
4495
|
this._emit(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
|
|
4484
4496
|
streamId: localStream.id,
|
|
4485
4497
|
tracks: [track],
|
|
@@ -4966,6 +4978,7 @@ class VegaRtcManager {
|
|
|
4966
4978
|
this._receiveTransport = null;
|
|
4967
4979
|
this._clientStates = new Map();
|
|
4968
4980
|
this._streamIdToVideoConsumerId = new Map();
|
|
4981
|
+
this._streamIdToVideoResolution = new Map();
|
|
4969
4982
|
this._consumers = new Map();
|
|
4970
4983
|
this._dataConsumers = new Map();
|
|
4971
4984
|
this._localStreamDeregisterFunction = null;
|
|
@@ -5068,6 +5081,7 @@ class VegaRtcManager {
|
|
|
5068
5081
|
this._sendTransport = null;
|
|
5069
5082
|
this._receiveTransport = null;
|
|
5070
5083
|
this._streamIdToVideoConsumerId.clear();
|
|
5084
|
+
this._streamIdToVideoResolution.clear();
|
|
5071
5085
|
if (this._reconnect) {
|
|
5072
5086
|
this._reconnectTimeOut = setTimeout(() => this._connect(), 1000);
|
|
5073
5087
|
}
|
|
@@ -5704,20 +5718,16 @@ class VegaRtcManager {
|
|
|
5704
5718
|
}
|
|
5705
5719
|
}
|
|
5706
5720
|
replaceTrack(oldTrack, track) {
|
|
5707
|
-
if (oldTrack && oldTrack.kind === "audio") {
|
|
5708
|
-
this._stopMonitoringAudioTrack(oldTrack);
|
|
5709
|
-
}
|
|
5710
|
-
if (oldTrack && oldTrack.kind === "video" && !track.replacement) {
|
|
5711
|
-
this._stopMonitoringVideoTrack(oldTrack);
|
|
5712
|
-
}
|
|
5713
5721
|
if (track.kind === "audio") {
|
|
5714
|
-
|
|
5722
|
+
if (!track.effectTrack) {
|
|
5723
|
+
this._monitorAudioTrack(track);
|
|
5724
|
+
}
|
|
5715
5725
|
this._micTrack = track;
|
|
5716
5726
|
this._replaceMicTrack();
|
|
5717
5727
|
}
|
|
5718
5728
|
if (track.kind === "video") {
|
|
5719
|
-
if (!track.
|
|
5720
|
-
this.
|
|
5729
|
+
if (!track.effectTrack) {
|
|
5730
|
+
this._monitorVideoTrack(track);
|
|
5721
5731
|
}
|
|
5722
5732
|
this._webcamTrack = track;
|
|
5723
5733
|
this._replaceWebcamTrack();
|
|
@@ -5741,7 +5751,7 @@ class VegaRtcManager {
|
|
|
5741
5751
|
(_b = (_a = this._micAnalyserDebugger) === null || _a === void 0 ? void 0 : _a.onScoreUpdated) === null || _b === void 0 ? void 0 : _b.call(_a, data);
|
|
5742
5752
|
this._sendMicScore(this._micPaused ? 0 : data.out);
|
|
5743
5753
|
}
|
|
5744
|
-
addNewStream(streamId, stream, audioPaused, videoPaused) {
|
|
5754
|
+
addNewStream(streamId, stream, audioPaused, videoPaused, beforeEffectTracks = []) {
|
|
5745
5755
|
if (streamId === "0") {
|
|
5746
5756
|
this._micPaused = audioPaused;
|
|
5747
5757
|
this._webcamPaused = videoPaused;
|
|
@@ -5749,14 +5759,24 @@ class VegaRtcManager {
|
|
|
5749
5759
|
const audioTrack = stream.getAudioTracks()[0];
|
|
5750
5760
|
if (videoTrack) {
|
|
5751
5761
|
this._sendWebcam(videoTrack);
|
|
5752
|
-
if (!videoTrack.
|
|
5753
|
-
this.
|
|
5762
|
+
if (!videoTrack.effectTrack) {
|
|
5763
|
+
this._monitorVideoTrack(videoTrack);
|
|
5764
|
+
}
|
|
5765
|
+
const beforeEffectTrack = beforeEffectTracks.find(t => t.kind === "video");
|
|
5766
|
+
if (beforeEffectTrack) {
|
|
5767
|
+
this._monitorVideoTrack(beforeEffectTrack);
|
|
5754
5768
|
}
|
|
5755
5769
|
}
|
|
5756
5770
|
if (audioTrack) {
|
|
5757
5771
|
this._sendMic(audioTrack);
|
|
5758
5772
|
this._syncMicAnalyser();
|
|
5759
|
-
|
|
5773
|
+
if (!audioTrack.effectTrack) {
|
|
5774
|
+
this._monitorAudioTrack(audioTrack);
|
|
5775
|
+
}
|
|
5776
|
+
const beforeEffectTrack = beforeEffectTracks.find(t => t.kind === "audio");
|
|
5777
|
+
if (beforeEffectTrack) {
|
|
5778
|
+
this._monitorAudioTrack(beforeEffectTrack);
|
|
5779
|
+
}
|
|
5760
5780
|
}
|
|
5761
5781
|
if (this._localStreamDeregisterFunction) {
|
|
5762
5782
|
this._localStreamDeregisterFunction();
|
|
@@ -5844,7 +5864,7 @@ class VegaRtcManager {
|
|
|
5844
5864
|
navigator.mediaDevices.getUserMedia({ video: constraints }).then((stream) => {
|
|
5845
5865
|
const track = stream.getVideoTracks()[0];
|
|
5846
5866
|
localStream.addTrack(track);
|
|
5847
|
-
this.
|
|
5867
|
+
this._monitorVideoTrack(track);
|
|
5848
5868
|
this._emitToPWA(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
|
|
5849
5869
|
streamId: localStream.id,
|
|
5850
5870
|
tracks: [track],
|
|
@@ -5877,8 +5897,10 @@ class VegaRtcManager {
|
|
|
5877
5897
|
logger$1.info("updateStreamResolution()", { streamId, width, height });
|
|
5878
5898
|
const consumerId = this._streamIdToVideoConsumerId.get(streamId);
|
|
5879
5899
|
const consumer = this._consumers.get(consumerId);
|
|
5880
|
-
if (!consumer)
|
|
5900
|
+
if (!consumer) {
|
|
5901
|
+
this._streamIdToVideoResolution.set(streamId, { width, height });
|
|
5881
5902
|
return;
|
|
5903
|
+
}
|
|
5882
5904
|
const numberOfActiveVideos = getNumberOfActiveVideos(this._consumers);
|
|
5883
5905
|
const numberOfTemporalLayers = getNumberOfTemporalLayers(consumer);
|
|
5884
5906
|
const { spatialLayer, temporalLayer } = getLayers({ width, height }, {
|
|
@@ -5939,17 +5961,21 @@ class VegaRtcManager {
|
|
|
5939
5961
|
rtcStats.server.connect();
|
|
5940
5962
|
}
|
|
5941
5963
|
}
|
|
5942
|
-
|
|
5964
|
+
_monitorAudioTrack(track) {
|
|
5965
|
+
var _a, _b;
|
|
5966
|
+
if (((_a = this._audioTrackBeingMonitored) === null || _a === void 0 ? void 0 : _a.id) === track.id)
|
|
5967
|
+
return;
|
|
5968
|
+
(_b = this._audioTrackBeingMonitored) === null || _b === void 0 ? void 0 : _b.removeEventListener("ended", this._audioTrackOnEnded);
|
|
5943
5969
|
track.addEventListener("ended", this._audioTrackOnEnded);
|
|
5970
|
+
this._audioTrackBeingMonitored = track;
|
|
5944
5971
|
}
|
|
5945
|
-
|
|
5946
|
-
|
|
5947
|
-
|
|
5948
|
-
|
|
5972
|
+
_monitorVideoTrack(track) {
|
|
5973
|
+
var _a, _b;
|
|
5974
|
+
if (((_a = this._videoTrackBeingMonitored) === null || _a === void 0 ? void 0 : _a.id) === track.id)
|
|
5975
|
+
return;
|
|
5976
|
+
(_b = this._videoTrackBeingMonitored) === null || _b === void 0 ? void 0 : _b.removeEventListener("ended", this._videoTrackOnEnded);
|
|
5949
5977
|
track.addEventListener("ended", this._videoTrackOnEnded);
|
|
5950
|
-
|
|
5951
|
-
_stopMonitoringVideoTrack(track) {
|
|
5952
|
-
track.removeEventListener("ended", this._videoTrackOnEnded);
|
|
5978
|
+
this._videoTrackBeingMonitored = track;
|
|
5953
5979
|
}
|
|
5954
5980
|
_onMessage(message) {
|
|
5955
5981
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -6029,6 +6055,11 @@ class VegaRtcManager {
|
|
|
6029
6055
|
}
|
|
6030
6056
|
stream.addTrack(consumer.track);
|
|
6031
6057
|
this._syncIncomingStreamsWithPWA(clientId);
|
|
6058
|
+
const resolution = this._streamIdToVideoResolution.get(stream.id);
|
|
6059
|
+
if (resolution) {
|
|
6060
|
+
this.updateStreamResolution(stream.id, null, resolution);
|
|
6061
|
+
this._streamIdToVideoResolution.delete(stream.id);
|
|
6062
|
+
}
|
|
6032
6063
|
});
|
|
6033
6064
|
}
|
|
6034
6065
|
_onConsumerClosed({ consumerId, reason }) {
|
|
@@ -6117,6 +6148,7 @@ class VegaRtcManager {
|
|
|
6117
6148
|
stream.removeTrack(consumer.track);
|
|
6118
6149
|
if (stream.getTracks().length === 0) {
|
|
6119
6150
|
this._streamIdToVideoConsumerId.delete(stream.id);
|
|
6151
|
+
this._streamIdToVideoResolution.delete(stream.id);
|
|
6120
6152
|
if (screenShare) {
|
|
6121
6153
|
clientState.screenStream = null;
|
|
6122
6154
|
clientState.hasEmittedScreenStream = false;
|
package/dist/legacy-esm.js
CHANGED
|
@@ -3527,20 +3527,32 @@ class P2pRtcManager {
|
|
|
3527
3527
|
maybeRestrictRelayBandwidth(session) {
|
|
3528
3528
|
session.maybeRestrictRelayBandwidth();
|
|
3529
3529
|
}
|
|
3530
|
-
addNewStream(streamId, stream) {
|
|
3530
|
+
addNewStream(streamId, stream, audioPaused, videoPaused, beforeEffectTracks = []) {
|
|
3531
3531
|
if (stream === this.localStreams[streamId]) {
|
|
3532
3532
|
return;
|
|
3533
3533
|
}
|
|
3534
3534
|
this._addLocalStream(streamId, stream);
|
|
3535
3535
|
if (streamId === CAMERA_STREAM_ID) {
|
|
3536
3536
|
this._addStreamToPeerConnections(stream);
|
|
3537
|
-
const
|
|
3537
|
+
const audioTrack = stream.getAudioTracks()[0];
|
|
3538
3538
|
const videoTrack = stream.getVideoTracks()[0];
|
|
3539
3539
|
if (audioTrack) {
|
|
3540
|
-
|
|
3540
|
+
if (!audioTrack.effectTrack) {
|
|
3541
|
+
this._monitorAudioTrack(audioTrack);
|
|
3542
|
+
}
|
|
3543
|
+
const beforeEffectTrack = beforeEffectTracks.find((t) => t.kind === "audio");
|
|
3544
|
+
if (beforeEffectTrack) {
|
|
3545
|
+
this._monitorAudioTrack(beforeEffectTrack);
|
|
3546
|
+
}
|
|
3541
3547
|
}
|
|
3542
|
-
if (videoTrack
|
|
3543
|
-
|
|
3548
|
+
if (videoTrack) {
|
|
3549
|
+
if (!videoTrack.effectTrack) {
|
|
3550
|
+
this._monitorVideoTrack(videoTrack);
|
|
3551
|
+
}
|
|
3552
|
+
const beforeEffectTrack = beforeEffectTracks.find((t) => t.kind === "video");
|
|
3553
|
+
if (beforeEffectTrack) {
|
|
3554
|
+
this._monitorVideoTrack(beforeEffectTrack);
|
|
3555
|
+
}
|
|
3544
3556
|
}
|
|
3545
3557
|
if (this._localStreamDeregisterFunction) {
|
|
3546
3558
|
this._localStreamDeregisterFunction();
|
|
@@ -3561,17 +3573,11 @@ class P2pRtcManager {
|
|
|
3561
3573
|
return;
|
|
3562
3574
|
}
|
|
3563
3575
|
replaceTrack(oldTrack, newTrack) {
|
|
3564
|
-
if (
|
|
3565
|
-
this.
|
|
3566
|
-
}
|
|
3567
|
-
if (oldTrack && oldTrack.kind === "video" && !newTrack.replacement) {
|
|
3568
|
-
this._stopMonitoringVideoTrack(oldTrack);
|
|
3569
|
-
}
|
|
3570
|
-
if (newTrack && newTrack.kind === "audio") {
|
|
3571
|
-
this._startMonitoringAudioTrack(newTrack);
|
|
3576
|
+
if (newTrack.kind === "audio" && !newTrack.effectTrack) {
|
|
3577
|
+
this._monitorAudioTrack(newTrack);
|
|
3572
3578
|
}
|
|
3573
|
-
if (newTrack.kind === "video" && !newTrack.
|
|
3574
|
-
this.
|
|
3579
|
+
if (newTrack.kind === "video" && !newTrack.effectTrack) {
|
|
3580
|
+
this._monitorVideoTrack(newTrack);
|
|
3575
3581
|
}
|
|
3576
3582
|
return this._replaceTrackToPeerConnections(oldTrack, newTrack);
|
|
3577
3583
|
}
|
|
@@ -4085,17 +4091,21 @@ class P2pRtcManager {
|
|
|
4085
4091
|
clearTimeout(this._fetchMediaServersTimer);
|
|
4086
4092
|
this._fetchMediaServersTimer = null;
|
|
4087
4093
|
}
|
|
4088
|
-
|
|
4094
|
+
_monitorAudioTrack(track) {
|
|
4095
|
+
var _a, _b;
|
|
4096
|
+
if (((_a = this._audioTrackBeingMonitored) === null || _a === void 0 ? void 0 : _a.id) === track.id)
|
|
4097
|
+
return;
|
|
4098
|
+
(_b = this._audioTrackBeingMonitored) === null || _b === void 0 ? void 0 : _b.removeEventListener("ended", this._audioTrackOnEnded);
|
|
4089
4099
|
track.addEventListener("ended", this._audioTrackOnEnded);
|
|
4100
|
+
this._audioTrackBeingMonitored = track;
|
|
4090
4101
|
}
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4094
|
-
|
|
4102
|
+
_monitorVideoTrack(track) {
|
|
4103
|
+
var _a, _b;
|
|
4104
|
+
if (((_a = this._videoTrackBeingMonitored) === null || _a === void 0 ? void 0 : _a.id) === track.id)
|
|
4105
|
+
return;
|
|
4106
|
+
(_b = this._videoTrackBeingMonitored) === null || _b === void 0 ? void 0 : _b.removeEventListener("ended", this._videoTrackOnEnded);
|
|
4095
4107
|
track.addEventListener("ended", this._videoTrackOnEnded);
|
|
4096
|
-
|
|
4097
|
-
_stopMonitoringVideoTrack(track) {
|
|
4098
|
-
track.removeEventListener("ended", this._videoTrackOnEnded);
|
|
4108
|
+
this._videoTrackBeingMonitored = track;
|
|
4099
4109
|
}
|
|
4100
4110
|
_connect(clientId) {
|
|
4101
4111
|
this.rtcStatsReconnect();
|
|
@@ -4455,7 +4465,9 @@ class P2pRtcManager {
|
|
|
4455
4465
|
return;
|
|
4456
4466
|
}
|
|
4457
4467
|
if (enable === false) {
|
|
4458
|
-
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended"
|
|
4468
|
+
const stopCameraDelay = ((_a = localStream.getVideoTracks().find((t) => !t.enabled)) === null || _a === void 0 ? void 0 : _a.readyState) === "ended"
|
|
4469
|
+
? 0
|
|
4470
|
+
: 5000;
|
|
4459
4471
|
setTimeout(() => {
|
|
4460
4472
|
localStream.getVideoTracks().forEach((track) => {
|
|
4461
4473
|
if (track.enabled === false) {
|
|
@@ -4479,7 +4491,7 @@ class P2pRtcManager {
|
|
|
4479
4491
|
navigator.mediaDevices.getUserMedia({ video: constraints }).then((stream) => {
|
|
4480
4492
|
const track = stream.getVideoTracks()[0];
|
|
4481
4493
|
localStream.addTrack(track);
|
|
4482
|
-
this.
|
|
4494
|
+
this._monitorVideoTrack(track);
|
|
4483
4495
|
this._emit(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
|
|
4484
4496
|
streamId: localStream.id,
|
|
4485
4497
|
tracks: [track],
|
|
@@ -4966,6 +4978,7 @@ class VegaRtcManager {
|
|
|
4966
4978
|
this._receiveTransport = null;
|
|
4967
4979
|
this._clientStates = new Map();
|
|
4968
4980
|
this._streamIdToVideoConsumerId = new Map();
|
|
4981
|
+
this._streamIdToVideoResolution = new Map();
|
|
4969
4982
|
this._consumers = new Map();
|
|
4970
4983
|
this._dataConsumers = new Map();
|
|
4971
4984
|
this._localStreamDeregisterFunction = null;
|
|
@@ -5068,6 +5081,7 @@ class VegaRtcManager {
|
|
|
5068
5081
|
this._sendTransport = null;
|
|
5069
5082
|
this._receiveTransport = null;
|
|
5070
5083
|
this._streamIdToVideoConsumerId.clear();
|
|
5084
|
+
this._streamIdToVideoResolution.clear();
|
|
5071
5085
|
if (this._reconnect) {
|
|
5072
5086
|
this._reconnectTimeOut = setTimeout(() => this._connect(), 1000);
|
|
5073
5087
|
}
|
|
@@ -5704,20 +5718,16 @@ class VegaRtcManager {
|
|
|
5704
5718
|
}
|
|
5705
5719
|
}
|
|
5706
5720
|
replaceTrack(oldTrack, track) {
|
|
5707
|
-
if (oldTrack && oldTrack.kind === "audio") {
|
|
5708
|
-
this._stopMonitoringAudioTrack(oldTrack);
|
|
5709
|
-
}
|
|
5710
|
-
if (oldTrack && oldTrack.kind === "video" && !track.replacement) {
|
|
5711
|
-
this._stopMonitoringVideoTrack(oldTrack);
|
|
5712
|
-
}
|
|
5713
5721
|
if (track.kind === "audio") {
|
|
5714
|
-
|
|
5722
|
+
if (!track.effectTrack) {
|
|
5723
|
+
this._monitorAudioTrack(track);
|
|
5724
|
+
}
|
|
5715
5725
|
this._micTrack = track;
|
|
5716
5726
|
this._replaceMicTrack();
|
|
5717
5727
|
}
|
|
5718
5728
|
if (track.kind === "video") {
|
|
5719
|
-
if (!track.
|
|
5720
|
-
this.
|
|
5729
|
+
if (!track.effectTrack) {
|
|
5730
|
+
this._monitorVideoTrack(track);
|
|
5721
5731
|
}
|
|
5722
5732
|
this._webcamTrack = track;
|
|
5723
5733
|
this._replaceWebcamTrack();
|
|
@@ -5741,7 +5751,7 @@ class VegaRtcManager {
|
|
|
5741
5751
|
(_b = (_a = this._micAnalyserDebugger) === null || _a === void 0 ? void 0 : _a.onScoreUpdated) === null || _b === void 0 ? void 0 : _b.call(_a, data);
|
|
5742
5752
|
this._sendMicScore(this._micPaused ? 0 : data.out);
|
|
5743
5753
|
}
|
|
5744
|
-
addNewStream(streamId, stream, audioPaused, videoPaused) {
|
|
5754
|
+
addNewStream(streamId, stream, audioPaused, videoPaused, beforeEffectTracks = []) {
|
|
5745
5755
|
if (streamId === "0") {
|
|
5746
5756
|
this._micPaused = audioPaused;
|
|
5747
5757
|
this._webcamPaused = videoPaused;
|
|
@@ -5749,14 +5759,24 @@ class VegaRtcManager {
|
|
|
5749
5759
|
const audioTrack = stream.getAudioTracks()[0];
|
|
5750
5760
|
if (videoTrack) {
|
|
5751
5761
|
this._sendWebcam(videoTrack);
|
|
5752
|
-
if (!videoTrack.
|
|
5753
|
-
this.
|
|
5762
|
+
if (!videoTrack.effectTrack) {
|
|
5763
|
+
this._monitorVideoTrack(videoTrack);
|
|
5764
|
+
}
|
|
5765
|
+
const beforeEffectTrack = beforeEffectTracks.find(t => t.kind === "video");
|
|
5766
|
+
if (beforeEffectTrack) {
|
|
5767
|
+
this._monitorVideoTrack(beforeEffectTrack);
|
|
5754
5768
|
}
|
|
5755
5769
|
}
|
|
5756
5770
|
if (audioTrack) {
|
|
5757
5771
|
this._sendMic(audioTrack);
|
|
5758
5772
|
this._syncMicAnalyser();
|
|
5759
|
-
|
|
5773
|
+
if (!audioTrack.effectTrack) {
|
|
5774
|
+
this._monitorAudioTrack(audioTrack);
|
|
5775
|
+
}
|
|
5776
|
+
const beforeEffectTrack = beforeEffectTracks.find(t => t.kind === "audio");
|
|
5777
|
+
if (beforeEffectTrack) {
|
|
5778
|
+
this._monitorAudioTrack(beforeEffectTrack);
|
|
5779
|
+
}
|
|
5760
5780
|
}
|
|
5761
5781
|
if (this._localStreamDeregisterFunction) {
|
|
5762
5782
|
this._localStreamDeregisterFunction();
|
|
@@ -5844,7 +5864,7 @@ class VegaRtcManager {
|
|
|
5844
5864
|
navigator.mediaDevices.getUserMedia({ video: constraints }).then((stream) => {
|
|
5845
5865
|
const track = stream.getVideoTracks()[0];
|
|
5846
5866
|
localStream.addTrack(track);
|
|
5847
|
-
this.
|
|
5867
|
+
this._monitorVideoTrack(track);
|
|
5848
5868
|
this._emitToPWA(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
|
|
5849
5869
|
streamId: localStream.id,
|
|
5850
5870
|
tracks: [track],
|
|
@@ -5877,8 +5897,10 @@ class VegaRtcManager {
|
|
|
5877
5897
|
logger$1.info("updateStreamResolution()", { streamId, width, height });
|
|
5878
5898
|
const consumerId = this._streamIdToVideoConsumerId.get(streamId);
|
|
5879
5899
|
const consumer = this._consumers.get(consumerId);
|
|
5880
|
-
if (!consumer)
|
|
5900
|
+
if (!consumer) {
|
|
5901
|
+
this._streamIdToVideoResolution.set(streamId, { width, height });
|
|
5881
5902
|
return;
|
|
5903
|
+
}
|
|
5882
5904
|
const numberOfActiveVideos = getNumberOfActiveVideos(this._consumers);
|
|
5883
5905
|
const numberOfTemporalLayers = getNumberOfTemporalLayers(consumer);
|
|
5884
5906
|
const { spatialLayer, temporalLayer } = getLayers({ width, height }, {
|
|
@@ -5939,17 +5961,21 @@ class VegaRtcManager {
|
|
|
5939
5961
|
rtcStats.server.connect();
|
|
5940
5962
|
}
|
|
5941
5963
|
}
|
|
5942
|
-
|
|
5964
|
+
_monitorAudioTrack(track) {
|
|
5965
|
+
var _a, _b;
|
|
5966
|
+
if (((_a = this._audioTrackBeingMonitored) === null || _a === void 0 ? void 0 : _a.id) === track.id)
|
|
5967
|
+
return;
|
|
5968
|
+
(_b = this._audioTrackBeingMonitored) === null || _b === void 0 ? void 0 : _b.removeEventListener("ended", this._audioTrackOnEnded);
|
|
5943
5969
|
track.addEventListener("ended", this._audioTrackOnEnded);
|
|
5970
|
+
this._audioTrackBeingMonitored = track;
|
|
5944
5971
|
}
|
|
5945
|
-
|
|
5946
|
-
|
|
5947
|
-
|
|
5948
|
-
|
|
5972
|
+
_monitorVideoTrack(track) {
|
|
5973
|
+
var _a, _b;
|
|
5974
|
+
if (((_a = this._videoTrackBeingMonitored) === null || _a === void 0 ? void 0 : _a.id) === track.id)
|
|
5975
|
+
return;
|
|
5976
|
+
(_b = this._videoTrackBeingMonitored) === null || _b === void 0 ? void 0 : _b.removeEventListener("ended", this._videoTrackOnEnded);
|
|
5949
5977
|
track.addEventListener("ended", this._videoTrackOnEnded);
|
|
5950
|
-
|
|
5951
|
-
_stopMonitoringVideoTrack(track) {
|
|
5952
|
-
track.removeEventListener("ended", this._videoTrackOnEnded);
|
|
5978
|
+
this._videoTrackBeingMonitored = track;
|
|
5953
5979
|
}
|
|
5954
5980
|
_onMessage(message) {
|
|
5955
5981
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -6029,6 +6055,11 @@ class VegaRtcManager {
|
|
|
6029
6055
|
}
|
|
6030
6056
|
stream.addTrack(consumer.track);
|
|
6031
6057
|
this._syncIncomingStreamsWithPWA(clientId);
|
|
6058
|
+
const resolution = this._streamIdToVideoResolution.get(stream.id);
|
|
6059
|
+
if (resolution) {
|
|
6060
|
+
this.updateStreamResolution(stream.id, null, resolution);
|
|
6061
|
+
this._streamIdToVideoResolution.delete(stream.id);
|
|
6062
|
+
}
|
|
6032
6063
|
});
|
|
6033
6064
|
}
|
|
6034
6065
|
_onConsumerClosed({ consumerId, reason }) {
|
|
@@ -6117,6 +6148,7 @@ class VegaRtcManager {
|
|
|
6117
6148
|
stream.removeTrack(consumer.track);
|
|
6118
6149
|
if (stream.getTracks().length === 0) {
|
|
6119
6150
|
this._streamIdToVideoConsumerId.delete(stream.id);
|
|
6151
|
+
this._streamIdToVideoResolution.delete(stream.id);
|
|
6120
6152
|
if (screenShare) {
|
|
6121
6153
|
clientState.screenStream = null;
|
|
6122
6154
|
clientState.hasEmittedScreenStream = false;
|