Chris@7: "use strict"; Chris@7: Chris@8: var crossModule = CrossModule({}); Chris@8: Chris@8: var fftCross = crossModule.cwrap( Chris@7: 'fftCross', 'void', ['number', 'number', 'number', Chris@7: 'number', 'number', 'number' ] Chris@7: ); Chris@7: Chris@7: function FFTCross(size) { Chris@7: this.size = size; Chris@7: this.n = size * 8; Chris@8: this.ptr = crossModule._malloc(this.n * 4); Chris@8: this.ri = new Uint8Array(crossModule.HEAPU8.buffer, this.ptr, this.n); Chris@8: this.ii = new Uint8Array(crossModule.HEAPU8.buffer, this.ptr + this.n, this.n); Chris@7: this.transform = function(real, imag, inverse) { Chris@7: var ptr = this.ptr; Chris@7: var n = this.n; Chris@7: this.ri.set(new Uint8Array(real.buffer)); Chris@7: this.ii.set(new Uint8Array(imag.buffer)); Chris@7: fftCross(this.size, inverse, Chris@7: ptr, ptr + n, ptr + n * 2, ptr + n * 3); Chris@8: var ro = new Float64Array(crossModule.HEAPU8.buffer, ptr + n * 2, this.size); Chris@8: var io = new Float64Array(crossModule.HEAPU8.buffer, ptr + n * 3, this.size); Chris@21: return { real: ro, imag: io }; Chris@7: } Chris@7: this.transformReal = function(real, inverse) { Chris@7: var ptr = this.ptr; Chris@7: var n = this.n; Chris@7: this.ri.set(new Uint8Array(real.buffer)); Chris@7: fftCross(this.size, inverse, Chris@7: ptr, 0, ptr + n * 2, ptr + n * 3); Chris@8: var ro = new Float64Array(crossModule.HEAPU8.buffer, ptr + n * 2, this.size); Chris@8: var io = new Float64Array(crossModule.HEAPU8.buffer, ptr + n * 3, this.size); Chris@21: return { real: ro, imag: io }; Chris@7: } Chris@19: this.dispose = function() { Chris@8: crossModule._free(this.ptr); Chris@7: } Chris@7: } Chris@7: