- From: John Funnell <notifications@github.com>
- Date: Wed, 21 Feb 2024 01:44:52 -0800
- To: w3ctag/design-reviews <design-reviews@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3ctag/design-reviews/issues/843/1956258818@github.com>
There is a way to estimate render capacity that works today. To do this, capture timestamps before and after processing on the audio thread. There are a couple of challenges to overcome: timestamps can only be captured with 1ms precision (thanks Spectre) and the audio chunk rate may beat with the 1kHz timestamp clock. So aggregation/estimation requires a period of the order of 1 second to stabilise although this could possibly be improved with better designed signal processing. See it in action: https://bungee.parabolaresearch.com/bungee-web-demo. There may be a further challenge with adapting processing complexity according to render capacity. Occasionally something (browser or OS) seems to detect a lightly used thread and either move it to an efficient or low-clocked core. So, paradoxically, faster render code can sometimes result in increased render capacity. This is a "denominator problem" that needs more study. Simple sample below. ```JS class NoiseGenerator extends AudioWorkletProcessor { constructor() { super(); this.active = this.idle= 0; } process(inputs, outputs, parameters) { const start = Date.now(); this.active -= start; if (this.idle) { this.idle += start; console.log("Render capacity: " + 100 * this.active / (this.active + this.idle) + "%"); } // generate some noise const output = outputs[0]; for (let channel = 0; channel < outputs[0].length; ++channel) for (let i = 0; i < outputs[0][channel].length; ++i) outputs[0][channel][i] = Math.random() * 2 - 1; const finish = Date.now(); this.active += finish; this.idle -= finish; return true; } } registerProcessor('noise-generator', NoiseGenerator); ``` -- Reply to this email directly or view it on GitHub: https://github.com/w3ctag/design-reviews/issues/843#issuecomment-1956258818 You are receiving this because you are subscribed to this thread. Message ID: <w3ctag/design-reviews/issues/843/1956258818@github.com>
Received on Wednesday, 21 February 2024 09:44:56 UTC