@needle-tools/engine 5.1.0-alpha.5 → 5.1.0-canary.02ccb45
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/CHANGELOG.md +13 -1
- package/components.needle.json +1 -1
- package/dist/{needle-engine.bundle-OPkPmdUM.umd.cjs → needle-engine.bundle-BSJwg312.umd.cjs} +146 -145
- package/dist/{needle-engine.bundle-C-LG00ZZ.js → needle-engine.bundle-DLNnLj9B.js} +6650 -6494
- package/dist/{needle-engine.bundle-D7tzaiYE.min.js → needle-engine.bundle-I8Lv85MA.min.js} +175 -174
- package/dist/needle-engine.d.ts +95 -17
- package/dist/needle-engine.js +554 -553
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/lib/engine/api.d.ts +1 -1
- package/lib/engine/api.js +1 -1
- package/lib/engine/api.js.map +1 -1
- package/lib/engine/engine_context.js +7 -0
- package/lib/engine/engine_context.js.map +1 -1
- package/lib/engine/engine_init.js +2 -2
- package/lib/engine/engine_init.js.map +1 -1
- package/lib/engine/engine_license.d.ts +7 -7
- package/lib/engine/engine_license.js +185 -57
- package/lib/engine/engine_license.js.map +1 -1
- package/lib/engine/engine_networking_blob.js +3 -3
- package/lib/engine/engine_networking_blob.js.map +1 -1
- package/lib/engine/engine_utils_format.js +20 -14
- package/lib/engine/engine_utils_format.js.map +1 -1
- package/lib/engine/engine_utils_qrcode.js +2 -2
- package/lib/engine/engine_utils_qrcode.js.map +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js +2 -2
- package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js.map +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu.js +5 -5
- package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.js +2 -2
- package/lib/engine/webcomponents/needle-engine.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.loading.js +2 -2
- package/lib/engine/webcomponents/needle-engine.loading.js.map +1 -1
- package/lib/engine/xr/TempXRContext.js +2 -2
- package/lib/engine/xr/TempXRContext.js.map +1 -1
- package/lib/engine-components/AudioSource.js +1 -1
- package/lib/engine-components/AudioSource.js.map +1 -1
- package/lib/engine-components/DropListener.js +1 -0
- package/lib/engine-components/DropListener.js.map +1 -1
- package/lib/engine-components/OrbitControls.d.ts +1 -0
- package/lib/engine-components/OrbitControls.js +7 -2
- package/lib/engine-components/OrbitControls.js.map +1 -1
- package/lib/engine-components/VideoPlayer.d.ts +8 -2
- package/lib/engine-components/VideoPlayer.js +42 -19
- package/lib/engine-components/VideoPlayer.js.map +1 -1
- package/lib/engine-components/Voip.d.ts +16 -7
- package/lib/engine-components/Voip.js +90 -53
- package/lib/engine-components/Voip.js.map +1 -1
- package/lib/engine-components/api.d.ts +1 -0
- package/lib/engine-components/api.js +1 -0
- package/lib/engine-components/api.js.map +1 -1
- package/lib/engine-components/export/usdz/USDZExporter.js +4 -4
- package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
- package/lib/engine-components/webxr/WebXRImageTracking.d.ts +62 -1
- package/lib/engine-components/webxr/WebXRImageTracking.js +55 -2
- package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
- package/package.json +2 -2
- package/plugins/common/license.js +50 -10
- package/plugins/types/userconfig.d.ts +4 -1
- package/plugins/vite/build-pipeline.js +57 -20
- package/plugins/vite/license.js +29 -12
- package/src/engine/api.ts +1 -1
- package/src/engine/engine_context.ts +11 -1
- package/src/engine/engine_init.ts +2 -2
- package/src/engine/engine_license.ts +201 -55
- package/src/engine/engine_networking_blob.ts +3 -3
- package/src/engine/engine_utils_format.ts +20 -14
- package/src/engine/engine_utils_qrcode.ts +2 -2
- package/src/engine/webcomponents/needle menu/needle-menu-spatial.ts +2 -2
- package/src/engine/webcomponents/needle menu/needle-menu.ts +5 -5
- package/src/engine/webcomponents/needle-engine.loading.ts +6 -6
- package/src/engine/webcomponents/needle-engine.ts +2 -2
- package/src/engine/xr/TempXRContext.ts +2 -2
- package/src/engine-components/AudioSource.ts +1 -1
- package/src/engine-components/DropListener.ts +1 -0
- package/src/engine-components/OrbitControls.ts +8 -2
- package/src/engine-components/VideoPlayer.ts +40 -17
- package/src/engine-components/Voip.ts +88 -53
- package/src/engine-components/api.ts +1 -0
- package/src/engine-components/export/usdz/USDZExporter.ts +4 -4
- package/src/engine-components/webxr/WebXRImageTracking.ts +77 -7
- package/src/vite-env.d.ts +0 -16
|
@@ -180,17 +180,15 @@ export class VideoPlayer extends Behaviour {
|
|
|
180
180
|
*/
|
|
181
181
|
get isPlaying() {
|
|
182
182
|
const video = this._videoElement;
|
|
183
|
-
if (video)
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
return true;
|
|
191
|
-
}
|
|
183
|
+
if (!video)
|
|
184
|
+
return false;
|
|
185
|
+
if (video.paused || video.ended)
|
|
186
|
+
return false;
|
|
187
|
+
if (video.srcObject) {
|
|
188
|
+
const stream = video.srcObject;
|
|
189
|
+
return stream.active;
|
|
192
190
|
}
|
|
193
|
-
return
|
|
191
|
+
return video.currentTime > 0 && video.readyState > video.HAVE_CURRENT_DATA;
|
|
194
192
|
}
|
|
195
193
|
get crossOrigin() {
|
|
196
194
|
return this._videoElement?.crossOrigin ?? this._crossOrigin;
|
|
@@ -395,29 +393,55 @@ export class VideoPlayer extends Behaviour {
|
|
|
395
393
|
}
|
|
396
394
|
}
|
|
397
395
|
_playErrors = 0;
|
|
398
|
-
/**
|
|
399
|
-
|
|
396
|
+
/**
|
|
397
|
+
* Plays the assigned video clip, URL, or MediaStream.
|
|
398
|
+
* If a `clip` argument is passed, it is used as the new video source (mirroring {@link AudioSource.play}).
|
|
399
|
+
*
|
|
400
|
+
* @param clip - Optional video URL string or {@link MediaStream} to play. If omitted, plays the currently assigned source.
|
|
401
|
+
* @returns A promise that resolves to `true` when playback was successfully started, or `false` on error.
|
|
402
|
+
*/
|
|
403
|
+
async play(clip) {
|
|
404
|
+
// Defensive: if called from an event handler with a non-string/non-MediaStream argument
|
|
405
|
+
// (e.g. SpatialTrigger.onEnter passes a receiver object), ignore the arg and fall back to the assigned source.
|
|
406
|
+
// Same pattern as AudioSource.play.
|
|
407
|
+
if (clip !== undefined && typeof clip !== "string" && !(clip instanceof MediaStream)) {
|
|
408
|
+
if (isDevEnvironment())
|
|
409
|
+
console.warn("[VideoPlayer] Called play with unknown argument type. Using assigned source instead.", clip);
|
|
410
|
+
clip = undefined;
|
|
411
|
+
}
|
|
412
|
+
if (typeof clip === "string") {
|
|
413
|
+
this.setClipURL(clip);
|
|
414
|
+
}
|
|
415
|
+
else if (clip instanceof MediaStream) {
|
|
416
|
+
this.setVideo(clip);
|
|
417
|
+
}
|
|
400
418
|
if (!this._videoElement)
|
|
401
419
|
this.create(false);
|
|
402
420
|
if (!this._videoElement) {
|
|
403
421
|
if (debug)
|
|
404
422
|
console.warn("Can not play: no video element found", this);
|
|
405
|
-
return;
|
|
423
|
+
return false;
|
|
406
424
|
}
|
|
407
425
|
if (this._isPlaying && !this._videoElement?.ended && !this._videoElement?.paused)
|
|
408
|
-
return;
|
|
426
|
+
return true;
|
|
409
427
|
this._isPlaying = true;
|
|
410
428
|
if (!this._receivedInput)
|
|
411
429
|
this._videoElement.muted = true;
|
|
412
430
|
this.handleBeginPlaying(false);
|
|
413
431
|
if (this.shouldUseM3U) {
|
|
414
432
|
this.ensureM3UCanBePlayed();
|
|
415
|
-
return;
|
|
433
|
+
return true;
|
|
416
434
|
}
|
|
417
435
|
if (debug)
|
|
418
436
|
console.log("Video Play()", this.clip, this._videoElement, this.time);
|
|
419
437
|
this._videoElement.currentTime = this.time;
|
|
420
|
-
|
|
438
|
+
try {
|
|
439
|
+
await this._videoElement.play();
|
|
440
|
+
if (debug)
|
|
441
|
+
console.log("play", this._videoElement, this.time);
|
|
442
|
+
return true;
|
|
443
|
+
}
|
|
444
|
+
catch (err) {
|
|
421
445
|
if (this._playErrors++ < 10)
|
|
422
446
|
console.error(err);
|
|
423
447
|
else if (this._playErrors === 10)
|
|
@@ -429,9 +453,8 @@ export class VideoPlayer extends Behaviour {
|
|
|
429
453
|
if (this._isPlaying && !this.destroyed && this.activeAndEnabled)
|
|
430
454
|
this.play();
|
|
431
455
|
}, 1000);
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
console.log("play", this._videoElement, this.time);
|
|
456
|
+
return false;
|
|
457
|
+
}
|
|
435
458
|
}
|
|
436
459
|
/**
|
|
437
460
|
* Stop the video playback. This will reset the video to the beginning
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoPlayer.js","sourceRoot":"","sources":["../../src/engine-components/VideoPlayer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VideoPlayer.js","sourceRoot":"","sources":["../../src/engine-components/VideoPlayer.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,9 +26,9 @@ export declare const noVoip = "noVoip";
|
|
|
26
26
|
* voip.createMenuButton = true;
|
|
27
27
|
*
|
|
28
28
|
* // Manual control
|
|
29
|
-
* voip.connect(); // Start sending
|
|
30
|
-
* voip.disconnect(); // Stop sending
|
|
31
|
-
* voip.setMuted(true); // Mute
|
|
29
|
+
* voip.connect(); // Start sending your microphone
|
|
30
|
+
* voip.disconnect(); // Stop sending your microphone
|
|
31
|
+
* voip.setMuted(true); // Mute incoming audio (silence other users)
|
|
32
32
|
* ```
|
|
33
33
|
*
|
|
34
34
|
* @summary Voice over IP for networked audio communication
|
|
@@ -87,8 +87,8 @@ export declare class Voip extends Behaviour {
|
|
|
87
87
|
*/
|
|
88
88
|
get incomingStreams(): ReadonlyMap<string, HTMLAudioElement>;
|
|
89
89
|
/**
|
|
90
|
-
*
|
|
91
|
-
* they are considered "speaking". Default is
|
|
90
|
+
* Normalized amplitude threshold for speaking detection (0–1). When a user's average
|
|
91
|
+
* audio amplitude exceeds this, they are considered "speaking". Default is 0.1.
|
|
92
92
|
*/
|
|
93
93
|
speakingThreshold: number;
|
|
94
94
|
/**
|
|
@@ -98,6 +98,8 @@ export declare class Voip extends Behaviour {
|
|
|
98
98
|
onSpeakingChanged: EventList;
|
|
99
99
|
private _speakingStates;
|
|
100
100
|
private _analysers;
|
|
101
|
+
private _sharedAudioContext?;
|
|
102
|
+
private _lastSpeakingPollMs;
|
|
101
103
|
private _net?;
|
|
102
104
|
private _menubutton?;
|
|
103
105
|
/** @internal */
|
|
@@ -111,21 +113,27 @@ export declare class Voip extends Behaviour {
|
|
|
111
113
|
/** Set via the mic button (e.g. when the websocket connection closes and rejoins but the user was muted before we don't want to enable VOIP again automatically) */
|
|
112
114
|
private _allowSending;
|
|
113
115
|
private _outputStream;
|
|
116
|
+
private _connectInFlight?;
|
|
114
117
|
/**
|
|
115
118
|
* @returns true if the component is currently sending audio
|
|
116
119
|
*/
|
|
117
120
|
get isSending(): boolean;
|
|
118
121
|
/** Start sending audio. */
|
|
119
122
|
connect(audioSource?: MediaTrackConstraints): Promise<boolean>;
|
|
123
|
+
private _connectImpl;
|
|
120
124
|
/** Stop sending audio (muting your own microphone) */
|
|
121
125
|
disconnect(opts?: {
|
|
122
126
|
remember: boolean;
|
|
123
127
|
}): void;
|
|
124
128
|
/**
|
|
125
|
-
* Mute or unmute the audio
|
|
129
|
+
* Mute or unmute the audio you hear from other users (incoming streams).
|
|
130
|
+
* This does NOT mute your own microphone — use {@link disconnect} to stop sending your microphone.
|
|
126
131
|
*/
|
|
127
132
|
setMuted(mute: boolean): void;
|
|
128
|
-
/**
|
|
133
|
+
/**
|
|
134
|
+
* Returns true if incoming audio is currently muted (you can't hear other users).
|
|
135
|
+
* When there are no incoming streams, returns false.
|
|
136
|
+
*/
|
|
129
137
|
get isMuted(): boolean;
|
|
130
138
|
private updateButton;
|
|
131
139
|
/** @deprecated */
|
|
@@ -138,6 +146,7 @@ export declare class Voip extends Behaviour {
|
|
|
138
146
|
update(): void;
|
|
139
147
|
private setupAnalyser;
|
|
140
148
|
private cleanupAnalyser;
|
|
149
|
+
private closeSharedAudioContext;
|
|
141
150
|
private onReceiveStream;
|
|
142
151
|
private onStreamEnded;
|
|
143
152
|
private onEnabledChanged;
|
|
@@ -40,9 +40,9 @@ const debugParam = getParam("debugvoip");
|
|
|
40
40
|
* voip.createMenuButton = true;
|
|
41
41
|
*
|
|
42
42
|
* // Manual control
|
|
43
|
-
* voip.connect(); // Start sending
|
|
44
|
-
* voip.disconnect(); // Stop sending
|
|
45
|
-
* voip.setMuted(true); // Mute
|
|
43
|
+
* voip.connect(); // Start sending your microphone
|
|
44
|
+
* voip.disconnect(); // Stop sending your microphone
|
|
45
|
+
* voip.setMuted(true); // Mute incoming audio (silence other users)
|
|
46
46
|
* ```
|
|
47
47
|
*
|
|
48
48
|
* @summary Voice over IP for networked audio communication
|
|
@@ -78,9 +78,14 @@ export class Voip extends Behaviour {
|
|
|
78
78
|
*/
|
|
79
79
|
get volume() { return this._volume; }
|
|
80
80
|
set volume(val) {
|
|
81
|
-
|
|
81
|
+
// HTMLMediaElement.volume throws IndexSizeError outside [0,1] — clamp before assigning.
|
|
82
|
+
// Reject NaN so we don't poison _volume and break serialization.
|
|
83
|
+
if (Number.isNaN(val))
|
|
84
|
+
return;
|
|
85
|
+
const clamped = Math.max(0, Math.min(1, val));
|
|
86
|
+
this._volume = clamped;
|
|
82
87
|
for (const audio of this._incomingStreams.values()) {
|
|
83
|
-
audio.volume =
|
|
88
|
+
audio.volume = clamped;
|
|
84
89
|
}
|
|
85
90
|
}
|
|
86
91
|
/**
|
|
@@ -110,10 +115,10 @@ export class Voip extends Behaviour {
|
|
|
110
115
|
return this._incomingStreams;
|
|
111
116
|
}
|
|
112
117
|
/**
|
|
113
|
-
*
|
|
114
|
-
* they are considered "speaking". Default is
|
|
118
|
+
* Normalized amplitude threshold for speaking detection (0–1). When a user's average
|
|
119
|
+
* audio amplitude exceeds this, they are considered "speaking". Default is 0.1.
|
|
115
120
|
*/
|
|
116
|
-
speakingThreshold =
|
|
121
|
+
speakingThreshold = 0.1;
|
|
117
122
|
/**
|
|
118
123
|
* Event fired when a user's speaking state changes.
|
|
119
124
|
* Passes `{ userId: string, isSpeaking: boolean, volume: number }`.
|
|
@@ -121,6 +126,10 @@ export class Voip extends Behaviour {
|
|
|
121
126
|
onSpeakingChanged = new EventList();
|
|
122
127
|
_speakingStates = new Map();
|
|
123
128
|
_analysers = new Map();
|
|
129
|
+
// Single shared AudioContext for all remote-user analysers. Browsers cap live AudioContexts at ~6 per tab,
|
|
130
|
+
// so one-per-user would break voice rooms of 7+ participants. Lazily created on first setupAnalyser.
|
|
131
|
+
_sharedAudioContext;
|
|
132
|
+
_lastSpeakingPollMs = 0;
|
|
124
133
|
_net;
|
|
125
134
|
_menubutton;
|
|
126
135
|
/** @internal */
|
|
@@ -128,12 +137,12 @@ export class Voip extends Behaviour {
|
|
|
128
137
|
if (debugParam)
|
|
129
138
|
this.debug = true;
|
|
130
139
|
if (this.debug) {
|
|
131
|
-
console.log("VOIP debugging: press 'v' to toggle mute
|
|
140
|
+
console.log("VOIP debugging: press 'v' to toggle incoming mute, 'c' to toggle connect/disconnect");
|
|
132
141
|
window.addEventListener("keydown", async (evt) => {
|
|
133
142
|
const key = evt.key.toLowerCase();
|
|
134
143
|
switch (key) {
|
|
135
144
|
case "v":
|
|
136
|
-
console.log("
|
|
145
|
+
console.log("VOIP: toggle incoming mute → ", !this.isMuted);
|
|
137
146
|
this.setMuted(!this.isMuted);
|
|
138
147
|
break;
|
|
139
148
|
case "c":
|
|
@@ -144,15 +153,6 @@ export class Voip extends Behaviour {
|
|
|
144
153
|
break;
|
|
145
154
|
}
|
|
146
155
|
});
|
|
147
|
-
// mute unfocused
|
|
148
|
-
window.addEventListener("blur", () => {
|
|
149
|
-
console.log("VOIP: MUTE ON BLUR");
|
|
150
|
-
this.setMuted(true);
|
|
151
|
-
});
|
|
152
|
-
window.addEventListener("focus", () => {
|
|
153
|
-
console.log("VOIP: UNMUTE ON FOCUS");
|
|
154
|
-
this.setMuted(false);
|
|
155
|
-
});
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
/** @internal */
|
|
@@ -189,10 +189,11 @@ export class Voip extends Behaviour {
|
|
|
189
189
|
this.onEnabledChanged();
|
|
190
190
|
this.updateButton();
|
|
191
191
|
window.removeEventListener("visibilitychange", this.onVisibilityChanged);
|
|
192
|
-
// Clean up analysers
|
|
192
|
+
// Clean up analysers and the shared AudioContext (lazily recreated on next setupAnalyser).
|
|
193
193
|
for (const userId of [...this._analysers.keys()]) {
|
|
194
194
|
this.cleanupAnalyser(userId);
|
|
195
195
|
}
|
|
196
|
+
this.closeSharedAudioContext();
|
|
196
197
|
}
|
|
197
198
|
/** @internal */
|
|
198
199
|
onDestroy() {
|
|
@@ -202,6 +203,7 @@ export class Voip extends Behaviour {
|
|
|
202
203
|
for (const userId of [...this._analysers.keys()]) {
|
|
203
204
|
this.cleanupAnalyser(userId);
|
|
204
205
|
}
|
|
206
|
+
this.closeSharedAudioContext();
|
|
205
207
|
for (const incoming of this._incomingStreams.values()) {
|
|
206
208
|
disposeStream(incoming.srcObject);
|
|
207
209
|
}
|
|
@@ -211,12 +213,27 @@ export class Voip extends Behaviour {
|
|
|
211
213
|
/** Set via the mic button (e.g. when the websocket connection closes and rejoins but the user was muted before we don't want to enable VOIP again automatically) */
|
|
212
214
|
_allowSending = true;
|
|
213
215
|
_outputStream = null;
|
|
216
|
+
// Tracks an in-flight connect() so concurrent callers coalesce onto the same promise
|
|
217
|
+
// instead of each running getUserMedia in parallel (which would leak a MediaStream and
|
|
218
|
+
// briefly transmit then kill the first acquired stream).
|
|
219
|
+
_connectInFlight;
|
|
214
220
|
/**
|
|
215
221
|
* @returns true if the component is currently sending audio
|
|
216
222
|
*/
|
|
217
223
|
get isSending() { return this._outputStream != null && this._outputStream.active; }
|
|
218
224
|
/** Start sending audio. */
|
|
219
|
-
|
|
225
|
+
connect(audioSource) {
|
|
226
|
+
// Coalesce concurrent callers. Without this, two near-simultaneous connect() calls
|
|
227
|
+
// each call getUserMedia in parallel, the first stream gets disposed mid-broadcast
|
|
228
|
+
// by the second, and a MediaStream leaks.
|
|
229
|
+
if (this._connectInFlight)
|
|
230
|
+
return this._connectInFlight;
|
|
231
|
+
this._connectInFlight = this._connectImpl(audioSource).finally(() => {
|
|
232
|
+
this._connectInFlight = undefined;
|
|
233
|
+
});
|
|
234
|
+
return this._connectInFlight;
|
|
235
|
+
}
|
|
236
|
+
async _connectImpl(audioSource) {
|
|
220
237
|
if (!this._net) {
|
|
221
238
|
console.error("Cannot connect to voice chat - NetworkedStreams not initialized. Make sure the component is enabled before calling this method.");
|
|
222
239
|
return false;
|
|
@@ -265,28 +282,26 @@ export class Voip extends Behaviour {
|
|
|
265
282
|
this.updateButton();
|
|
266
283
|
}
|
|
267
284
|
/**
|
|
268
|
-
* Mute or unmute the audio
|
|
285
|
+
* Mute or unmute the audio you hear from other users (incoming streams).
|
|
286
|
+
* This does NOT mute your own microphone — use {@link disconnect} to stop sending your microphone.
|
|
269
287
|
*/
|
|
270
288
|
setMuted(mute) {
|
|
271
|
-
const audio
|
|
272
|
-
|
|
273
|
-
for (const track of audio) {
|
|
274
|
-
track.enabled = !mute;
|
|
275
|
-
}
|
|
289
|
+
for (const audio of this._incomingStreams.values()) {
|
|
290
|
+
audio.muted = mute;
|
|
276
291
|
}
|
|
277
292
|
}
|
|
278
|
-
/**
|
|
293
|
+
/**
|
|
294
|
+
* Returns true if incoming audio is currently muted (you can't hear other users).
|
|
295
|
+
* When there are no incoming streams, returns false.
|
|
296
|
+
*/
|
|
279
297
|
get isMuted() {
|
|
280
|
-
if (this.
|
|
298
|
+
if (this._incomingStreams.size === 0)
|
|
281
299
|
return false;
|
|
282
|
-
const audio
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
if (!track.enabled)
|
|
286
|
-
return true;
|
|
287
|
-
}
|
|
300
|
+
for (const audio of this._incomingStreams.values()) {
|
|
301
|
+
if (!audio.muted)
|
|
302
|
+
return false;
|
|
288
303
|
}
|
|
289
|
-
return
|
|
304
|
+
return true;
|
|
290
305
|
}
|
|
291
306
|
async updateButton() {
|
|
292
307
|
if (this.createMenuButton) {
|
|
@@ -365,7 +380,6 @@ export class Voip extends Behaviour {
|
|
|
365
380
|
console.warn("VOIP failed getting audio stream", err);
|
|
366
381
|
return null;
|
|
367
382
|
});
|
|
368
|
-
;
|
|
369
383
|
};
|
|
370
384
|
const stream = await getUserMedia(audio);
|
|
371
385
|
if (!stream)
|
|
@@ -379,7 +393,13 @@ export class Voip extends Behaviour {
|
|
|
379
393
|
if (nonBuiltInAudioSource) {
|
|
380
394
|
const constraints = Object.assign({}, audio);
|
|
381
395
|
constraints.deviceId = nonBuiltInAudioSource.deviceId;
|
|
382
|
-
|
|
396
|
+
const externalStream = await getUserMedia(constraints);
|
|
397
|
+
if (externalStream) {
|
|
398
|
+
// Release the built-in mic stream we grabbed first — otherwise its tracks stay live.
|
|
399
|
+
disposeStream(stream);
|
|
400
|
+
return externalStream;
|
|
401
|
+
}
|
|
402
|
+
// External device acquisition failed — keep the original stream rather than returning null.
|
|
383
403
|
}
|
|
384
404
|
}
|
|
385
405
|
return stream;
|
|
@@ -412,18 +432,24 @@ export class Voip extends Behaviour {
|
|
|
412
432
|
// Only run speaking detection if someone is listening
|
|
413
433
|
if (!this.onSpeakingChanged || this.onSpeakingChanged.listenerCount <= 0)
|
|
414
434
|
return;
|
|
435
|
+
// Rate-limit analysis to ~10Hz. Speaking-state is a coarse UI signal; running FFT per
|
|
436
|
+
// remote user every frame (60Hz) is wasteful and scales linearly with participant count.
|
|
437
|
+
const now = performance.now();
|
|
438
|
+
if (now - this._lastSpeakingPollMs < 100)
|
|
439
|
+
return;
|
|
440
|
+
this._lastSpeakingPollMs = now;
|
|
415
441
|
for (const [userId, info] of this._analysers) {
|
|
416
442
|
info.analyser.getByteFrequencyData(info.data);
|
|
417
|
-
// Average amplitude
|
|
443
|
+
// Average amplitude normalized to 0–1
|
|
418
444
|
let sum = 0;
|
|
419
445
|
for (let i = 0; i < info.data.length; i++)
|
|
420
446
|
sum += info.data[i];
|
|
421
|
-
const
|
|
447
|
+
const volume = sum / info.data.length / 255;
|
|
422
448
|
const wasSpeaking = this._speakingStates.get(userId) ?? false;
|
|
423
|
-
const isSpeaking =
|
|
449
|
+
const isSpeaking = volume > this.speakingThreshold;
|
|
424
450
|
if (isSpeaking !== wasSpeaking) {
|
|
425
451
|
this._speakingStates.set(userId, isSpeaking);
|
|
426
|
-
this.onSpeakingChanged.invoke({ userId, isSpeaking, volume
|
|
452
|
+
this.onSpeakingChanged.invoke({ userId, isSpeaking, volume });
|
|
427
453
|
}
|
|
428
454
|
}
|
|
429
455
|
}
|
|
@@ -432,13 +458,16 @@ export class Voip extends Behaviour {
|
|
|
432
458
|
if (this._analysers.has(userId))
|
|
433
459
|
return;
|
|
434
460
|
try {
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
461
|
+
if (!this._sharedAudioContext) {
|
|
462
|
+
this._sharedAudioContext = new AudioContext();
|
|
463
|
+
}
|
|
464
|
+
const ctx = this._sharedAudioContext;
|
|
465
|
+
const source = ctx.createMediaStreamSource(stream);
|
|
466
|
+
const analyser = ctx.createAnalyser();
|
|
438
467
|
analyser.fftSize = 256;
|
|
439
468
|
source.connect(analyser);
|
|
440
469
|
const data = new Uint8Array(analyser.frequencyBinCount);
|
|
441
|
-
this._analysers.set(userId, { analyser, data
|
|
470
|
+
this._analysers.set(userId, { source, analyser, data });
|
|
442
471
|
}
|
|
443
472
|
catch (err) {
|
|
444
473
|
if (this.debug)
|
|
@@ -448,11 +477,18 @@ export class Voip extends Behaviour {
|
|
|
448
477
|
cleanupAnalyser(userId) {
|
|
449
478
|
const info = this._analysers.get(userId);
|
|
450
479
|
if (info) {
|
|
451
|
-
info.
|
|
480
|
+
info.source.disconnect();
|
|
481
|
+
info.analyser.disconnect();
|
|
452
482
|
this._analysers.delete(userId);
|
|
453
483
|
}
|
|
454
484
|
this._speakingStates.delete(userId);
|
|
455
485
|
}
|
|
486
|
+
closeSharedAudioContext() {
|
|
487
|
+
if (this._sharedAudioContext) {
|
|
488
|
+
this._sharedAudioContext.close();
|
|
489
|
+
this._sharedAudioContext = undefined;
|
|
490
|
+
}
|
|
491
|
+
}
|
|
456
492
|
onReceiveStream = (evt) => {
|
|
457
493
|
const userId = evt.target.userId;
|
|
458
494
|
const stream = evt.stream;
|
|
@@ -487,13 +523,14 @@ export class Voip extends Behaviour {
|
|
|
487
523
|
onVisibilityChanged = () => {
|
|
488
524
|
if (this.runInBackground)
|
|
489
525
|
return;
|
|
490
|
-
const
|
|
491
|
-
|
|
526
|
+
const muted = document.visibilityState !== "visible";
|
|
527
|
+
// Mute incoming so we don't hear other users while tab is hidden.
|
|
492
528
|
this.setMuted(muted);
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
529
|
+
// Also disable our outgoing mic tracks (cheaper than disconnect/reconnect — keeps the mic permission).
|
|
530
|
+
const tracks = this._outputStream?.getAudioTracks();
|
|
531
|
+
if (tracks)
|
|
532
|
+
for (const t of tracks)
|
|
533
|
+
t.enabled = !muted;
|
|
497
534
|
};
|
|
498
535
|
}
|
|
499
536
|
__decorate([
|