Mercurial > hg > js-dsp-test
view fft/cross/FFT.js @ 15:ece8682d8293
Avoid generating browser/filesystem support with Emscripten (not needed)
author | Chris Cannam |
---|---|
date | Mon, 05 Oct 2015 14:54:12 +0100 |
parents | c6577c4b3780 |
children | 26056e866c29 |
line wrap: on
line source
"use strict"; var crossModule = CrossModule({}); var fftCross = crossModule.cwrap( 'fftCross', 'void', ['number', 'number', 'number', 'number', 'number', 'number' ] ); function FFTCross(size) { this.size = size; this.n = size * 8; this.ptr = crossModule._malloc(this.n * 4); this.ri = new Uint8Array(crossModule.HEAPU8.buffer, this.ptr, this.n); this.ii = new Uint8Array(crossModule.HEAPU8.buffer, this.ptr + this.n, this.n); this.transform = function(real, imag, inverse) { var ptr = this.ptr; var n = this.n; this.ri.set(new Uint8Array(real.buffer)); this.ii.set(new Uint8Array(imag.buffer)); fftCross(this.size, inverse, ptr, ptr + n, ptr + n * 2, ptr + n * 3); var ro = new Float64Array(crossModule.HEAPU8.buffer, ptr + n * 2, this.size); var io = new Float64Array(crossModule.HEAPU8.buffer, ptr + n * 3, this.size); return { real: ro, imag: io }; } this.transformReal = function(real, inverse) { var ptr = this.ptr; var n = this.n; this.ri.set(new Uint8Array(real.buffer)); fftCross(this.size, inverse, ptr, 0, ptr + n * 2, ptr + n * 3); var ro = new Float64Array(crossModule.HEAPU8.buffer, ptr + n * 2, this.size); var io = new Float64Array(crossModule.HEAPU8.buffer, ptr + n * 3, this.size); return { real: ro, imag: io }; } this.discard = function() { crossModule._free(this.ptr); } }