summaryrefslogtreecommitdiff
path: root/client-web/public/assets/rnnoise/rnnoise-processor.js
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2022-09-07 11:14:42 +0200
committermetamuffin <metamuffin@disroot.org>2022-09-07 11:14:42 +0200
commit61950198e3bf06555f48e8f51c882a4c3cce5128 (patch)
treea7701a44804d4a2a634f3410d400545ea82d1c45 /client-web/public/assets/rnnoise/rnnoise-processor.js
parent832f48f29098cc6f840ade90db3b94efa67c6833 (diff)
downloadkeks-meet-61950198e3bf06555f48e8f51c882a4c3cce5128.tar
keks-meet-61950198e3bf06555f48e8f51c882a4c3cce5128.tar.bz2
keks-meet-61950198e3bf06555f48e8f51c882a4c3cce5128.tar.zst
REFACTOR! pt.1
Diffstat (limited to 'client-web/public/assets/rnnoise/rnnoise-processor.js')
-rw-r--r--client-web/public/assets/rnnoise/rnnoise-processor.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/client-web/public/assets/rnnoise/rnnoise-processor.js b/client-web/public/assets/rnnoise/rnnoise-processor.js
new file mode 100644
index 0000000..5b594a4
--- /dev/null
+++ b/client-web/public/assets/rnnoise/rnnoise-processor.js
@@ -0,0 +1,41 @@
+"use strict";
+{
+ let b, d;
+ registerProcessor(
+ "rnnoise",
+ class extends AudioWorkletProcessor {
+ constructor(a) {
+ super({
+ ...a,
+ numberOfInputs: 1,
+ numberOfOutputs: 1,
+ outputChannelCount: [1],
+ });
+ b ||
+ (d = new Float32Array(
+ (b = new WebAssembly.Instance(a.processorOptions.module)
+ .exports).memory.buffer
+ ));
+ this.state = b.newState();
+ this.alive = !0;
+ this.port.onmessage = ({ data: a }) => {
+ this.alive &&
+ (a
+ ? this.port.postMessage({ vadProb: b.getVadProb(this.state) })
+ : ((this.alive = !1), b.deleteState(this.state)));
+ };
+ }
+ process(a, c, e) {
+ if (!a[0][0]) return 1
+ if (this.alive)
+ return (
+ d.set(a[0][0], b.getInput(this.state) / 4),
+ (a = c[0][0]),
+ (c = b.pipe(this.state, a.length) / 4) &&
+ a.set(d.subarray(c, c + a.length)),
+ !0
+ );
+ }
+ }
+ );
+}