UNPKG

@4bitlabs/dct

Version:

Discrete cosine transform algorithms in js and ts

35 lines 1.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createDctOfN = createDctOfN; function createDctOfN(N) { const COS = new Float64Array(N * N).map((_, i) => { const k = Math.floor(i / N); const n = i % N; return Math.cos((Math.PI * (n + 0.5) * k) / N); }); const sqrt2_n = Math.sqrt(2 / N); function transform(vIn, vOut) { let sum; for (let k = 0; k < N; k++) { sum = 0; for (let n = 0; n < N; n++) { sum += vIn[n] * COS[n + k * N]; } const s = k === 0 ? 1 / Math.SQRT2 : 1; vOut[k] = s * sqrt2_n * sum; } } function inverse(vIn, vOut) { let sum; for (let n = 0; n < N; n++) { sum = 0; for (let k = 0; k < N; k++) { const s = k === 0 ? Math.SQRT1_2 : 1; sum += s * vIn[k] * COS[n + k * N]; } vOut[n] = sqrt2_n * sum; } } return { transform, inverse }; } //# sourceMappingURL=dct-n.js.map