@whereby.com/media 1.6.4 → 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 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 [audioTrack] = stream.getAudioTracks();
3558
+ const audioTrack = stream.getAudioTracks()[0];
3559
3559
  const videoTrack = stream.getVideoTracks()[0];
3560
3560
  if (audioTrack) {
3561
- this._startMonitoringAudioTrack(audioTrack);
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 && !videoTrack.replacement) {
3564
- this._startMonitoringVideoTrack(videoTrack);
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 (oldTrack && oldTrack.kind === "audio") {
3586
- this._stopMonitoringAudioTrack(oldTrack);
3587
- }
3588
- if (oldTrack && oldTrack.kind === "video" && !newTrack.replacement) {
3589
- this._stopMonitoringVideoTrack(oldTrack);
3597
+ if (newTrack.kind === "audio" && !newTrack.effectTrack) {
3598
+ this._monitorAudioTrack(newTrack);
3590
3599
  }
3591
- if (newTrack && newTrack.kind === "audio") {
3592
- this._startMonitoringAudioTrack(newTrack);
3593
- }
3594
- if (newTrack.kind === "video" && !newTrack.replacement) {
3595
- this._startMonitoringVideoTrack(newTrack);
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
- _startMonitoringAudioTrack(track) {
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
- _stopMonitoringAudioTrack(track) {
4113
- track.removeEventListener("ended", this._audioTrackOnEnded);
4114
- }
4115
- _startMonitoringVideoTrack(track) {
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" ? 0 : 5000;
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._startMonitoringVideoTrack(track);
4515
+ this._monitorVideoTrack(track);
4504
4516
  this._emit(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
4505
4517
  streamId: localStream.id,
4506
4518
  tracks: [track],
@@ -5727,20 +5739,16 @@ class VegaRtcManager {
5727
5739
  }
5728
5740
  }
5729
5741
  replaceTrack(oldTrack, track) {
5730
- if (oldTrack && oldTrack.kind === "audio") {
5731
- this._stopMonitoringAudioTrack(oldTrack);
5732
- }
5733
- if (oldTrack && oldTrack.kind === "video" && !track.replacement) {
5734
- this._stopMonitoringVideoTrack(oldTrack);
5735
- }
5736
5742
  if (track.kind === "audio") {
5737
- this._startMonitoringAudioTrack(track);
5743
+ if (!track.effectTrack) {
5744
+ this._monitorAudioTrack(track);
5745
+ }
5738
5746
  this._micTrack = track;
5739
5747
  this._replaceMicTrack();
5740
5748
  }
5741
5749
  if (track.kind === "video") {
5742
- if (!track.replacement) {
5743
- this._startMonitoringVideoTrack(track);
5750
+ if (!track.effectTrack) {
5751
+ this._monitorVideoTrack(track);
5744
5752
  }
5745
5753
  this._webcamTrack = track;
5746
5754
  this._replaceWebcamTrack();
@@ -5764,7 +5772,7 @@ class VegaRtcManager {
5764
5772
  (_b = (_a = this._micAnalyserDebugger) === null || _a === void 0 ? void 0 : _a.onScoreUpdated) === null || _b === void 0 ? void 0 : _b.call(_a, data);
5765
5773
  this._sendMicScore(this._micPaused ? 0 : data.out);
5766
5774
  }
5767
- addNewStream(streamId, stream, audioPaused, videoPaused) {
5775
+ addNewStream(streamId, stream, audioPaused, videoPaused, beforeEffectTracks = []) {
5768
5776
  if (streamId === "0") {
5769
5777
  this._micPaused = audioPaused;
5770
5778
  this._webcamPaused = videoPaused;
@@ -5772,14 +5780,24 @@ class VegaRtcManager {
5772
5780
  const audioTrack = stream.getAudioTracks()[0];
5773
5781
  if (videoTrack) {
5774
5782
  this._sendWebcam(videoTrack);
5775
- if (!videoTrack.replacement) {
5776
- this._startMonitoringVideoTrack(videoTrack);
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);
5777
5789
  }
5778
5790
  }
5779
5791
  if (audioTrack) {
5780
5792
  this._sendMic(audioTrack);
5781
5793
  this._syncMicAnalyser();
5782
- this._startMonitoringAudioTrack(audioTrack);
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
+ }
5783
5801
  }
5784
5802
  if (this._localStreamDeregisterFunction) {
5785
5803
  this._localStreamDeregisterFunction();
@@ -5867,7 +5885,7 @@ class VegaRtcManager {
5867
5885
  navigator.mediaDevices.getUserMedia({ video: constraints }).then((stream) => {
5868
5886
  const track = stream.getVideoTracks()[0];
5869
5887
  localStream.addTrack(track);
5870
- this._startMonitoringVideoTrack(track);
5888
+ this._monitorVideoTrack(track);
5871
5889
  this._emitToPWA(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
5872
5890
  streamId: localStream.id,
5873
5891
  tracks: [track],
@@ -5964,17 +5982,21 @@ class VegaRtcManager {
5964
5982
  rtcStats.server.connect();
5965
5983
  }
5966
5984
  }
5967
- _startMonitoringAudioTrack(track) {
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);
5968
5990
  track.addEventListener("ended", this._audioTrackOnEnded);
5991
+ this._audioTrackBeingMonitored = track;
5969
5992
  }
5970
- _stopMonitoringAudioTrack(track) {
5971
- track.removeEventListener("ended", this._audioTrackOnEnded);
5972
- }
5973
- _startMonitoringVideoTrack(track) {
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);
5974
5998
  track.addEventListener("ended", this._videoTrackOnEnded);
5975
- }
5976
- _stopMonitoringVideoTrack(track) {
5977
- track.removeEventListener("ended", this._videoTrackOnEnded);
5999
+ this._videoTrackBeingMonitored = track;
5978
6000
  }
5979
6001
  _onMessage(message) {
5980
6002
  return __awaiter(this, void 0, void 0, function* () {
package/dist/index.d.cts CHANGED
@@ -264,7 +264,7 @@ type GetDeviceDataResult = {
264
264
  };
265
265
  };
266
266
  interface CustomMediaStreamTrack extends MediaStreamTrack {
267
- replacement?: boolean;
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
- _startMonitoringAudioTrack(track: any): void;
418
- _stopMonitoringAudioTrack(track: any): void;
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;
@@ -1110,6 +1110,8 @@ declare class VegaRtcManager implements RtcManager {
1110
1110
  _iceServers: any;
1111
1111
  _sfuServer: any;
1112
1112
  _mediaserverConfigTtlSeconds: any;
1113
+ _videoTrackBeingMonitored?: CustomMediaStreamTrack;
1114
+ _audioTrackBeingMonitored?: CustomMediaStreamTrack;
1113
1115
  constructor({ selfId, room, emitter, serverSocket, webrtcProvider, features, eventClaim, deviceHandlerFactory, }: {
1114
1116
  selfId: any;
1115
1117
  room: any;
@@ -1165,7 +1167,7 @@ declare class VegaRtcManager implements RtcManager {
1165
1167
  replaceTrack(oldTrack: CustomMediaStreamTrack | null, track: CustomMediaStreamTrack): void;
1166
1168
  removeStream(streamId: string, _stream: MediaStream, requestedByClientId: string): void;
1167
1169
  _onMicAnalyserScoreUpdated(data: any): void;
1168
- addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean): void;
1170
+ addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean, beforeEffectTracks?: CustomMediaStreamTrack[]): void;
1169
1171
  _syncMicAnalyser(): void;
1170
1172
  stopOrResumeAudio(stream: MediaStream, enabled: boolean): void;
1171
1173
  _handleStopOrResumeVideo({ enable, track }: {
@@ -1188,10 +1190,8 @@ declare class VegaRtcManager implements RtcManager {
1188
1190
  sendStatsCustomEvent(eventName: string, data?: any): void;
1189
1191
  rtcStatsDisconnect(): void;
1190
1192
  rtcStatsReconnect(): void;
1191
- _startMonitoringAudioTrack(track: MediaStreamTrack): void;
1192
- _stopMonitoringAudioTrack(track: MediaStreamTrack): void;
1193
- _startMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
1194
- _stopMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
1193
+ _monitorAudioTrack(track: any): void;
1194
+ _monitorVideoTrack(track: CustomMediaStreamTrack): void;
1195
1195
  _onMessage(message: any): Promise<void>;
1196
1196
  _onConsumerReady(options: any): Promise<void>;
1197
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
- replacement?: boolean;
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
- _startMonitoringAudioTrack(track: any): void;
418
- _stopMonitoringAudioTrack(track: any): void;
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;
@@ -1110,6 +1110,8 @@ declare class VegaRtcManager implements RtcManager {
1110
1110
  _iceServers: any;
1111
1111
  _sfuServer: any;
1112
1112
  _mediaserverConfigTtlSeconds: any;
1113
+ _videoTrackBeingMonitored?: CustomMediaStreamTrack;
1114
+ _audioTrackBeingMonitored?: CustomMediaStreamTrack;
1113
1115
  constructor({ selfId, room, emitter, serverSocket, webrtcProvider, features, eventClaim, deviceHandlerFactory, }: {
1114
1116
  selfId: any;
1115
1117
  room: any;
@@ -1165,7 +1167,7 @@ declare class VegaRtcManager implements RtcManager {
1165
1167
  replaceTrack(oldTrack: CustomMediaStreamTrack | null, track: CustomMediaStreamTrack): void;
1166
1168
  removeStream(streamId: string, _stream: MediaStream, requestedByClientId: string): void;
1167
1169
  _onMicAnalyserScoreUpdated(data: any): void;
1168
- addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean): void;
1170
+ addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean, beforeEffectTracks?: CustomMediaStreamTrack[]): void;
1169
1171
  _syncMicAnalyser(): void;
1170
1172
  stopOrResumeAudio(stream: MediaStream, enabled: boolean): void;
1171
1173
  _handleStopOrResumeVideo({ enable, track }: {
@@ -1188,10 +1190,8 @@ declare class VegaRtcManager implements RtcManager {
1188
1190
  sendStatsCustomEvent(eventName: string, data?: any): void;
1189
1191
  rtcStatsDisconnect(): void;
1190
1192
  rtcStatsReconnect(): void;
1191
- _startMonitoringAudioTrack(track: MediaStreamTrack): void;
1192
- _stopMonitoringAudioTrack(track: MediaStreamTrack): void;
1193
- _startMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
1194
- _stopMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
1193
+ _monitorAudioTrack(track: any): void;
1194
+ _monitorVideoTrack(track: CustomMediaStreamTrack): void;
1195
1195
  _onMessage(message: any): Promise<void>;
1196
1196
  _onConsumerReady(options: any): Promise<void>;
1197
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
- replacement?: boolean;
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
- _startMonitoringAudioTrack(track: any): void;
418
- _stopMonitoringAudioTrack(track: any): void;
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;
@@ -1110,6 +1110,8 @@ declare class VegaRtcManager implements RtcManager {
1110
1110
  _iceServers: any;
1111
1111
  _sfuServer: any;
1112
1112
  _mediaserverConfigTtlSeconds: any;
1113
+ _videoTrackBeingMonitored?: CustomMediaStreamTrack;
1114
+ _audioTrackBeingMonitored?: CustomMediaStreamTrack;
1113
1115
  constructor({ selfId, room, emitter, serverSocket, webrtcProvider, features, eventClaim, deviceHandlerFactory, }: {
1114
1116
  selfId: any;
1115
1117
  room: any;
@@ -1165,7 +1167,7 @@ declare class VegaRtcManager implements RtcManager {
1165
1167
  replaceTrack(oldTrack: CustomMediaStreamTrack | null, track: CustomMediaStreamTrack): void;
1166
1168
  removeStream(streamId: string, _stream: MediaStream, requestedByClientId: string): void;
1167
1169
  _onMicAnalyserScoreUpdated(data: any): void;
1168
- addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean): void;
1170
+ addNewStream(streamId: string, stream: MediaStream, audioPaused: boolean, videoPaused: boolean, beforeEffectTracks?: CustomMediaStreamTrack[]): void;
1169
1171
  _syncMicAnalyser(): void;
1170
1172
  stopOrResumeAudio(stream: MediaStream, enabled: boolean): void;
1171
1173
  _handleStopOrResumeVideo({ enable, track }: {
@@ -1188,10 +1190,8 @@ declare class VegaRtcManager implements RtcManager {
1188
1190
  sendStatsCustomEvent(eventName: string, data?: any): void;
1189
1191
  rtcStatsDisconnect(): void;
1190
1192
  rtcStatsReconnect(): void;
1191
- _startMonitoringAudioTrack(track: MediaStreamTrack): void;
1192
- _stopMonitoringAudioTrack(track: MediaStreamTrack): void;
1193
- _startMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
1194
- _stopMonitoringVideoTrack(track: CustomMediaStreamTrack): void;
1193
+ _monitorAudioTrack(track: any): void;
1194
+ _monitorVideoTrack(track: CustomMediaStreamTrack): void;
1195
1195
  _onMessage(message: any): Promise<void>;
1196
1196
  _onConsumerReady(options: any): Promise<void>;
1197
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 [audioTrack] = stream.getAudioTracks();
3537
+ const audioTrack = stream.getAudioTracks()[0];
3538
3538
  const videoTrack = stream.getVideoTracks()[0];
3539
3539
  if (audioTrack) {
3540
- this._startMonitoringAudioTrack(audioTrack);
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 && !videoTrack.replacement) {
3543
- this._startMonitoringVideoTrack(videoTrack);
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 (oldTrack && oldTrack.kind === "audio") {
3565
- this._stopMonitoringAudioTrack(oldTrack);
3566
- }
3567
- if (oldTrack && oldTrack.kind === "video" && !newTrack.replacement) {
3568
- this._stopMonitoringVideoTrack(oldTrack);
3576
+ if (newTrack.kind === "audio" && !newTrack.effectTrack) {
3577
+ this._monitorAudioTrack(newTrack);
3569
3578
  }
3570
- if (newTrack && newTrack.kind === "audio") {
3571
- this._startMonitoringAudioTrack(newTrack);
3572
- }
3573
- if (newTrack.kind === "video" && !newTrack.replacement) {
3574
- this._startMonitoringVideoTrack(newTrack);
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
- _startMonitoringAudioTrack(track) {
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
- _stopMonitoringAudioTrack(track) {
4092
- track.removeEventListener("ended", this._audioTrackOnEnded);
4093
- }
4094
- _startMonitoringVideoTrack(track) {
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" ? 0 : 5000;
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._startMonitoringVideoTrack(track);
4494
+ this._monitorVideoTrack(track);
4483
4495
  this._emit(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
4484
4496
  streamId: localStream.id,
4485
4497
  tracks: [track],
@@ -5706,20 +5718,16 @@ class VegaRtcManager {
5706
5718
  }
5707
5719
  }
5708
5720
  replaceTrack(oldTrack, track) {
5709
- if (oldTrack && oldTrack.kind === "audio") {
5710
- this._stopMonitoringAudioTrack(oldTrack);
5711
- }
5712
- if (oldTrack && oldTrack.kind === "video" && !track.replacement) {
5713
- this._stopMonitoringVideoTrack(oldTrack);
5714
- }
5715
5721
  if (track.kind === "audio") {
5716
- this._startMonitoringAudioTrack(track);
5722
+ if (!track.effectTrack) {
5723
+ this._monitorAudioTrack(track);
5724
+ }
5717
5725
  this._micTrack = track;
5718
5726
  this._replaceMicTrack();
5719
5727
  }
5720
5728
  if (track.kind === "video") {
5721
- if (!track.replacement) {
5722
- this._startMonitoringVideoTrack(track);
5729
+ if (!track.effectTrack) {
5730
+ this._monitorVideoTrack(track);
5723
5731
  }
5724
5732
  this._webcamTrack = track;
5725
5733
  this._replaceWebcamTrack();
@@ -5743,7 +5751,7 @@ class VegaRtcManager {
5743
5751
  (_b = (_a = this._micAnalyserDebugger) === null || _a === void 0 ? void 0 : _a.onScoreUpdated) === null || _b === void 0 ? void 0 : _b.call(_a, data);
5744
5752
  this._sendMicScore(this._micPaused ? 0 : data.out);
5745
5753
  }
5746
- addNewStream(streamId, stream, audioPaused, videoPaused) {
5754
+ addNewStream(streamId, stream, audioPaused, videoPaused, beforeEffectTracks = []) {
5747
5755
  if (streamId === "0") {
5748
5756
  this._micPaused = audioPaused;
5749
5757
  this._webcamPaused = videoPaused;
@@ -5751,14 +5759,24 @@ class VegaRtcManager {
5751
5759
  const audioTrack = stream.getAudioTracks()[0];
5752
5760
  if (videoTrack) {
5753
5761
  this._sendWebcam(videoTrack);
5754
- if (!videoTrack.replacement) {
5755
- this._startMonitoringVideoTrack(videoTrack);
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);
5756
5768
  }
5757
5769
  }
5758
5770
  if (audioTrack) {
5759
5771
  this._sendMic(audioTrack);
5760
5772
  this._syncMicAnalyser();
5761
- this._startMonitoringAudioTrack(audioTrack);
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
+ }
5762
5780
  }
5763
5781
  if (this._localStreamDeregisterFunction) {
5764
5782
  this._localStreamDeregisterFunction();
@@ -5846,7 +5864,7 @@ class VegaRtcManager {
5846
5864
  navigator.mediaDevices.getUserMedia({ video: constraints }).then((stream) => {
5847
5865
  const track = stream.getVideoTracks()[0];
5848
5866
  localStream.addTrack(track);
5849
- this._startMonitoringVideoTrack(track);
5867
+ this._monitorVideoTrack(track);
5850
5868
  this._emitToPWA(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
5851
5869
  streamId: localStream.id,
5852
5870
  tracks: [track],
@@ -5943,17 +5961,21 @@ class VegaRtcManager {
5943
5961
  rtcStats.server.connect();
5944
5962
  }
5945
5963
  }
5946
- _startMonitoringAudioTrack(track) {
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);
5947
5969
  track.addEventListener("ended", this._audioTrackOnEnded);
5970
+ this._audioTrackBeingMonitored = track;
5948
5971
  }
5949
- _stopMonitoringAudioTrack(track) {
5950
- track.removeEventListener("ended", this._audioTrackOnEnded);
5951
- }
5952
- _startMonitoringVideoTrack(track) {
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);
5953
5977
  track.addEventListener("ended", this._videoTrackOnEnded);
5954
- }
5955
- _stopMonitoringVideoTrack(track) {
5956
- track.removeEventListener("ended", this._videoTrackOnEnded);
5978
+ this._videoTrackBeingMonitored = track;
5957
5979
  }
5958
5980
  _onMessage(message) {
5959
5981
  return __awaiter(this, void 0, void 0, function* () {
@@ -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 [audioTrack] = stream.getAudioTracks();
3537
+ const audioTrack = stream.getAudioTracks()[0];
3538
3538
  const videoTrack = stream.getVideoTracks()[0];
3539
3539
  if (audioTrack) {
3540
- this._startMonitoringAudioTrack(audioTrack);
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 && !videoTrack.replacement) {
3543
- this._startMonitoringVideoTrack(videoTrack);
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 (oldTrack && oldTrack.kind === "audio") {
3565
- this._stopMonitoringAudioTrack(oldTrack);
3566
- }
3567
- if (oldTrack && oldTrack.kind === "video" && !newTrack.replacement) {
3568
- this._stopMonitoringVideoTrack(oldTrack);
3576
+ if (newTrack.kind === "audio" && !newTrack.effectTrack) {
3577
+ this._monitorAudioTrack(newTrack);
3569
3578
  }
3570
- if (newTrack && newTrack.kind === "audio") {
3571
- this._startMonitoringAudioTrack(newTrack);
3572
- }
3573
- if (newTrack.kind === "video" && !newTrack.replacement) {
3574
- this._startMonitoringVideoTrack(newTrack);
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
- _startMonitoringAudioTrack(track) {
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
- _stopMonitoringAudioTrack(track) {
4092
- track.removeEventListener("ended", this._audioTrackOnEnded);
4093
- }
4094
- _startMonitoringVideoTrack(track) {
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" ? 0 : 5000;
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._startMonitoringVideoTrack(track);
4494
+ this._monitorVideoTrack(track);
4483
4495
  this._emit(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
4484
4496
  streamId: localStream.id,
4485
4497
  tracks: [track],
@@ -5706,20 +5718,16 @@ class VegaRtcManager {
5706
5718
  }
5707
5719
  }
5708
5720
  replaceTrack(oldTrack, track) {
5709
- if (oldTrack && oldTrack.kind === "audio") {
5710
- this._stopMonitoringAudioTrack(oldTrack);
5711
- }
5712
- if (oldTrack && oldTrack.kind === "video" && !track.replacement) {
5713
- this._stopMonitoringVideoTrack(oldTrack);
5714
- }
5715
5721
  if (track.kind === "audio") {
5716
- this._startMonitoringAudioTrack(track);
5722
+ if (!track.effectTrack) {
5723
+ this._monitorAudioTrack(track);
5724
+ }
5717
5725
  this._micTrack = track;
5718
5726
  this._replaceMicTrack();
5719
5727
  }
5720
5728
  if (track.kind === "video") {
5721
- if (!track.replacement) {
5722
- this._startMonitoringVideoTrack(track);
5729
+ if (!track.effectTrack) {
5730
+ this._monitorVideoTrack(track);
5723
5731
  }
5724
5732
  this._webcamTrack = track;
5725
5733
  this._replaceWebcamTrack();
@@ -5743,7 +5751,7 @@ class VegaRtcManager {
5743
5751
  (_b = (_a = this._micAnalyserDebugger) === null || _a === void 0 ? void 0 : _a.onScoreUpdated) === null || _b === void 0 ? void 0 : _b.call(_a, data);
5744
5752
  this._sendMicScore(this._micPaused ? 0 : data.out);
5745
5753
  }
5746
- addNewStream(streamId, stream, audioPaused, videoPaused) {
5754
+ addNewStream(streamId, stream, audioPaused, videoPaused, beforeEffectTracks = []) {
5747
5755
  if (streamId === "0") {
5748
5756
  this._micPaused = audioPaused;
5749
5757
  this._webcamPaused = videoPaused;
@@ -5751,14 +5759,24 @@ class VegaRtcManager {
5751
5759
  const audioTrack = stream.getAudioTracks()[0];
5752
5760
  if (videoTrack) {
5753
5761
  this._sendWebcam(videoTrack);
5754
- if (!videoTrack.replacement) {
5755
- this._startMonitoringVideoTrack(videoTrack);
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);
5756
5768
  }
5757
5769
  }
5758
5770
  if (audioTrack) {
5759
5771
  this._sendMic(audioTrack);
5760
5772
  this._syncMicAnalyser();
5761
- this._startMonitoringAudioTrack(audioTrack);
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
+ }
5762
5780
  }
5763
5781
  if (this._localStreamDeregisterFunction) {
5764
5782
  this._localStreamDeregisterFunction();
@@ -5846,7 +5864,7 @@ class VegaRtcManager {
5846
5864
  navigator.mediaDevices.getUserMedia({ video: constraints }).then((stream) => {
5847
5865
  const track = stream.getVideoTracks()[0];
5848
5866
  localStream.addTrack(track);
5849
- this._startMonitoringVideoTrack(track);
5867
+ this._monitorVideoTrack(track);
5850
5868
  this._emitToPWA(EVENTS.LOCAL_STREAM_TRACK_ADDED, {
5851
5869
  streamId: localStream.id,
5852
5870
  tracks: [track],
@@ -5943,17 +5961,21 @@ class VegaRtcManager {
5943
5961
  rtcStats.server.connect();
5944
5962
  }
5945
5963
  }
5946
- _startMonitoringAudioTrack(track) {
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);
5947
5969
  track.addEventListener("ended", this._audioTrackOnEnded);
5970
+ this._audioTrackBeingMonitored = track;
5948
5971
  }
5949
- _stopMonitoringAudioTrack(track) {
5950
- track.removeEventListener("ended", this._audioTrackOnEnded);
5951
- }
5952
- _startMonitoringVideoTrack(track) {
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);
5953
5977
  track.addEventListener("ended", this._videoTrackOnEnded);
5954
- }
5955
- _stopMonitoringVideoTrack(track) {
5956
- track.removeEventListener("ended", this._videoTrackOnEnded);
5978
+ this._videoTrackBeingMonitored = track;
5957
5979
  }
5958
5980
  _onMessage(message) {
5959
5981
  return __awaiter(this, void 0, void 0, function* () {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@whereby.com/media",
3
3
  "description": "Media library for Whereby",
4
- "version": "1.6.4",
4
+ "version": "1.6.5",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/whereby/sdk",
7
7
  "repository": {