@gmod/cram 3.0.7 → 4.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.
Files changed (268) hide show
  1. package/dist/craiIndex.js +70 -87
  2. package/dist/craiIndex.js.map +1 -1
  3. package/dist/cram-bundle.js +1 -1
  4. package/dist/cramFile/codecs/_base.d.ts +1 -1
  5. package/dist/cramFile/codecs/beta.d.ts +2 -2
  6. package/dist/cramFile/codecs/beta.js +1 -1
  7. package/dist/cramFile/codecs/beta.js.map +1 -1
  8. package/dist/cramFile/codecs/byteArrayLength.d.ts +2 -2
  9. package/dist/cramFile/codecs/byteArrayStop.d.ts +4 -4
  10. package/dist/cramFile/codecs/byteArrayStop.js +1 -1
  11. package/dist/cramFile/codecs/byteArrayStop.js.map +1 -1
  12. package/dist/cramFile/codecs/external.d.ts +1 -1
  13. package/dist/cramFile/codecs/external.js +1 -1
  14. package/dist/cramFile/codecs/external.js.map +1 -1
  15. package/dist/cramFile/codecs/gamma.d.ts +1 -1
  16. package/dist/cramFile/codecs/gamma.js +1 -1
  17. package/dist/cramFile/codecs/gamma.js.map +1 -1
  18. package/dist/cramFile/codecs/getBits.d.ts +1 -1
  19. package/dist/cramFile/codecs/getBits.js.map +1 -1
  20. package/dist/cramFile/codecs/huffman.d.ts +1 -1
  21. package/dist/cramFile/codecs/huffman.js +1 -1
  22. package/dist/cramFile/codecs/huffman.js.map +1 -1
  23. package/dist/cramFile/codecs/index.d.ts +1 -1
  24. package/dist/cramFile/codecs/index.js +5 -5
  25. package/dist/cramFile/codecs/index.js.map +1 -1
  26. package/dist/cramFile/codecs/subexp.d.ts +2 -2
  27. package/dist/cramFile/codecs/subexp.js +1 -1
  28. package/dist/cramFile/codecs/subexp.js.map +1 -1
  29. package/dist/cramFile/container/compressionScheme.d.ts +2 -2
  30. package/dist/cramFile/container/compressionScheme.js +1 -1
  31. package/dist/cramFile/container/compressionScheme.js.map +1 -1
  32. package/dist/cramFile/container/index.d.ts +1 -2
  33. package/dist/cramFile/container/index.js +62 -79
  34. package/dist/cramFile/container/index.js.map +1 -1
  35. package/dist/cramFile/file.d.ts +9 -13
  36. package/dist/cramFile/file.js +218 -247
  37. package/dist/cramFile/file.js.map +1 -1
  38. package/dist/cramFile/record.js +2 -2
  39. package/dist/cramFile/record.js.map +1 -1
  40. package/dist/cramFile/sectionParsers.d.ts +16 -16
  41. package/dist/cramFile/sectionParsers.js +12 -9
  42. package/dist/cramFile/sectionParsers.js.map +1 -1
  43. package/dist/cramFile/slice/decodeRecord.d.ts +3 -3
  44. package/dist/cramFile/slice/decodeRecord.js +11 -11
  45. package/dist/cramFile/slice/decodeRecord.js.map +1 -1
  46. package/dist/cramFile/slice/index.d.ts +2 -2
  47. package/dist/cramFile/slice/index.js +241 -262
  48. package/dist/cramFile/slice/index.js.map +1 -1
  49. package/dist/cramFile/util.d.ts +4 -2
  50. package/dist/cramFile/util.js +29 -6
  51. package/dist/cramFile/util.js.map +1 -1
  52. package/dist/htscodecs/arith_gen.d.ts +9 -17
  53. package/dist/htscodecs/arith_gen.js +32 -272
  54. package/dist/htscodecs/arith_gen.js.map +1 -1
  55. package/dist/htscodecs/fqzcomp.d.ts +1 -2
  56. package/dist/htscodecs/fqzcomp.js +2 -421
  57. package/dist/htscodecs/fqzcomp.js.map +1 -1
  58. package/dist/htscodecs/index.d.ts +5 -5
  59. package/dist/htscodecs/index.js +10 -10
  60. package/dist/htscodecs/index.js.map +1 -1
  61. package/dist/htscodecs/iostream.d.ts +2 -1
  62. package/dist/htscodecs/iostream.js +3 -2
  63. package/dist/htscodecs/iostream.js.map +1 -1
  64. package/dist/htscodecs/rans.d.ts +1 -2
  65. package/dist/htscodecs/rans.js +3 -270
  66. package/dist/htscodecs/rans.js.map +1 -1
  67. package/dist/htscodecs/rans4x16.d.ts +0 -1
  68. package/dist/htscodecs/rans4x16.js +6 -497
  69. package/dist/htscodecs/rans4x16.js.map +1 -1
  70. package/dist/htscodecs/tok3.js +17 -1
  71. package/dist/htscodecs/tok3.js.map +1 -1
  72. package/dist/index.d.ts +1 -1
  73. package/dist/index.js +2 -2
  74. package/dist/index.js.map +1 -1
  75. package/dist/indexedCramFile.d.ts +4 -4
  76. package/dist/indexedCramFile.js +97 -108
  77. package/dist/indexedCramFile.js.map +1 -1
  78. package/dist/io/index.d.ts +2 -2
  79. package/dist/io/index.js +6 -6
  80. package/dist/io/index.js.map +1 -1
  81. package/dist/rans/constants.d.ts +1 -1
  82. package/dist/rans/constants.js +1 -1
  83. package/dist/rans/constants.js.map +1 -1
  84. package/dist/rans/d04.js.map +1 -1
  85. package/dist/rans/decoding.js.map +1 -1
  86. package/dist/rans/frequencies.js.map +1 -1
  87. package/dist/rans/index.js +5 -5
  88. package/dist/rans/index.js.map +1 -1
  89. package/dist/unzip.d.ts +1 -1
  90. package/dist/unzip.js +5 -3
  91. package/dist/unzip.js.map +1 -1
  92. package/esm/craiIndex.js +10 -12
  93. package/esm/craiIndex.js.map +1 -1
  94. package/esm/cramFile/codecs/_base.d.ts +1 -1
  95. package/esm/cramFile/codecs/beta.d.ts +2 -2
  96. package/esm/cramFile/codecs/beta.js +1 -1
  97. package/esm/cramFile/codecs/beta.js.map +1 -1
  98. package/esm/cramFile/codecs/byteArrayLength.d.ts +2 -2
  99. package/esm/cramFile/codecs/byteArrayStop.d.ts +4 -4
  100. package/esm/cramFile/codecs/byteArrayStop.js +1 -1
  101. package/esm/cramFile/codecs/byteArrayStop.js.map +1 -1
  102. package/esm/cramFile/codecs/external.d.ts +1 -1
  103. package/esm/cramFile/codecs/external.js +1 -1
  104. package/esm/cramFile/codecs/external.js.map +1 -1
  105. package/esm/cramFile/codecs/gamma.d.ts +1 -1
  106. package/esm/cramFile/codecs/gamma.js +1 -1
  107. package/esm/cramFile/codecs/gamma.js.map +1 -1
  108. package/esm/cramFile/codecs/getBits.d.ts +1 -1
  109. package/esm/cramFile/codecs/getBits.js.map +1 -1
  110. package/esm/cramFile/codecs/huffman.d.ts +1 -1
  111. package/esm/cramFile/codecs/huffman.js +1 -1
  112. package/esm/cramFile/codecs/huffman.js.map +1 -1
  113. package/esm/cramFile/codecs/index.d.ts +1 -1
  114. package/esm/cramFile/codecs/index.js +5 -5
  115. package/esm/cramFile/codecs/index.js.map +1 -1
  116. package/esm/cramFile/codecs/subexp.d.ts +2 -2
  117. package/esm/cramFile/codecs/subexp.js +1 -1
  118. package/esm/cramFile/codecs/subexp.js.map +1 -1
  119. package/esm/cramFile/container/compressionScheme.d.ts +2 -2
  120. package/esm/cramFile/container/compressionScheme.js +1 -1
  121. package/esm/cramFile/container/compressionScheme.js.map +1 -1
  122. package/esm/cramFile/container/index.d.ts +1 -2
  123. package/esm/cramFile/container/index.js +4 -7
  124. package/esm/cramFile/container/index.js.map +1 -1
  125. package/esm/cramFile/file.d.ts +9 -13
  126. package/esm/cramFile/file.js +47 -52
  127. package/esm/cramFile/file.js.map +1 -1
  128. package/esm/cramFile/record.js +2 -2
  129. package/esm/cramFile/record.js.map +1 -1
  130. package/esm/cramFile/sectionParsers.d.ts +16 -16
  131. package/esm/cramFile/sectionParsers.js +7 -7
  132. package/esm/cramFile/sectionParsers.js.map +1 -1
  133. package/esm/cramFile/slice/decodeRecord.d.ts +3 -3
  134. package/esm/cramFile/slice/decodeRecord.js +11 -11
  135. package/esm/cramFile/slice/decodeRecord.js.map +1 -1
  136. package/esm/cramFile/slice/index.d.ts +2 -2
  137. package/esm/cramFile/slice/index.js +7 -6
  138. package/esm/cramFile/slice/index.js.map +1 -1
  139. package/esm/cramFile/util.d.ts +4 -2
  140. package/esm/cramFile/util.js +19 -2
  141. package/esm/cramFile/util.js.map +1 -1
  142. package/esm/htscodecs/arith_gen.d.ts +9 -17
  143. package/esm/htscodecs/arith_gen.js +32 -272
  144. package/esm/htscodecs/arith_gen.js.map +1 -1
  145. package/esm/htscodecs/fqzcomp.d.ts +1 -2
  146. package/esm/htscodecs/fqzcomp.js +2 -421
  147. package/esm/htscodecs/fqzcomp.js.map +1 -1
  148. package/esm/htscodecs/index.d.ts +5 -5
  149. package/esm/htscodecs/index.js +10 -10
  150. package/esm/htscodecs/index.js.map +1 -1
  151. package/esm/htscodecs/iostream.d.ts +2 -1
  152. package/esm/htscodecs/iostream.js +3 -2
  153. package/esm/htscodecs/iostream.js.map +1 -1
  154. package/esm/htscodecs/rans.d.ts +1 -2
  155. package/esm/htscodecs/rans.js +3 -270
  156. package/esm/htscodecs/rans.js.map +1 -1
  157. package/esm/htscodecs/rans4x16.d.ts +0 -1
  158. package/esm/htscodecs/rans4x16.js +6 -497
  159. package/esm/htscodecs/rans4x16.js.map +1 -1
  160. package/esm/htscodecs/tok3.js +17 -1
  161. package/esm/htscodecs/tok3.js.map +1 -1
  162. package/esm/index.d.ts +1 -1
  163. package/esm/index.js +1 -1
  164. package/esm/index.js.map +1 -1
  165. package/esm/indexedCramFile.d.ts +4 -4
  166. package/esm/indexedCramFile.js +10 -10
  167. package/esm/indexedCramFile.js.map +1 -1
  168. package/esm/io/index.d.ts +2 -2
  169. package/esm/io/index.js +1 -1
  170. package/esm/io/index.js.map +1 -1
  171. package/esm/rans/constants.d.ts +1 -1
  172. package/esm/rans/constants.js +1 -1
  173. package/esm/rans/constants.js.map +1 -1
  174. package/esm/rans/d04.js.map +1 -1
  175. package/esm/rans/decoding.js.map +1 -1
  176. package/esm/rans/frequencies.js.map +1 -1
  177. package/esm/rans/index.js +5 -5
  178. package/esm/rans/index.js.map +1 -1
  179. package/esm/unzip.d.ts +1 -1
  180. package/esm/unzip.js +4 -1
  181. package/esm/unzip.js.map +1 -1
  182. package/package.json +7 -9
  183. package/src/craiIndex.ts +17 -16
  184. package/src/cramFile/codecs/_base.ts +1 -1
  185. package/src/cramFile/codecs/beta.ts +3 -3
  186. package/src/cramFile/codecs/byteArrayLength.ts +1 -1
  187. package/src/cramFile/codecs/byteArrayStop.ts +3 -4
  188. package/src/cramFile/codecs/external.ts +3 -3
  189. package/src/cramFile/codecs/gamma.ts +2 -2
  190. package/src/cramFile/codecs/getBits.ts +1 -1
  191. package/src/cramFile/codecs/huffman.ts +2 -3
  192. package/src/cramFile/codecs/index.ts +7 -8
  193. package/src/cramFile/codecs/subexp.ts +3 -3
  194. package/src/cramFile/container/compressionScheme.ts +3 -3
  195. package/src/cramFile/container/index.ts +7 -10
  196. package/src/cramFile/file.ts +71 -77
  197. package/src/cramFile/record.ts +3 -3
  198. package/src/cramFile/sectionParsers.ts +27 -22
  199. package/src/cramFile/slice/decodeRecord.ts +17 -17
  200. package/src/cramFile/slice/index.ts +8 -9
  201. package/src/cramFile/util.ts +24 -5
  202. package/src/htscodecs/arith_gen.js +33 -296
  203. package/src/htscodecs/fqzcomp.js +2 -476
  204. package/src/htscodecs/index.js +9 -11
  205. package/src/htscodecs/iostream.js +3 -2
  206. package/src/htscodecs/rans.js +3 -315
  207. package/src/htscodecs/rans4x16.js +6 -557
  208. package/src/htscodecs/tok3.js +18 -1
  209. package/src/index.ts +1 -1
  210. package/src/indexedCramFile.ts +6 -5
  211. package/src/io/index.ts +5 -4
  212. package/src/rans/constants.ts +1 -1
  213. package/src/rans/d04.ts +0 -1
  214. package/src/rans/decoding.ts +0 -1
  215. package/src/rans/frequencies.ts +0 -1
  216. package/src/rans/index.ts +5 -7
  217. package/src/unzip.ts +5 -1
  218. package/dist/cramFile/filehandle.d.ts +0 -1
  219. package/dist/cramFile/filehandle.js +0 -3
  220. package/dist/cramFile/filehandle.js.map +0 -1
  221. package/dist/htscodecs/main_arith_gen.d.ts +0 -1
  222. package/dist/htscodecs/main_arith_gen.js +0 -86
  223. package/dist/htscodecs/main_arith_gen.js.map +0 -1
  224. package/dist/htscodecs/main_fqzcomp.d.ts +0 -1
  225. package/dist/htscodecs/main_fqzcomp.js +0 -112
  226. package/dist/htscodecs/main_fqzcomp.js.map +0 -1
  227. package/dist/htscodecs/main_rans.d.ts +0 -1
  228. package/dist/htscodecs/main_rans.js +0 -83
  229. package/dist/htscodecs/main_rans.js.map +0 -1
  230. package/dist/htscodecs/main_rans4x16.d.ts +0 -1
  231. package/dist/htscodecs/main_rans4x16.js +0 -82
  232. package/dist/htscodecs/main_rans4x16.js.map +0 -1
  233. package/dist/htscodecs/main_tok3.d.ts +0 -1
  234. package/dist/htscodecs/main_tok3.js +0 -84
  235. package/dist/htscodecs/main_tok3.js.map +0 -1
  236. package/dist/unzip-pako.d.ts +0 -2
  237. package/dist/unzip-pako.js +0 -9
  238. package/dist/unzip-pako.js.map +0 -1
  239. package/esm/cramFile/filehandle.d.ts +0 -1
  240. package/esm/cramFile/filehandle.js +0 -2
  241. package/esm/cramFile/filehandle.js.map +0 -1
  242. package/esm/htscodecs/main_arith_gen.d.ts +0 -1
  243. package/esm/htscodecs/main_arith_gen.js +0 -86
  244. package/esm/htscodecs/main_arith_gen.js.map +0 -1
  245. package/esm/htscodecs/main_fqzcomp.d.ts +0 -1
  246. package/esm/htscodecs/main_fqzcomp.js +0 -112
  247. package/esm/htscodecs/main_fqzcomp.js.map +0 -1
  248. package/esm/htscodecs/main_rans.d.ts +0 -1
  249. package/esm/htscodecs/main_rans.js +0 -83
  250. package/esm/htscodecs/main_rans.js.map +0 -1
  251. package/esm/htscodecs/main_rans4x16.d.ts +0 -1
  252. package/esm/htscodecs/main_rans4x16.js +0 -82
  253. package/esm/htscodecs/main_rans4x16.js.map +0 -1
  254. package/esm/htscodecs/main_tok3.d.ts +0 -1
  255. package/esm/htscodecs/main_tok3.js +0 -84
  256. package/esm/htscodecs/main_tok3.js.map +0 -1
  257. package/esm/unzip-pako.d.ts +0 -2
  258. package/esm/unzip-pako.js +0 -6
  259. package/esm/unzip-pako.js.map +0 -1
  260. package/src/cramFile/filehandle.ts +0 -1
  261. package/src/htscodecs/Makefile +0 -142
  262. package/src/htscodecs/README.md +0 -64
  263. package/src/htscodecs/main_arith_gen.js +0 -96
  264. package/src/htscodecs/main_fqzcomp.js +0 -113
  265. package/src/htscodecs/main_rans.js +0 -88
  266. package/src/htscodecs/main_rans4x16.js +0 -87
  267. package/src/htscodecs/main_tok3.js +0 -86
  268. package/src/unzip-pako.ts +0 -6
@@ -68,87 +68,6 @@ function RansRenorm(src, R) {
68
68
  R = (R << 16) + src.ReadUint16();
69
69
  return R;
70
70
  }
71
- // RanEnc* is for encoder
72
- function RansEncInit() {
73
- return 1 << 15;
74
- }
75
- function RansEncFlush(R, dst) {
76
- dst.WriteByteNeg((R >> 24) & 0xff);
77
- dst.WriteByteNeg((R >> 16) & 0xff);
78
- dst.WriteByteNeg((R >> 8) & 0xff);
79
- dst.WriteByteNeg((R >> 0) & 0xff);
80
- }
81
- function RansEncRenorm(R, dst, freq, scale_bits) {
82
- //var R_max = (((1 << 15) >> scale_bits) << 16) * freq;
83
- var R_max = (1 << (31 - scale_bits)) * freq;
84
- while (R >= R_max) {
85
- dst.WriteByteNeg((R >> 8) & 0xff);
86
- dst.WriteByteNeg(R & 0xff);
87
- R >>= 16;
88
- }
89
- return R;
90
- }
91
- // Puts a symbol with frequency freq, cumulative freq start
92
- // and total freq 1<<scale_bits.
93
- //
94
- // Note with static probabilities, /freq and %freq could be
95
- // precomputed via multiplies and shifts.
96
- function RansEncPut(R, dst, start, freq, scale_bits) {
97
- var scale = 1 << scale_bits;
98
- R = RansEncRenorm(R, dst, freq, scale_bits);
99
- R = (Math.floor(R / freq) << scale_bits) + (R % freq) + start;
100
- return R;
101
- }
102
- //----------------------------------------------------------------------
103
- // Run length encoding
104
- function EncodeRLE(src, N) {
105
- // Step 1: find which symbols benefit from RLE
106
- var L = new Array(256);
107
- for (var i = 0; i < 256; i++)
108
- L[i] = 0;
109
- var last = -1;
110
- for (var i = 0; i < src.length; i++) {
111
- L[src[i]] += src[i] == last ? 1 : -1;
112
- last = src[i];
113
- }
114
- var nrle = 0;
115
- for (var i = 0; i < 256; i++)
116
- if (L[i] > 0)
117
- nrle++;
118
- if (!nrle) {
119
- // Format cannot cope with zero RLE symbols, so pick one!
120
- nrle = 1;
121
- L[0] = 1;
122
- }
123
- // Start meta-data as list of symbols to RLE
124
- var meta = new IOStream('', 0, nrle + 1 + src.length);
125
- meta.WriteByte(nrle);
126
- for (var i = 0; i < 256; i++)
127
- if (L[i] > 0)
128
- meta.WriteByte(i);
129
- // Step 2: Now apply RLE itself
130
- var data = new Buffer.allocUnsafe(src.length);
131
- var dpos = 0;
132
- for (var i = 0; i < src.length; i++) {
133
- data[dpos++] = src[i];
134
- if (L[src[i]] > 0) {
135
- last = src[i];
136
- var run = 0;
137
- while (i + run + 1 < src.length && src[i + run + 1] == last)
138
- run++;
139
- meta.WriteUint7(run);
140
- i += run;
141
- }
142
- }
143
- // Compress the meta-data
144
- var cmeta = RansEncode0(meta.buf.slice(0, meta.pos), N);
145
- var hdr = new IOStream('', 0, 16);
146
- hdr.WriteUint7(meta.pos * 2); // Uncompressed meta-data length + compressed-bit-flag(0)
147
- hdr.WriteUint7(dpos); // Length of RLE encoded data
148
- hdr.WriteUint7(cmeta.length); // Compressed meta-data length
149
- var meta = Buffer.concat([hdr.buf.slice(0, hdr.pos), cmeta]);
150
- return [meta, data.slice(0, dpos)];
151
- }
152
71
  function DecodeRLEMeta(src, N) {
153
72
  var u_meta_len = src.ReadUint7();
154
73
  var rle_len = src.ReadUint7();
@@ -173,7 +92,7 @@ function DecodeRLEMeta(src, N) {
173
92
  }
174
93
  function DecodeRLE(buf, L, rle_meta, len) {
175
94
  var src = new IOStream(buf);
176
- var out = new Buffer.allocUnsafe(len);
95
+ var out = new Uint8Array(len);
177
96
  // Expand up buf+meta to out; i = buf index, j = out index
178
97
  var j = 0;
179
98
  for (var i = 0; j < len; i++) {
@@ -189,72 +108,6 @@ function DecodeRLE(buf, L, rle_meta, len) {
189
108
  }
190
109
  return out;
191
110
  }
192
- //----------------------------------------------------------------------
193
- // Bit packing
194
- function EncodePack(src) {
195
- // Step 1: identify number of distinct symbols
196
- var F = new Array(256);
197
- for (var i = 0; i < 256; i++)
198
- F[i] = 0;
199
- for (var i = 0; i < src.length; i++)
200
- F[src[i]]++;
201
- var P = new Array(256);
202
- var nsym = 0;
203
- for (var i = 0; i < 256; i++)
204
- if (F[i] > 0)
205
- P[i] = nsym++;
206
- if (nsym > 16) {
207
- //console.error("Too many symbols to pack:",nsym)
208
- return;
209
- }
210
- // Pack data
211
- if (nsym <= 1) {
212
- // Constant
213
- var data = new Buffer.allocUnsafe(0);
214
- }
215
- else if (nsym <= 2) {
216
- // 1 bit per value
217
- var data = new Buffer.allocUnsafe(Math.ceil(src.length / 8));
218
- var j = -1;
219
- for (i = 0; i < src.length; i++) {
220
- if (i % 8 == 0)
221
- data[++j] = 0;
222
- data[j] += P[src[i]] << i % 8;
223
- }
224
- }
225
- else if (nsym <= 4) {
226
- // 2 bits per value
227
- var data = new Buffer.allocUnsafe(Math.ceil(src.length / 4));
228
- var j = -1;
229
- for (i = 0; i < src.length; i++) {
230
- if (i % 4 == 0)
231
- data[++j] = 0;
232
- data[j] += P[src[i]] << ((i % 4) * 2);
233
- }
234
- }
235
- else {
236
- // 4 bits per value
237
- var data = new Buffer.allocUnsafe(Math.ceil(src.length / 2));
238
- var j = -1;
239
- for (i = 0; i < src.length; i++) {
240
- if (i % 2 == 0)
241
- data[++j] = 0;
242
- data[j] += P[src[i]] << ((i % 2) * 4);
243
- }
244
- }
245
- // Produce pack meta-data
246
- var meta = new IOStream('', 0, nsym + 5);
247
- meta.WriteByte(nsym);
248
- var j = 0;
249
- for (var i = 0; i < 256; i++) {
250
- if (F[i] > 0) {
251
- F[i] = j++;
252
- meta.WriteByte(i);
253
- }
254
- }
255
- meta.WriteUint7(data.length);
256
- return [meta.buf.slice(0, meta.pos), data];
257
- }
258
111
  // Pack meta data is the number and value of distinct symbols plus
259
112
  // the length of the packed byte stream.
260
113
  function DecodePackMeta(src) {
@@ -268,7 +121,7 @@ function DecodePackMeta(src) {
268
121
  // Extract bits from src producing output of length len.
269
122
  // Nsym is number of distinct symbols used.
270
123
  function DecodePack(data, P, nsym, len) {
271
- var out = new Buffer.allocUnsafe(len);
124
+ var out = new Uint8Array(len);
272
125
  var j = 0;
273
126
  // Constant value
274
127
  if (nsym <= 1) {
@@ -304,50 +157,6 @@ function DecodePack(data, P, nsym, len) {
304
157
  }
305
158
  return out;
306
159
  }
307
- //----------------------------------------------------------------------
308
- // 4 way interleaving.
309
- // This is simply 4 rANS streams interleaved to form bytes 0,4,8...,
310
- // 1,5,9..., 2,6,10... and 3,7,11...
311
- //
312
- // It works well when the distributions differ for each of the 4 bytes,
313
- // for example when compressing a series of 32-bit integers.
314
- //
315
- // Maybe make this more general purpose of X* where we specify the stripe
316
- // size instead of fixing it at 4?
317
- function RansEncodeStripe(hdr, src, N) {
318
- if (N == 0)
319
- N = 4; // old default
320
- // Split into multiple streams
321
- var part = new Array(N);
322
- var ulen = new Array(N);
323
- for (var s = 0; s < N; s++) {
324
- ulen[s] = Math.floor(src.length / N) + (src.length % N > s);
325
- part[s] = new Array(ulen[s]);
326
- }
327
- for (var x = 0, i = 0; i < src.length; i += N, x++) {
328
- for (var j = 0; j < N; j++)
329
- if (x < part[j].length)
330
- part[j][x] = src[i + j];
331
- }
332
- // Compress each part
333
- var comp = new Array(N);
334
- var total = 0;
335
- for (var s = 0; s < N; s++) {
336
- // Example: try O0 and O1 and choose best
337
- var comp0 = encode(part[s], 0);
338
- var comp1 = encode(part[s], 1);
339
- comp[s] = comp1.length < comp0.length ? comp1 : comp0;
340
- total += comp[s].length;
341
- }
342
- // Serialise
343
- var out = new IOStream('', 0, total + 5 * N + 1);
344
- out.WriteByte(N);
345
- for (var s = 0; s < N; s++)
346
- out.WriteUint7(comp[s].length);
347
- for (var s = 0; s < N; s++)
348
- out.WriteData(comp[s], comp[s].length);
349
- return out.buf.slice(0, out.buf.pos);
350
- }
351
160
  function RansDecodeStripe(src, len) {
352
161
  var N = src.ReadByte();
353
162
  // Retrieve lengths
@@ -362,7 +171,7 @@ function RansDecodeStripe(src, len) {
362
171
  T[j] = RansDecodeStream(src, ulen[j]);
363
172
  }
364
173
  // Transpose
365
- var out = new Buffer.allocUnsafe(len);
174
+ var out = new Uint8Array(len);
366
175
  for (var j = 0; j < N; j++) {
367
176
  for (var i = 0; i < ulen[j]; i++) {
368
177
  out[i * N + j] = T[j][i];
@@ -416,44 +225,6 @@ function RansDecodeStream(stream, n_out) {
416
225
  buf = DecodePack(buf, P, nsym, pack_len);
417
226
  return buf;
418
227
  }
419
- function encode(src, format) {
420
- var hdr = new IOStream('', 0, 10);
421
- hdr.WriteByte(format);
422
- var order = format & 1;
423
- var x32 = format & 4;
424
- var stripe = format & 8;
425
- var nosz = format & 16;
426
- var cat = format & 32;
427
- var rle = format & 64;
428
- var pack = format & 128;
429
- var Nway = x32 ? 32 : 4; // interleaving amount
430
- var N = format >> 8; // stripe size
431
- if (!nosz)
432
- hdr.WriteUint7(src.length);
433
- if (stripe)
434
- return Buffer.concat([
435
- hdr.buf.slice(0, hdr.pos),
436
- RansEncodeStripe(hdr, src, N),
437
- ]);
438
- var pack_meta = new Buffer.alloc(0);
439
- if (pack)
440
- [pack_meta, src] = EncodePack(src);
441
- var rle_meta = new Buffer.alloc(0);
442
- if (rle)
443
- [rle_meta, src] = EncodeRLE(src, Nway);
444
- if (src.length < 4 && order == 1) {
445
- // Protect against short order-1 data due to RLE/Pack
446
- order = 0;
447
- hdr.buf[0] &= ~1;
448
- }
449
- if (cat)
450
- var comp = src;
451
- else if (order == 0)
452
- var comp = RansEncode0(src, Nway);
453
- else
454
- var comp = RansEncode1(src, Nway);
455
- return Buffer.concat([hdr.buf.slice(0, hdr.pos), pack_meta, rle_meta, comp]);
456
- }
457
228
  //----------------------------------------------------------------------
458
229
  // Order-0 decoder
459
230
  function ReadAlphabet(src) {
@@ -509,7 +280,7 @@ function RansDecode0(src, nbytes, N) {
509
280
  for (var i = 0; i < N; i++)
510
281
  R[i] = src.ReadUint32();
511
282
  // Main decode loop
512
- var output = new Buffer.allocUnsafe(nbytes);
283
+ var output = new Uint8Array(nbytes);
513
284
  for (var i = 0; i < nbytes; i++) {
514
285
  var ix = i & (N - 1); // equiv to i%N as N is power of 2
515
286
  var f = RansGetCumulativeFreq(R[ix], 12);
@@ -521,55 +292,6 @@ function RansDecode0(src, nbytes, N) {
521
292
  // Main decode loop
522
293
  return output;
523
294
  }
524
- //----------------------------------------------------------------------
525
- // Order-0 encoder
526
- function BuildFrequencies0(src, F) {
527
- for (var i = 0; i < 256; i++)
528
- F[i] = 0;
529
- for (var i = 0; i < src.length; i++)
530
- F[src[i]]++;
531
- }
532
- function NormaliseFrequencies0(F, bits) {
533
- // Compute total
534
- var tot = 0;
535
- for (var i = 0; i < 256; i++)
536
- tot += F[i];
537
- // Scale total of frequencies to max
538
- const max = 1 << bits;
539
- var scale = max / tot;
540
- do {
541
- var max_val = 0;
542
- var max_idx = 0;
543
- var renorm = 0;
544
- tot = 0;
545
- for (var i = 0; i < 256; i++) {
546
- if (F[i] == 0)
547
- continue;
548
- if (max_val < F[i]) {
549
- max_val = F[i];
550
- max_idx = i;
551
- }
552
- F[i] = Math.floor(F[i] * scale);
553
- if (F[i] == 0)
554
- F[i] = 1;
555
- tot += F[i];
556
- }
557
- // Adjust new tot to ensure it matches.
558
- if (tot < max) {
559
- // Too low, boost the most common symbol
560
- F[max_idx] += max - tot;
561
- }
562
- else if (tot - max < F[max_idx] / 2 && F[max_idx] > 2) {
563
- // Too high, reduce the common symbol
564
- F[max_idx] -= tot - max;
565
- }
566
- else if (tot != max) {
567
- // Much too high, fudge scale and try again.
568
- scale = max / tot;
569
- renorm = 1;
570
- }
571
- } while (renorm);
572
- }
573
295
  function NormaliseFrequencies0_Shift(F, bits) {
574
296
  // Compute total and number of bits to shift by
575
297
  var tot = 0;
@@ -586,71 +308,6 @@ function NormaliseFrequencies0_Shift(F, bits) {
586
308
  for (var i = 0; i < 256; i++)
587
309
  F[i] <<= shift;
588
310
  }
589
- function WriteAlphabet(out, F) {
590
- var rle = 0;
591
- for (var i = 0; i < 256; i++) {
592
- if (!F[i])
593
- continue;
594
- if (rle > 0)
595
- rle--;
596
- else {
597
- out.WriteByte(i);
598
- if (i > 0 && F[i - 1] > 0) {
599
- // We've encoded two symbol frequencies in a row.
600
- // How many more are there? Store that count so
601
- // we can avoid writing consecutive symbols.
602
- for (rle = i + 1; rle < 256 && F[rle]; rle++)
603
- ;
604
- rle -= i + 1;
605
- out.WriteByte(rle);
606
- }
607
- }
608
- }
609
- out.WriteByte(0);
610
- }
611
- function WriteFrequencies0(out, F) {
612
- WriteAlphabet(out, F);
613
- for (var i = 0; i < 256; i++) {
614
- if (F[i])
615
- out.WriteUint7(F[i]);
616
- }
617
- }
618
- function RansEncode0(src, N) {
619
- const nbytes = src.length;
620
- var output = new IOStream('', 0, 257 * 3 + 9);
621
- // Compute frequencies
622
- var F = new Array(256);
623
- BuildFrequencies0(src, F);
624
- var bit_size = Math.ceil(Math.log2(nbytes));
625
- if (bit_size > 12)
626
- bit_size = 12;
627
- NormaliseFrequencies0(F, bit_size);
628
- WriteFrequencies0(output, F);
629
- NormaliseFrequencies0(F, 12);
630
- // Compute cumulative frequencies
631
- var C = new Array(256);
632
- C[0] = 0;
633
- for (var i = 1; i < 256; i++)
634
- C[i] = C[i - 1] + F[i - 1];
635
- // Initialise rANS state
636
- var R = new Array(N);
637
- for (var i = 0; i < N; i++)
638
- R[i] = RansEncInit();
639
- // Allow expansion room if trying to compress random data.
640
- var rans_out = new IOStream('', (nbytes * 1.05 + 100) >> 0, (nbytes * 1.05 + 100) >> 0);
641
- // Main encode loop
642
- for (var i = nbytes - 1; i >= 0; i--)
643
- R[i % N] = RansEncPut(R[i % N], rans_out, C[src[i]], F[src[i]], 12);
644
- for (var i = N - 1; i >= 0; i--)
645
- RansEncFlush(R[i], rans_out);
646
- // Stitch blocks together into final output buffer
647
- //console.error("pos=",rans_out.pos, " len=",rans_out.length)
648
- //console.error(rans_out.buf.slice(rans_out.pos, rans_out.length))
649
- return Buffer.concat([
650
- output.buf.slice(0, output.pos),
651
- rans_out.buf.slice(rans_out.pos, rans_out.length),
652
- ], output.pos + rans_out.length - rans_out.pos);
653
- }
654
311
  //----------------------------------------------------------------------
655
312
  // Order-1 decoder
656
313
  // Decode a table of order-1 frequences,
@@ -717,7 +374,7 @@ function RansDecode1(src, nbytes, N) {
717
374
  L[j] = 0;
718
375
  }
719
376
  // Main decode loop
720
- var output = new Buffer.allocUnsafe(nbytes);
377
+ var output = new Uint8Array(nbytes);
721
378
  var nbytesx = Math.floor(nbytes / N);
722
379
  for (var i = 0; i < nbytesx; i++) {
723
380
  for (var j = 0; j < N; j++) {
@@ -744,153 +401,5 @@ function RansDecode1(src, nbytes, N) {
744
401
  }
745
402
  return output;
746
403
  }
747
- //----------------------------------------------------------------------
748
- // Order-1 encoder
749
- function BuildFrequencies1(src, F, F0, N) {
750
- for (var i = 0; i < 256; i++) {
751
- F0[i] = 0;
752
- for (var j = 0; j < 256; j++)
753
- F[i][j] = 0;
754
- }
755
- var last = 0;
756
- for (var i = 0; i < src.length; i++) {
757
- F0[last]++;
758
- F[last][src[i]]++;
759
- last = src[i];
760
- }
761
- F0[last]++;
762
- // Also accept we'll be starting at N points, not just byte 0
763
- for (var i = 1; i < N; i++)
764
- F[0][src[i * Math.floor(src.length / N)]]++;
765
- F0[0] += N - 1;
766
- }
767
- function NormaliseFrequencies1(F, F0, shift) {
768
- for (var i = 0; i < 256; i++) {
769
- if (!F0[i])
770
- continue;
771
- var bit_size = Math.ceil(Math.log2(F0[i]));
772
- if (bit_size > shift)
773
- bit_size = shift;
774
- NormaliseFrequencies0(F[i], bit_size);
775
- }
776
- }
777
- function NormaliseFrequencies1_Shift(F, F0, shift) {
778
- for (var i = 0; i < 256; i++)
779
- if (F0[i])
780
- NormaliseFrequencies0_Shift(F[i], shift);
781
- }
782
- function WriteFrequencies1(out, F, F0) {
783
- WriteAlphabet(out, F0);
784
- for (var i = 0; i < 256; i++) {
785
- if (!F0[i])
786
- continue;
787
- var run = 0;
788
- for (var j = 0; j < 256; j++) {
789
- if (!F0[j])
790
- continue;
791
- if (run) {
792
- run--;
793
- }
794
- else {
795
- out.WriteUint7(F[i][j]);
796
- if (!F[i][j]) {
797
- // Count how many more zero-freqs we have
798
- for (var k = j + 1; k < 256; k++) {
799
- if (!F0[k])
800
- continue;
801
- if (F[i][k] == 0)
802
- run++;
803
- else
804
- break;
805
- }
806
- out.WriteByte(run);
807
- }
808
- }
809
- }
810
- }
811
- }
812
- function RansEncode1(src, N) {
813
- const nbytes = src.length;
814
- var output = new IOStream('', 0, 257 * 257 * 3 + 9);
815
- // Compute frequencies
816
- var F0 = new Array(256);
817
- var F = new Array(256);
818
- var C = new Array(256);
819
- for (var i = 0; i < 256; i++) {
820
- F[i] = new Array(256);
821
- C[i] = new Array(256);
822
- }
823
- // Frequency precision
824
- var shift = 12;
825
- BuildFrequencies1(src, F, F0, N);
826
- NormaliseFrequencies1(F, F0, shift);
827
- // Store frequencies, possibly compressed
828
- var freq = new IOStream('', 0, 257 * 257 * 3 + 9);
829
- WriteFrequencies1(freq, F, F0);
830
- var cfreq = RansEncode0(freq.buf.slice(0, freq.pos), 4);
831
- if (cfreq.length < freq.pos) {
832
- output.WriteByte(1 | (shift << 4));
833
- output.WriteUint7(freq.pos);
834
- output.WriteUint7(cfreq.length);
835
- output.WriteData(cfreq, cfreq.length);
836
- }
837
- else {
838
- output.WriteByte(0 | (shift << 4));
839
- output.WriteData(freq.buf, freq.pos);
840
- }
841
- // Normalise and compute cumulative frequencies
842
- NormaliseFrequencies1_Shift(F, F0, shift);
843
- for (var i = 0; i < 256; i++) {
844
- if (!F0[i])
845
- continue;
846
- C[i][0] = 0;
847
- for (var j = 1; j < 256; j++)
848
- C[i][j] = C[i][j - 1] + F[i][j - 1];
849
- }
850
- // Initialise rANS state
851
- var R = new Array(N);
852
- var L = new Array(N);
853
- for (var j = 0; j < N; j++) {
854
- R[j] = RansEncInit();
855
- L[j] = 0;
856
- }
857
- var rans_out = new IOStream('', (nbytes * 1.05 + 100) >> 0, (nbytes * 1.05 + 100) >> 0);
858
- // We have N rans codecs running in parallel on its own 1/Nth of buffer
859
- var nbytesx = Math.floor(nbytes / N);
860
- var idx = new Array(N);
861
- var last = new Array(N);
862
- for (var j = 0; j < N; j++) {
863
- idx[j] = (j + 1) * nbytesx - 2;
864
- last[j] = src[idx[j] + 1];
865
- }
866
- // Deal with the remainder if not a multiple of N
867
- last[N - 1] = src[nbytes - 1];
868
- for (var i = nbytes - 2; i > N * nbytesx - 2; i--) {
869
- R[N - 1] = RansEncPut(R[N - 1], rans_out, C[src[i]][last[N - 1]], F[src[i]][last[N - 1]], shift);
870
- last[N - 1] = src[i];
871
- }
872
- // Main encode loop
873
- var s = new Array(N);
874
- while (idx[0] >= 0) {
875
- // Separate loop as a speed optimisation
876
- for (var j = N - 1; j >= 0; j--)
877
- s[j] = src[idx[j]];
878
- for (var j = N - 1; j >= 0; j--) {
879
- R[j] = RansEncPut(R[j], rans_out, C[s[j]][last[j]], F[s[j]][last[j]], shift);
880
- last[j] = s[j];
881
- idx[j]--;
882
- }
883
- }
884
- for (var j = N - 1; j >= 0; j--) {
885
- R[j] = RansEncPut(R[j], rans_out, C[0][last[j]], F[0][last[j]], shift);
886
- }
887
- for (var i = N - 1; i >= 0; i--)
888
- RansEncFlush(R[i], rans_out);
889
- // Stitch blocks together into final output buffer
890
- return Buffer.concat([
891
- output.buf.slice(0, output.pos),
892
- rans_out.buf.slice(rans_out.pos, rans_out.length),
893
- ], output.pos + rans_out.length - rans_out.pos);
894
- }
895
- module.exports = { decode, encode };
404
+ module.exports = { decode };
896
405
  //# sourceMappingURL=rans4x16.js.map