// AudioWorklet, который буферизует входной поток и шлёт чанки по 1280 семплов
// (80 мс при 16kHz) в main thread. Любая входная длина допустима — буферизуется.
class WakeCaptureProcessor extends AudioWorkletProcessor {
  constructor() {
    super()
    this.buf = new Float32Array(0)
    this.target = 1280
  }
  process(inputs) {
    const ch = inputs[0] && inputs[0][0]
    if (!ch || ch.length === 0) return true
    const merged = new Float32Array(this.buf.length + ch.length)
    merged.set(this.buf)
    merged.set(ch, this.buf.length)
    this.buf = merged
    while (this.buf.length >= this.target) {
      this.port.postMessage(this.buf.slice(0, this.target))
      this.buf = this.buf.slice(this.target)
    }
    return true
  }
}
registerProcessor('wake-capture', WakeCaptureProcessor)
