@gmod/cram 6.0.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/craiIndex.js +2 -2
- package/dist/craiIndex.js.map +1 -1
- package/dist/cram-bundle.js +1 -1
- package/dist/cramFile/file.d.ts +2 -2
- package/dist/cramFile/file.js +9 -13
- package/dist/cramFile/file.js.map +1 -1
- package/dist/htscodecs/index.d.ts +1 -5
- package/dist/htscodecs/index.js +11 -72
- package/dist/htscodecs/index.js.map +1 -1
- package/dist/htscodecs-wasm.d.ts +7 -0
- package/dist/htscodecs-wasm.js +183 -0
- package/dist/htscodecs-wasm.js.map +1 -0
- package/dist/unzip.d.ts +1 -1
- package/dist/unzip.js +3 -3
- package/dist/unzip.js.map +1 -1
- package/dist/wasm/htscodecs.d.ts +5 -0
- package/dist/wasm/htscodecs.js +0 -0
- package/dist/wasm/htscodecs.js.map +1 -0
- package/esm/craiIndex.js +2 -2
- package/esm/craiIndex.js.map +1 -1
- package/esm/cramFile/file.d.ts +2 -2
- package/esm/cramFile/file.js +7 -11
- package/esm/cramFile/file.js.map +1 -1
- package/esm/htscodecs/index.d.ts +1 -5
- package/esm/htscodecs/index.js +3 -31
- package/esm/htscodecs/index.js.map +1 -1
- package/esm/htscodecs-wasm.d.ts +7 -0
- package/esm/htscodecs-wasm.js +171 -0
- package/esm/htscodecs-wasm.js.map +1 -0
- package/esm/unzip.d.ts +1 -1
- package/esm/unzip.js +3 -3
- package/esm/unzip.js.map +1 -1
- package/esm/wasm/htscodecs.d.ts +5 -0
- package/esm/wasm/htscodecs.js +0 -0
- package/esm/wasm/htscodecs.js.map +1 -0
- package/package.json +9 -9
- package/src/craiIndex.ts +4 -2
- package/src/cramFile/file.ts +7 -11
- package/src/htscodecs/index.ts +12 -38
- package/src/htscodecs-wasm.ts +210 -0
- package/src/unzip.ts +3 -3
- package/src/wasm/htscodecs.d.ts +58 -0
- package/src/wasm/htscodecs.js +0 -0
- package/dist/htscodecs/arith_gen.d.ts +0 -16
- package/dist/htscodecs/arith_gen.js +0 -323
- package/dist/htscodecs/arith_gen.js.map +0 -1
- package/dist/htscodecs/arith_sh.d.ts +0 -9
- package/dist/htscodecs/arith_sh.js +0 -134
- package/dist/htscodecs/arith_sh.js.map +0 -1
- package/dist/htscodecs/byte_model.d.ts +0 -6
- package/dist/htscodecs/byte_model.js +0 -121
- package/dist/htscodecs/byte_model.js.map +0 -1
- package/dist/htscodecs/fqzcomp.d.ts +0 -1
- package/dist/htscodecs/fqzcomp.js +0 -346
- package/dist/htscodecs/fqzcomp.js.map +0 -1
- package/dist/htscodecs/iostream.d.ts +0 -16
- package/dist/htscodecs/iostream.js +0 -148
- package/dist/htscodecs/iostream.js.map +0 -1
- package/dist/htscodecs/rans.d.ts +0 -1
- package/dist/htscodecs/rans.js +0 -224
- package/dist/htscodecs/rans.js.map +0 -1
- package/dist/htscodecs/rans4x16.d.ts +0 -1
- package/dist/htscodecs/rans4x16.js +0 -445
- package/dist/htscodecs/rans4x16.js.map +0 -1
- package/dist/htscodecs/tok3.d.ts +0 -1
- package/dist/htscodecs/tok3.js +0 -206
- package/dist/htscodecs/tok3.js.map +0 -1
- package/dist/rans/constants.d.ts +0 -4
- package/dist/rans/constants.js +0 -10
- package/dist/rans/constants.js.map +0 -1
- package/dist/rans/d04.d.ts +0 -1
- package/dist/rans/d04.js +0 -100
- package/dist/rans/d04.js.map +0 -1
- package/dist/rans/d14.d.ts +0 -1
- package/dist/rans/d14.js +0 -96
- package/dist/rans/d14.js.map +0 -1
- package/dist/rans/decoding.d.ts +0 -27
- package/dist/rans/decoding.js +0 -119
- package/dist/rans/decoding.js.map +0 -1
- package/dist/rans/frequencies.d.ts +0 -2
- package/dist/rans/frequencies.js +0 -112
- package/dist/rans/frequencies.js.map +0 -1
- package/dist/rans/index.d.ts +0 -1
- package/dist/rans/index.js +0 -198
- package/dist/rans/index.js.map +0 -1
- package/dist/seek-bzip/bitreader.d.ts +0 -27
- package/dist/seek-bzip/bitreader.js +0 -101
- package/dist/seek-bzip/bitreader.js.map +0 -1
- package/dist/seek-bzip/crc32.d.ts +0 -26
- package/dist/seek-bzip/crc32.js +0 -115
- package/dist/seek-bzip/crc32.js.map +0 -1
- package/dist/seek-bzip/index.d.ts +0 -9
- package/dist/seek-bzip/index.js +0 -585
- package/dist/seek-bzip/index.js.map +0 -1
- package/dist/seek-bzip/stream.d.ts +0 -8
- package/dist/seek-bzip/stream.js +0 -37
- package/dist/seek-bzip/stream.js.map +0 -1
- package/dist/seek-bzip/toHex.d.ts +0 -1
- package/dist/seek-bzip/toHex.js +0 -36
- package/dist/seek-bzip/toHex.js.map +0 -1
- package/esm/htscodecs/arith_gen.d.ts +0 -16
- package/esm/htscodecs/arith_gen.js +0 -317
- package/esm/htscodecs/arith_gen.js.map +0 -1
- package/esm/htscodecs/arith_sh.d.ts +0 -9
- package/esm/htscodecs/arith_sh.js +0 -131
- package/esm/htscodecs/arith_sh.js.map +0 -1
- package/esm/htscodecs/byte_model.d.ts +0 -6
- package/esm/htscodecs/byte_model.js +0 -118
- package/esm/htscodecs/byte_model.js.map +0 -1
- package/esm/htscodecs/fqzcomp.d.ts +0 -1
- package/esm/htscodecs/fqzcomp.js +0 -340
- package/esm/htscodecs/fqzcomp.js.map +0 -1
- package/esm/htscodecs/iostream.d.ts +0 -16
- package/esm/htscodecs/iostream.js +0 -145
- package/esm/htscodecs/iostream.js.map +0 -1
- package/esm/htscodecs/rans.d.ts +0 -1
- package/esm/htscodecs/rans.js +0 -218
- package/esm/htscodecs/rans.js.map +0 -1
- package/esm/htscodecs/rans4x16.d.ts +0 -1
- package/esm/htscodecs/rans4x16.js +0 -439
- package/esm/htscodecs/rans4x16.js.map +0 -1
- package/esm/htscodecs/tok3.d.ts +0 -1
- package/esm/htscodecs/tok3.js +0 -167
- package/esm/htscodecs/tok3.js.map +0 -1
- package/esm/rans/constants.d.ts +0 -4
- package/esm/rans/constants.js +0 -5
- package/esm/rans/constants.js.map +0 -1
- package/esm/rans/d04.d.ts +0 -1
- package/esm/rans/d04.js +0 -94
- package/esm/rans/d04.js.map +0 -1
- package/esm/rans/d14.d.ts +0 -1
- package/esm/rans/d14.js +0 -93
- package/esm/rans/d14.js.map +0 -1
- package/esm/rans/decoding.d.ts +0 -27
- package/esm/rans/decoding.js +0 -117
- package/esm/rans/decoding.js.map +0 -1
- package/esm/rans/frequencies.d.ts +0 -2
- package/esm/rans/frequencies.js +0 -105
- package/esm/rans/frequencies.js.map +0 -1
- package/esm/rans/index.d.ts +0 -1
- package/esm/rans/index.js +0 -192
- package/esm/rans/index.js.map +0 -1
- package/esm/seek-bzip/bitreader.d.ts +0 -27
- package/esm/seek-bzip/bitreader.js +0 -98
- package/esm/seek-bzip/bitreader.js.map +0 -1
- package/esm/seek-bzip/crc32.d.ts +0 -26
- package/esm/seek-bzip/crc32.js +0 -112
- package/esm/seek-bzip/crc32.js.map +0 -1
- package/esm/seek-bzip/index.d.ts +0 -9
- package/esm/seek-bzip/index.js +0 -579
- package/esm/seek-bzip/index.js.map +0 -1
- package/esm/seek-bzip/stream.d.ts +0 -8
- package/esm/seek-bzip/stream.js +0 -34
- package/esm/seek-bzip/stream.js.map +0 -1
- package/esm/seek-bzip/toHex.d.ts +0 -1
- package/esm/seek-bzip/toHex.js +0 -33
- package/esm/seek-bzip/toHex.js.map +0 -1
- package/src/htscodecs/arith_gen.ts +0 -371
- package/src/htscodecs/arith_sh.ts +0 -146
- package/src/htscodecs/byte_model.ts +0 -136
- package/src/htscodecs/fqzcomp.ts +0 -394
- package/src/htscodecs/iostream.ts +0 -159
- package/src/htscodecs/rans.ts +0 -250
- package/src/htscodecs/rans4x16.ts +0 -521
- package/src/htscodecs/tok3.ts +0 -197
- package/src/rans/README.md +0 -1
- package/src/rans/constants.ts +0 -5
- package/src/rans/d04.ts +0 -112
- package/src/rans/d14.ts +0 -106
- package/src/rans/decoding.ts +0 -138
- package/src/rans/frequencies.ts +0 -115
- package/src/rans/index.ts +0 -245
- package/src/seek-bzip/README.md +0 -6
- package/src/seek-bzip/bitreader.ts +0 -113
- package/src/seek-bzip/crc32.ts +0 -121
- package/src/seek-bzip/index.ts +0 -615
- package/src/seek-bzip/stream.ts +0 -33
- package/src/seek-bzip/toHex.ts +0 -33
package/src/rans/d04.ts
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import { CramMalformedError } from '../errors.ts'
|
|
3
|
-
import { TF_SHIFT } from './constants.ts'
|
|
4
|
-
import Decoding from './decoding.ts'
|
|
5
|
-
|
|
6
|
-
// Inline constants for performance
|
|
7
|
-
const RANS_BYTE_L = 8388608 // 1 << 23
|
|
8
|
-
const MASK = 4095 // (1 << 12) - 1
|
|
9
|
-
|
|
10
|
-
export default function uncompress(
|
|
11
|
-
/* ByteBuffer */ input,
|
|
12
|
-
/* Decoding.AriDecoder */ D,
|
|
13
|
-
/* Decoding.Symbol[] */ syms,
|
|
14
|
-
/* ByteBuffer */ out,
|
|
15
|
-
) {
|
|
16
|
-
let rans0 = input.getInt()
|
|
17
|
-
let rans1 = input.getInt()
|
|
18
|
-
let rans2 = input.getInt()
|
|
19
|
-
let rans3 = input.getInt()
|
|
20
|
-
|
|
21
|
-
const /* int */ outputSize = out.remaining()
|
|
22
|
-
const /* int */ outputEnd = outputSize & ~3
|
|
23
|
-
const D_R = D.R
|
|
24
|
-
|
|
25
|
-
for (let i = 0; i < outputEnd; i += 4) {
|
|
26
|
-
const /* byte */ c0 = D_R[rans0 & MASK]
|
|
27
|
-
const /* byte */ c1 = D_R[rans1 & MASK]
|
|
28
|
-
const /* byte */ c2 = D_R[rans2 & MASK]
|
|
29
|
-
const /* byte */ c3 = D_R[rans3 & MASK]
|
|
30
|
-
|
|
31
|
-
// Inline putAt to avoid function call overhead
|
|
32
|
-
out._buffer[i] = c0
|
|
33
|
-
out._buffer[i + 1] = c1
|
|
34
|
-
out._buffer[i + 2] = c2
|
|
35
|
-
out._buffer[i + 3] = c3
|
|
36
|
-
|
|
37
|
-
const sym0 = syms[0xff & c0]
|
|
38
|
-
const sym1 = syms[0xff & c1]
|
|
39
|
-
const sym2 = syms[0xff & c2]
|
|
40
|
-
const sym3 = syms[0xff & c3]
|
|
41
|
-
|
|
42
|
-
rans0 = sym0.freq * (rans0 >> TF_SHIFT) + (rans0 & MASK) - sym0.start
|
|
43
|
-
rans1 = sym1.freq * (rans1 >> TF_SHIFT) + (rans1 & MASK) - sym1.start
|
|
44
|
-
rans2 = sym2.freq * (rans2 >> TF_SHIFT) + (rans2 & MASK) - sym2.start
|
|
45
|
-
rans3 = sym3.freq * (rans3 >> TF_SHIFT) + (rans3 & MASK) - sym3.start
|
|
46
|
-
|
|
47
|
-
// Inline renormalize to avoid function call overhead
|
|
48
|
-
if (rans0 < RANS_BYTE_L) {
|
|
49
|
-
do {
|
|
50
|
-
rans0 = (rans0 << 8) | (0xff & input.get())
|
|
51
|
-
} while (rans0 < RANS_BYTE_L)
|
|
52
|
-
}
|
|
53
|
-
if (rans1 < RANS_BYTE_L) {
|
|
54
|
-
do {
|
|
55
|
-
rans1 = (rans1 << 8) | (0xff & input.get())
|
|
56
|
-
} while (rans1 < RANS_BYTE_L)
|
|
57
|
-
}
|
|
58
|
-
if (rans2 < RANS_BYTE_L) {
|
|
59
|
-
do {
|
|
60
|
-
rans2 = (rans2 << 8) | (0xff & input.get())
|
|
61
|
-
} while (rans2 < RANS_BYTE_L)
|
|
62
|
-
}
|
|
63
|
-
if (rans3 < RANS_BYTE_L) {
|
|
64
|
-
do {
|
|
65
|
-
rans3 = (rans3 << 8) | (0xff & input.get())
|
|
66
|
-
} while (rans3 < RANS_BYTE_L)
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
out.setPosition(outputEnd)
|
|
71
|
-
let /* byte */ c: number
|
|
72
|
-
switch (outputSize & 3) {
|
|
73
|
-
case 0:
|
|
74
|
-
break
|
|
75
|
-
case 1:
|
|
76
|
-
c = D.R[Decoding.get(rans0, TF_SHIFT)]
|
|
77
|
-
Decoding.advanceSymbol(rans0, input, syms[0xff & c], TF_SHIFT)
|
|
78
|
-
out.put(c)
|
|
79
|
-
break
|
|
80
|
-
|
|
81
|
-
case 2:
|
|
82
|
-
c = D.R[Decoding.get(rans0, TF_SHIFT)]
|
|
83
|
-
Decoding.advanceSymbol(rans0, input, syms[0xff & c], TF_SHIFT)
|
|
84
|
-
out.put(c)
|
|
85
|
-
|
|
86
|
-
c = D.R[Decoding.get(rans1, TF_SHIFT)]
|
|
87
|
-
Decoding.advanceSymbol(rans1, input, syms[0xff & c], TF_SHIFT)
|
|
88
|
-
out.put(c)
|
|
89
|
-
break
|
|
90
|
-
|
|
91
|
-
case 3:
|
|
92
|
-
c = D.R[Decoding.get(rans0, TF_SHIFT)]
|
|
93
|
-
Decoding.advanceSymbol(rans0, input, syms[0xff & c], TF_SHIFT)
|
|
94
|
-
out.put(c)
|
|
95
|
-
|
|
96
|
-
c = D.R[Decoding.get(rans1, TF_SHIFT)]
|
|
97
|
-
Decoding.advanceSymbol(rans1, input, syms[0xff & c], TF_SHIFT)
|
|
98
|
-
out.put(c)
|
|
99
|
-
|
|
100
|
-
c = D.R[Decoding.get(rans2, TF_SHIFT)]
|
|
101
|
-
Decoding.advanceSymbol(rans2, input, syms[0xff & c], TF_SHIFT)
|
|
102
|
-
out.put(c)
|
|
103
|
-
break
|
|
104
|
-
|
|
105
|
-
default:
|
|
106
|
-
throw new CramMalformedError(
|
|
107
|
-
'invalid output size encountered during rANS decoding',
|
|
108
|
-
)
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
out.setPosition(0)
|
|
112
|
-
}
|
package/src/rans/d14.ts
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import { TF_SHIFT } from './constants.ts'
|
|
3
|
-
|
|
4
|
-
// Inline constants for performance
|
|
5
|
-
const RANS_BYTE_L = 8388608 // 1 << 23
|
|
6
|
-
const MASK = 4095 // (1 << 12) - 1
|
|
7
|
-
|
|
8
|
-
export default function uncompress(
|
|
9
|
-
/* ByteBuffer */ input,
|
|
10
|
-
/* ByteBuffer */ output,
|
|
11
|
-
/* Decoding.AriDecoder[] */ D,
|
|
12
|
-
/* Decoding.Symbol[][] */ syms,
|
|
13
|
-
) {
|
|
14
|
-
const /* int */ outputSize = output.remaining()
|
|
15
|
-
let rans0 = input.getInt()
|
|
16
|
-
let rans1 = input.getInt()
|
|
17
|
-
let rans2 = input.getInt()
|
|
18
|
-
let rans7 = input.getInt()
|
|
19
|
-
|
|
20
|
-
const /* int */ isz4 = outputSize >> 2
|
|
21
|
-
let /* int */ i0 = 0
|
|
22
|
-
let /* int */ i1 = isz4
|
|
23
|
-
let /* int */ i2 = 2 * isz4
|
|
24
|
-
let /* int */ i7 = 3 * isz4
|
|
25
|
-
let /* int */ l0 = 0
|
|
26
|
-
let /* int */ l1 = 0
|
|
27
|
-
let /* int */ l2 = 0
|
|
28
|
-
let /* int */ l7 = 0
|
|
29
|
-
|
|
30
|
-
for (; i0 < isz4; i0 += 1, i1 += 1, i2 += 1, i7 += 1) {
|
|
31
|
-
const D_l0_R = D[l0].R
|
|
32
|
-
const D_l1_R = D[l1].R
|
|
33
|
-
const D_l2_R = D[l2].R
|
|
34
|
-
const D_l7_R = D[l7].R
|
|
35
|
-
|
|
36
|
-
const /* int */ c0 = 0xff & D_l0_R[rans0 & MASK]
|
|
37
|
-
const /* int */ c1 = 0xff & D_l1_R[rans1 & MASK]
|
|
38
|
-
const /* int */ c2 = 0xff & D_l2_R[rans2 & MASK]
|
|
39
|
-
const /* int */ c7 = 0xff & D_l7_R[rans7 & MASK]
|
|
40
|
-
|
|
41
|
-
// Inline putAt to avoid function call overhead
|
|
42
|
-
output._buffer[i0] = c0
|
|
43
|
-
output._buffer[i1] = c1
|
|
44
|
-
output._buffer[i2] = c2
|
|
45
|
-
output._buffer[i7] = c7
|
|
46
|
-
|
|
47
|
-
const sym_l0_c0 = syms[l0][c0]
|
|
48
|
-
const sym_l1_c1 = syms[l1][c1]
|
|
49
|
-
const sym_l2_c2 = syms[l2][c2]
|
|
50
|
-
const sym_l7_c7 = syms[l7][c7]
|
|
51
|
-
|
|
52
|
-
rans0 =
|
|
53
|
-
sym_l0_c0.freq * (rans0 >> TF_SHIFT) + (rans0 & MASK) - sym_l0_c0.start
|
|
54
|
-
rans1 =
|
|
55
|
-
sym_l1_c1.freq * (rans1 >> TF_SHIFT) + (rans1 & MASK) - sym_l1_c1.start
|
|
56
|
-
rans2 =
|
|
57
|
-
sym_l2_c2.freq * (rans2 >> TF_SHIFT) + (rans2 & MASK) - sym_l2_c2.start
|
|
58
|
-
rans7 =
|
|
59
|
-
sym_l7_c7.freq * (rans7 >> TF_SHIFT) + (rans7 & MASK) - sym_l7_c7.start
|
|
60
|
-
|
|
61
|
-
// Inline renormalize to avoid function call overhead
|
|
62
|
-
if (rans0 < RANS_BYTE_L) {
|
|
63
|
-
do {
|
|
64
|
-
rans0 = (rans0 << 8) | (0xff & input.get())
|
|
65
|
-
} while (rans0 < RANS_BYTE_L)
|
|
66
|
-
}
|
|
67
|
-
if (rans1 < RANS_BYTE_L) {
|
|
68
|
-
do {
|
|
69
|
-
rans1 = (rans1 << 8) | (0xff & input.get())
|
|
70
|
-
} while (rans1 < RANS_BYTE_L)
|
|
71
|
-
}
|
|
72
|
-
if (rans2 < RANS_BYTE_L) {
|
|
73
|
-
do {
|
|
74
|
-
rans2 = (rans2 << 8) | (0xff & input.get())
|
|
75
|
-
} while (rans2 < RANS_BYTE_L)
|
|
76
|
-
}
|
|
77
|
-
if (rans7 < RANS_BYTE_L) {
|
|
78
|
-
do {
|
|
79
|
-
rans7 = (rans7 << 8) | (0xff & input.get())
|
|
80
|
-
} while (rans7 < RANS_BYTE_L)
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
l0 = c0
|
|
84
|
-
l1 = c1
|
|
85
|
-
l2 = c2
|
|
86
|
-
l7 = c7
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// Remainder
|
|
90
|
-
for (; i7 < outputSize; i7 += 1) {
|
|
91
|
-
const /* int */ c7 = 0xff & D[l7].R[rans7 & MASK]
|
|
92
|
-
// Inline putAt to avoid function call overhead
|
|
93
|
-
output._buffer[i7] = c7
|
|
94
|
-
|
|
95
|
-
// Inline advanceSymbol to avoid function call overhead
|
|
96
|
-
const sym = syms[l7][c7]
|
|
97
|
-
rans7 = sym.freq * (rans7 >> TF_SHIFT) + (rans7 & MASK) - sym.start
|
|
98
|
-
if (rans7 < RANS_BYTE_L) {
|
|
99
|
-
do {
|
|
100
|
-
rans7 = (rans7 << 8) | (0xff & input.get())
|
|
101
|
-
} while (rans7 < RANS_BYTE_L)
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
l7 = c7
|
|
105
|
-
}
|
|
106
|
-
}
|
package/src/rans/decoding.ts
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import { CramMalformedError } from '../errors.ts'
|
|
3
|
-
import { RANS_BYTE_L } from './constants.ts'
|
|
4
|
-
|
|
5
|
-
class FC {
|
|
6
|
-
// int F, C;
|
|
7
|
-
constructor() {
|
|
8
|
-
this.F = undefined
|
|
9
|
-
this.C = undefined
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
class AriDecoder {
|
|
14
|
-
// final FC[] fc = new FC[256];
|
|
15
|
-
// byte[] R;
|
|
16
|
-
|
|
17
|
-
constructor() {
|
|
18
|
-
// Use two parallel arrays instead of array of objects for better cache efficiency
|
|
19
|
-
this.fcF = new Array(256)
|
|
20
|
-
this.fcC = new Array(256)
|
|
21
|
-
this.R = null
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
class DecodingSymbol {
|
|
26
|
-
// int start; // Start of range.
|
|
27
|
-
// int freq; // Symbol frequency.
|
|
28
|
-
constructor() {
|
|
29
|
-
this.start = undefined
|
|
30
|
-
this.freq = undefined
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Initialize a decoder symbol to start "start" and frequency "freq"
|
|
35
|
-
function symbolInit(sym, start, freq) {
|
|
36
|
-
if (!(start <= 1 << 16)) {
|
|
37
|
-
throw new CramMalformedError('assertion failed: start <= 1<<16')
|
|
38
|
-
}
|
|
39
|
-
if (!(freq <= (1 << 16) - start)) {
|
|
40
|
-
throw new CramMalformedError('assertion failed: freq <= 1<<16')
|
|
41
|
-
}
|
|
42
|
-
sym.start = start
|
|
43
|
-
sym.freq = freq
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Advances in the bit stream by "popping" a single symbol with range start
|
|
47
|
-
// "start" and frequency "freq". All frequencies are assumed to sum to
|
|
48
|
-
// "1 << scaleBits".
|
|
49
|
-
// No renormalization or output happens.
|
|
50
|
-
/* private static int */ function advanceStep(
|
|
51
|
-
/* final int */ r,
|
|
52
|
-
/* final int */ start,
|
|
53
|
-
/* final int */ freq,
|
|
54
|
-
/* final int */ scaleBits,
|
|
55
|
-
) {
|
|
56
|
-
/* final int */ const mask = (1 << scaleBits) - 1
|
|
57
|
-
|
|
58
|
-
// s, x = D(x)
|
|
59
|
-
return freq * (r >> scaleBits) + (r & mask) - start
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// Equivalent to RansDecAdvanceStep that takes a symbol.
|
|
63
|
-
/* static int */ function advanceSymbolStep(
|
|
64
|
-
/* final int */ r,
|
|
65
|
-
/* final RansDecSymbol */ sym,
|
|
66
|
-
/* final int */ scaleBits,
|
|
67
|
-
) {
|
|
68
|
-
return advanceStep(r, sym.start, sym.freq, scaleBits)
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Returns the current cumulative frequency (map it to a symbol yourself!)
|
|
72
|
-
/* static int */ function get(/* final int */ r, /* final int */ scaleBits) {
|
|
73
|
-
return r & ((1 << scaleBits) - 1)
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// Advances in the bit stream by "popping" a single symbol with range start
|
|
77
|
-
// "start" and frequency "freq". All frequencies are assumed to sum to
|
|
78
|
-
// "1 << scaleBits",
|
|
79
|
-
// and the resulting bytes get written to ptr (which is updated).
|
|
80
|
-
/* private static int */ function advance(
|
|
81
|
-
/* int */ r,
|
|
82
|
-
/* final ByteBuffer */ pptr,
|
|
83
|
-
/* final int */ start,
|
|
84
|
-
/* final int */ freq,
|
|
85
|
-
/* final int */ scaleBits,
|
|
86
|
-
) {
|
|
87
|
-
/* final int */ const mask = (1 << scaleBits) - 1
|
|
88
|
-
|
|
89
|
-
// s, x = D(x)
|
|
90
|
-
r = freq * (r >> scaleBits) + (r & mask) - start
|
|
91
|
-
|
|
92
|
-
// re-normalize
|
|
93
|
-
if (r < RANS_BYTE_L) {
|
|
94
|
-
do {
|
|
95
|
-
/* final int */ const b = 0xff & pptr.get()
|
|
96
|
-
r = (r << 8) | b
|
|
97
|
-
} while (r < RANS_BYTE_L)
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return r
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Equivalent to RansDecAdvance that takes a symbol.
|
|
104
|
-
/* static int */ function advanceSymbol(
|
|
105
|
-
/* final int */ r,
|
|
106
|
-
/* final ByteBuffer */ pptr,
|
|
107
|
-
/* final RansDecSymbol */ sym,
|
|
108
|
-
/* final int */ scaleBits,
|
|
109
|
-
) {
|
|
110
|
-
return advance(r, pptr, sym.start, sym.freq, scaleBits)
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
// Re-normalize.
|
|
114
|
-
/* static int */ function renormalize(
|
|
115
|
-
/* int */ r,
|
|
116
|
-
/* final ByteBuffer */ pptr,
|
|
117
|
-
) {
|
|
118
|
-
// re-normalize
|
|
119
|
-
if (r < RANS_BYTE_L) {
|
|
120
|
-
do {
|
|
121
|
-
r = (r << 8) | (0xff & pptr.get())
|
|
122
|
-
} while (r < RANS_BYTE_L)
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
return r
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
export default {
|
|
129
|
-
FC,
|
|
130
|
-
AriDecoder,
|
|
131
|
-
DecodingSymbol,
|
|
132
|
-
symbolInit,
|
|
133
|
-
advanceStep,
|
|
134
|
-
advanceSymbolStep,
|
|
135
|
-
get,
|
|
136
|
-
advanceSymbol,
|
|
137
|
-
renormalize,
|
|
138
|
-
}
|
package/src/rans/frequencies.ts
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import { CramMalformedError } from '../errors.ts'
|
|
3
|
-
import { TOTFREQ } from './constants.ts'
|
|
4
|
-
import Decoding from './decoding.ts'
|
|
5
|
-
|
|
6
|
-
function assert(result) {
|
|
7
|
-
if (!result) {
|
|
8
|
-
throw new CramMalformedError('assertion failed')
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export function readStatsO0(
|
|
13
|
-
/* ByteBuffer */ cp,
|
|
14
|
-
/* Decoding.AriDecoder */ decoder,
|
|
15
|
-
/* Decoding.RansDecSymbol[] */ syms,
|
|
16
|
-
) {
|
|
17
|
-
// Pre-compute reverse lookup of frequency.
|
|
18
|
-
let rle = 0
|
|
19
|
-
let x = 0
|
|
20
|
-
let j = cp.get() & 0xff
|
|
21
|
-
do {
|
|
22
|
-
decoder.fcF[j] = cp.get() & 0xff
|
|
23
|
-
if (decoder.fcF[j] >= 128) {
|
|
24
|
-
decoder.fcF[j] &= ~128
|
|
25
|
-
decoder.fcF[j] = ((decoder.fcF[j] & 127) << 8) | (cp.get() & 0xff)
|
|
26
|
-
}
|
|
27
|
-
decoder.fcC[j] = x
|
|
28
|
-
|
|
29
|
-
Decoding.symbolInit(syms[j], decoder.fcC[j], decoder.fcF[j])
|
|
30
|
-
|
|
31
|
-
/* Build reverse lookup table */
|
|
32
|
-
if (!decoder.R) {
|
|
33
|
-
decoder.R = new Array(TOTFREQ)
|
|
34
|
-
}
|
|
35
|
-
decoder.R.fill(j, x, x + decoder.fcF[j])
|
|
36
|
-
|
|
37
|
-
x += decoder.fcF[j]
|
|
38
|
-
|
|
39
|
-
if (rle === 0 && j + 1 === (0xff & cp.getByteAt(cp.position()))) {
|
|
40
|
-
j = cp.get() & 0xff
|
|
41
|
-
rle = cp.get() & 0xff
|
|
42
|
-
} else if (rle !== 0) {
|
|
43
|
-
rle -= 1
|
|
44
|
-
j += 1
|
|
45
|
-
} else {
|
|
46
|
-
j = cp.get() & 0xff
|
|
47
|
-
}
|
|
48
|
-
} while (j !== 0)
|
|
49
|
-
|
|
50
|
-
assert(x < TOTFREQ)
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export function readStatsO1(
|
|
54
|
-
/* ByteBuffer */ cp,
|
|
55
|
-
/* Decoding.AriDecoder[] */ D,
|
|
56
|
-
/* Decoding.RansDecSymbol[][] */ syms,
|
|
57
|
-
) {
|
|
58
|
-
let rlei = 0
|
|
59
|
-
let i = 0xff & cp.get()
|
|
60
|
-
do {
|
|
61
|
-
let rlej = 0
|
|
62
|
-
let x = 0
|
|
63
|
-
let j = 0xff & cp.get()
|
|
64
|
-
if (D[i] == null) {
|
|
65
|
-
D[i] = new Decoding.AriDecoder()
|
|
66
|
-
}
|
|
67
|
-
do {
|
|
68
|
-
D[i].fcF[j] = 0xff & cp.get()
|
|
69
|
-
if (D[i].fcF[j] >= 128) {
|
|
70
|
-
D[i].fcF[j] &= ~128
|
|
71
|
-
D[i].fcF[j] = ((D[i].fcF[j] & 127) << 8) | (0xff & cp.get())
|
|
72
|
-
}
|
|
73
|
-
D[i].fcC[j] = x
|
|
74
|
-
|
|
75
|
-
if (D[i].fcF[j] === 0) {
|
|
76
|
-
D[i].fcF[j] = TOTFREQ
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if (syms[i][j] == null) {
|
|
80
|
-
syms[i][j] = new Decoding.RansDecSymbol()
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
Decoding.symbolInit(syms[i][j], D[i].fcC[j], D[i].fcF[j])
|
|
84
|
-
|
|
85
|
-
/* Build reverse lookup table */
|
|
86
|
-
if (D[i].R == null) {
|
|
87
|
-
D[i].R = new Array(TOTFREQ)
|
|
88
|
-
}
|
|
89
|
-
D[i].R.fill(j, x, x + D[i].fcF[j])
|
|
90
|
-
|
|
91
|
-
x += D[i].fcF[j]
|
|
92
|
-
assert(x <= TOTFREQ)
|
|
93
|
-
|
|
94
|
-
if (rlej === 0 && j + 1 === (0xff & cp.getByteAt(cp.position()))) {
|
|
95
|
-
j = 0xff & cp.get()
|
|
96
|
-
rlej = 0xff & cp.get()
|
|
97
|
-
} else if (rlej !== 0) {
|
|
98
|
-
rlej -= 1
|
|
99
|
-
j += 1
|
|
100
|
-
} else {
|
|
101
|
-
j = 0xff & cp.get()
|
|
102
|
-
}
|
|
103
|
-
} while (j !== 0)
|
|
104
|
-
|
|
105
|
-
if (rlei === 0 && i + 1 === (0xff & cp.getByteAt(cp.position()))) {
|
|
106
|
-
i = 0xff & cp.get()
|
|
107
|
-
rlei = 0xff & cp.get()
|
|
108
|
-
} else if (rlei !== 0) {
|
|
109
|
-
rlei -= 1
|
|
110
|
-
i += 1
|
|
111
|
-
} else {
|
|
112
|
-
i = 0xff & cp.get()
|
|
113
|
-
}
|
|
114
|
-
} while (i !== 0)
|
|
115
|
-
}
|