Update audio.js

Improves the perfomance of that function by caching some values that doesn't change during loop.
This commit is contained in:
Intexk 2017-04-05 11:08:07 +01:00 committed by GitHub
commit cffb6c8920

View file

@ -214,22 +214,25 @@ function SAEO_Audio() {
const INV32768 = 1.0 / 32768; /* mul is always fasten than div */ const INV32768 = 1.0 / 32768; /* mul is always fasten than div */
function scaleplay(e, buffer, frames) { function scaleplay(e, buffer, frames) {
var chn=SAEV_config.audio.channels;
var z=e.outputBuffer.length;
if (muted) { if (muted) {
for (var ch = 0; ch < SAEV_config.audio.channels; ch++) { for (var ch = 0; ch < chn; ch++) {
var data = e.outputBuffer.getChannelData(ch); var data = e.outputBuffer.getChannelData(ch);
for (var i = 0; i < e.outputBuffer.length; i++) for (var i = 0; i < z; i++)
data[i] = 0.0; data[i] = 0.0;
} }
return; return;
} }
/*if (driver.context.sampleRate != used_freq) { /*if (driver.context.sampleRate != used_freq) {
} else*/ { } else*/ {
var step = frames / e.outputBuffer.length; var step = frames / z;
for (var ch = 0; ch < SAEV_config.audio.channels; ch++) { for (var ch = 0; ch < chn; ch++) {
var data = e.outputBuffer.getChannelData(ch); var data = e.outputBuffer.getChannelData(ch);
for (var i = 0, j = 0.0; i < e.outputBuffer.length; i++, j += step) var tbuf=buffer[ch];
data[i] = buffer[ch][j >>> 0] * INV32768; for (var i = 0, j = 0.0; i < z; i++, j += step)
data[i] = tbuf[j >>> 0] * INV32768;
} }
} }
} }