Fixing setInterval not freed for some volume analyzers
Also: using a 256 fftSize instead of 2048 to save on CPU cycles.
This commit is contained in:
@@ -74,12 +74,17 @@ export class VideoPeer extends Peer {
|
||||
|
||||
this.volumeStore = readable<number | undefined>(undefined, (set) => {
|
||||
let timeout: ReturnType<typeof setTimeout>;
|
||||
let soundMeter: SoundMeter;
|
||||
const unsubscribe = this.streamStore.subscribe((mediaStream) => {
|
||||
clearInterval(timeout);
|
||||
if (soundMeter) {
|
||||
soundMeter.stop();
|
||||
}
|
||||
if (mediaStream === null || mediaStream.getAudioTracks().length <= 0) {
|
||||
set(undefined);
|
||||
return;
|
||||
}
|
||||
const soundMeter = new SoundMeter(mediaStream);
|
||||
soundMeter = new SoundMeter(mediaStream);
|
||||
let error = false;
|
||||
|
||||
timeout = setInterval(() => {
|
||||
@@ -97,6 +102,9 @@ export class VideoPeer extends Peer {
|
||||
return () => {
|
||||
unsubscribe();
|
||||
clearInterval(timeout);
|
||||
if (soundMeter) {
|
||||
soundMeter.stop();
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user