mirror of
https://github.com/captbaritone/webamp.git
synced 2026-08-03 07:23:55 +00:00
Try to do a better job cleaning up channel detection audio nodes
This commit is contained in:
parent
4f5ead46ed
commit
d5debf882c
1 changed files with 11 additions and 2 deletions
|
|
@ -15,14 +15,21 @@ function createAnalysers(source) {
|
|||
leftGain.connect(leftAnalyser);
|
||||
rightGain.connect(rightAnalyser);
|
||||
|
||||
return { left: leftAnalyser, right: rightAnalyser };
|
||||
function destroy() {
|
||||
source.disconnect(splitter);
|
||||
splitter.disconnect();
|
||||
leftGain.disconnect();
|
||||
rightGain.disconnect();
|
||||
}
|
||||
|
||||
return { left: leftAnalyser, right: rightAnalyser, destroy };
|
||||
}
|
||||
|
||||
const MAX_CALLS = 1000;
|
||||
|
||||
export default async function detectChannels(source) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const { left, right } = createAnalysers(source);
|
||||
const { left, right, destroy } = createAnalysers(source);
|
||||
|
||||
const dataArray = new Uint8Array(left.frequencyBinCount);
|
||||
let maxLeft = 0;
|
||||
|
|
@ -40,11 +47,13 @@ export default async function detectChannels(source) {
|
|||
} else {
|
||||
resolve(1);
|
||||
}
|
||||
destroy();
|
||||
clearInterval(intervalHandle);
|
||||
}
|
||||
|
||||
if (calls >= MAX_CALLS) {
|
||||
reject();
|
||||
destroy();
|
||||
}
|
||||
|
||||
calls++;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue