@gmod/cram 3.0.6 → 3.0.7

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 (113) hide show
  1. package/dist/cram-bundle.js +1 -1
  2. package/dist/cramFile/codecs/byteArrayStop.d.ts +2 -2
  3. package/dist/cramFile/file.js +8 -10
  4. package/dist/cramFile/file.js.map +1 -1
  5. package/dist/cramFile/util.js.map +1 -1
  6. package/dist/htscodecs/arith_gen.d.ts +26 -0
  7. package/dist/htscodecs/arith_gen.js +558 -0
  8. package/dist/htscodecs/arith_gen.js.map +1 -0
  9. package/dist/htscodecs/arith_sh.d.ts +16 -0
  10. package/dist/htscodecs/arith_sh.js +128 -0
  11. package/dist/htscodecs/arith_sh.js.map +1 -0
  12. package/dist/htscodecs/byte_model.d.ts +11 -0
  13. package/dist/htscodecs/byte_model.js +113 -0
  14. package/dist/htscodecs/byte_model.js.map +1 -0
  15. package/dist/htscodecs/fqzcomp.d.ts +2 -0
  16. package/dist/htscodecs/fqzcomp.js +744 -0
  17. package/dist/htscodecs/fqzcomp.js.map +1 -0
  18. package/dist/htscodecs/index.d.ts +5 -0
  19. package/dist/htscodecs/index.js +70 -0
  20. package/dist/htscodecs/index.js.map +1 -0
  21. package/dist/htscodecs/iostream.d.ts +26 -0
  22. package/dist/htscodecs/iostream.js +242 -0
  23. package/dist/htscodecs/iostream.js.map +1 -0
  24. package/dist/htscodecs/main_arith_gen.d.ts +1 -0
  25. package/dist/htscodecs/main_arith_gen.js +86 -0
  26. package/dist/htscodecs/main_arith_gen.js.map +1 -0
  27. package/dist/htscodecs/main_fqzcomp.d.ts +1 -0
  28. package/dist/htscodecs/main_fqzcomp.js +112 -0
  29. package/dist/htscodecs/main_fqzcomp.js.map +1 -0
  30. package/dist/htscodecs/main_rans.d.ts +1 -0
  31. package/dist/htscodecs/main_rans.js +83 -0
  32. package/dist/htscodecs/main_rans.js.map +1 -0
  33. package/dist/htscodecs/main_rans4x16.d.ts +1 -0
  34. package/dist/htscodecs/main_rans4x16.js +82 -0
  35. package/dist/htscodecs/main_rans4x16.js.map +1 -0
  36. package/dist/htscodecs/main_tok3.d.ts +1 -0
  37. package/dist/htscodecs/main_tok3.js +84 -0
  38. package/dist/htscodecs/main_tok3.js.map +1 -0
  39. package/dist/htscodecs/rans.d.ts +2 -0
  40. package/dist/htscodecs/rans.js +480 -0
  41. package/dist/htscodecs/rans.js.map +1 -0
  42. package/dist/htscodecs/rans4x16.d.ts +2 -0
  43. package/dist/htscodecs/rans4x16.js +896 -0
  44. package/dist/htscodecs/rans4x16.js.map +1 -0
  45. package/dist/htscodecs/tok3.d.ts +2 -0
  46. package/dist/htscodecs/tok3.js +347 -0
  47. package/dist/htscodecs/tok3.js.map +1 -0
  48. package/esm/cramFile/codecs/byteArrayStop.d.ts +2 -2
  49. package/esm/cramFile/file.js +8 -10
  50. package/esm/cramFile/file.js.map +1 -1
  51. package/esm/cramFile/util.js.map +1 -1
  52. package/esm/htscodecs/arith_gen.d.ts +26 -0
  53. package/esm/htscodecs/arith_gen.js +558 -0
  54. package/esm/htscodecs/arith_gen.js.map +1 -0
  55. package/esm/htscodecs/arith_sh.d.ts +16 -0
  56. package/esm/htscodecs/arith_sh.js +128 -0
  57. package/esm/htscodecs/arith_sh.js.map +1 -0
  58. package/esm/htscodecs/byte_model.d.ts +11 -0
  59. package/esm/htscodecs/byte_model.js +113 -0
  60. package/esm/htscodecs/byte_model.js.map +1 -0
  61. package/esm/htscodecs/fqzcomp.d.ts +2 -0
  62. package/esm/htscodecs/fqzcomp.js +744 -0
  63. package/esm/htscodecs/fqzcomp.js.map +1 -0
  64. package/esm/htscodecs/index.d.ts +5 -0
  65. package/esm/htscodecs/index.js +70 -0
  66. package/esm/htscodecs/index.js.map +1 -0
  67. package/esm/htscodecs/iostream.d.ts +26 -0
  68. package/esm/htscodecs/iostream.js +242 -0
  69. package/esm/htscodecs/iostream.js.map +1 -0
  70. package/esm/htscodecs/main_arith_gen.d.ts +1 -0
  71. package/esm/htscodecs/main_arith_gen.js +86 -0
  72. package/esm/htscodecs/main_arith_gen.js.map +1 -0
  73. package/esm/htscodecs/main_fqzcomp.d.ts +1 -0
  74. package/esm/htscodecs/main_fqzcomp.js +112 -0
  75. package/esm/htscodecs/main_fqzcomp.js.map +1 -0
  76. package/esm/htscodecs/main_rans.d.ts +1 -0
  77. package/esm/htscodecs/main_rans.js +83 -0
  78. package/esm/htscodecs/main_rans.js.map +1 -0
  79. package/esm/htscodecs/main_rans4x16.d.ts +1 -0
  80. package/esm/htscodecs/main_rans4x16.js +82 -0
  81. package/esm/htscodecs/main_rans4x16.js.map +1 -0
  82. package/esm/htscodecs/main_tok3.d.ts +1 -0
  83. package/esm/htscodecs/main_tok3.js +84 -0
  84. package/esm/htscodecs/main_tok3.js.map +1 -0
  85. package/esm/htscodecs/rans.d.ts +2 -0
  86. package/esm/htscodecs/rans.js +480 -0
  87. package/esm/htscodecs/rans.js.map +1 -0
  88. package/esm/htscodecs/rans4x16.d.ts +2 -0
  89. package/esm/htscodecs/rans4x16.js +896 -0
  90. package/esm/htscodecs/rans4x16.js.map +1 -0
  91. package/esm/htscodecs/tok3.d.ts +2 -0
  92. package/esm/htscodecs/tok3.js +347 -0
  93. package/esm/htscodecs/tok3.js.map +1 -0
  94. package/package.json +1 -2
  95. package/src/cramFile/file.ts +8 -10
  96. package/src/cramFile/util.ts +0 -1
  97. package/src/htscodecs/Makefile +142 -0
  98. package/src/htscodecs/README.md +64 -0
  99. package/src/htscodecs/arith_gen.js +607 -0
  100. package/src/htscodecs/arith_sh.js +138 -0
  101. package/src/htscodecs/byte_model.js +126 -0
  102. package/src/htscodecs/fqzcomp.js +834 -0
  103. package/src/htscodecs/index.js +79 -0
  104. package/src/htscodecs/iostream.js +256 -0
  105. package/src/htscodecs/main_arith_gen.js +96 -0
  106. package/src/htscodecs/main_fqzcomp.js +113 -0
  107. package/src/htscodecs/main_rans.js +88 -0
  108. package/src/htscodecs/main_rans4x16.js +87 -0
  109. package/src/htscodecs/main_tok3.js +86 -0
  110. package/src/htscodecs/rans.js +545 -0
  111. package/src/htscodecs/rans4x16.js +1003 -0
  112. package/src/htscodecs/tok3.js +396 -0
  113. package/src/typings/htscodecs.d.ts +0 -6
@@ -0,0 +1,558 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2019,2020 Genome Research Ltd.
4
+ * Author(s): James Bonfield
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are met:
8
+ *
9
+ * 1. Redistributions of source code must retain the above copyright notice,
10
+ * this list of conditions and the following disclaimer.
11
+ *
12
+ * 2. Redistributions in binary form must reproduce the above
13
+ * copyright notice, this list of conditions and the following
14
+ * disclaimer in the documentation and/or other materials provided
15
+ * with the distribution.
16
+ *
17
+ * 3. Neither the names Genome Research Ltd and Wellcome Trust Sanger
18
+ * Institute nor the names of its contributors may be used to endorse
19
+ * or promote products derived from this software without specific
20
+ * prior written permission.
21
+ *
22
+ * THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS
23
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
24
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
25
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH
26
+ * LTD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33
+ */
34
+ const RangeCoder = require('./arith_sh');
35
+ const IOStream = require('./iostream');
36
+ const ByteModel = require('./byte_model');
37
+ const bzip2 = require('bzip2');
38
+ const ARITH_ORDER = 1;
39
+ const ARITH_EXT = 4;
40
+ const ARITH_STRIPE = 8;
41
+ const ARITH_NOSIZE = 16;
42
+ const ARITH_CAT = 32;
43
+ const ARITH_RLE = 64;
44
+ const ARITH_PACK = 128;
45
+ module.exports = class RangeCoderGen {
46
+ decode(src) {
47
+ this.stream = new IOStream(src);
48
+ return this.decodeStream(this.stream);
49
+ }
50
+ decodeStream(stream, n_out = 0) {
51
+ var flags = this.stream.ReadByte();
52
+ if (!(flags & ARITH_NOSIZE))
53
+ n_out = this.stream.ReadUint7();
54
+ var e_len = n_out;
55
+ var order = flags & ARITH_ORDER;
56
+ // 4-way recursion
57
+ if (flags & ARITH_STRIPE)
58
+ return this.decodeStripe(this.stream, n_out);
59
+ // Meta data
60
+ if (flags & ARITH_PACK) {
61
+ var P;
62
+ [P, e_len] = this.decodePackMeta(this.stream);
63
+ }
64
+ // NOP, useful for tiny blocks
65
+ if (flags & ARITH_CAT)
66
+ var data = this.decodeCat(this.stream, e_len);
67
+ // Entropy decode
68
+ else if (flags & ARITH_EXT) {
69
+ var data = this.decodeExt(this.stream, e_len);
70
+ }
71
+ else if (flags & ARITH_RLE) {
72
+ var data = order
73
+ ? this.decodeRLE1(this.stream, e_len)
74
+ : this.decodeRLE0(this.stream, e_len);
75
+ }
76
+ else {
77
+ var data = order
78
+ ? this.decode1(this.stream, e_len)
79
+ : this.decode0(this.stream, e_len);
80
+ }
81
+ // Transforms
82
+ if (flags & ARITH_PACK)
83
+ data = this.decodePack(data, P, n_out);
84
+ return data;
85
+ }
86
+ encode(src, flags) {
87
+ this.stream = new IOStream('', 0, src.length * 1.1 + 100); // guestimate worst case!
88
+ this.stream.WriteByte(flags);
89
+ if (!(flags & ARITH_NOSIZE))
90
+ this.stream.WriteUint7(src.length);
91
+ if (flags & ARITH_STRIPE)
92
+ return Buffer.concat([
93
+ this.stream.buf.slice(0, this.stream.pos),
94
+ this.encodeStripe(this.stream, src, flags >> 8),
95
+ ]);
96
+ var order = flags & ARITH_ORDER;
97
+ var e_len = src.length;
98
+ // step 1: Encode meta-data
99
+ var pack_meta;
100
+ if (flags & ARITH_PACK)
101
+ [pack_meta, src, e_len] = this.encodePack(src);
102
+ // step 2: Write any meta data
103
+ if (flags & ARITH_PACK)
104
+ this.stream.WriteStream(pack_meta);
105
+ // step 3: arith encoding below
106
+ if (flags & ARITH_RLE) {
107
+ return order
108
+ ? this.encodeRLE1(src, e_len, this.stream)
109
+ : this.encodeRLE0(src, e_len, this.stream);
110
+ }
111
+ else {
112
+ return order
113
+ ? this.encode1(src, e_len, this.stream)
114
+ : this.encode0(src, e_len, this.stream);
115
+ }
116
+ }
117
+ //----------------------------------------------------------------------
118
+ // Order-0 codec
119
+ decode0(stream, n_out) {
120
+ var output = new Buffer.allocUnsafe(n_out);
121
+ var max_sym = stream.ReadByte();
122
+ if (max_sym == 0)
123
+ max_sym = 256;
124
+ var byte_model = new ByteModel(max_sym);
125
+ var rc = new RangeCoder(stream);
126
+ rc.RangeStartDecode(stream);
127
+ for (var i = 0; i < n_out; i++)
128
+ output[i] = byte_model.ModelDecode(stream, rc);
129
+ return output;
130
+ }
131
+ encode0(src, n_in, out) {
132
+ // Count the maximum symbol present
133
+ var max_sym = 0;
134
+ for (var i = 0; i < n_in; i++)
135
+ if (max_sym < src[i])
136
+ max_sym = src[i];
137
+ max_sym++; // FIXME not what spec states!?
138
+ var byte_model = new ByteModel(max_sym);
139
+ out.WriteByte(max_sym);
140
+ var rc = new RangeCoder(out);
141
+ for (var i = 0; i < n_in; i++)
142
+ byte_model.ModelEncode(out, rc, src[i]);
143
+ rc.RangeFinishEncode(out);
144
+ return out.buf.slice(0, out.pos);
145
+ }
146
+ //----------------------------------------------------------------------
147
+ // Order-1 codec
148
+ decode1(stream, n_out) {
149
+ var output = new Buffer.allocUnsafe(n_out);
150
+ var max_sym = stream.ReadByte();
151
+ if (max_sym == 0)
152
+ max_sym = 256;
153
+ var byte_model = new Array(max_sym);
154
+ for (var i = 0; i < max_sym; i++)
155
+ byte_model[i] = new ByteModel(max_sym);
156
+ var rc = new RangeCoder(stream);
157
+ rc.RangeStartDecode(stream);
158
+ var last = 0;
159
+ for (var i = 0; i < n_out; i++) {
160
+ output[i] = byte_model[last].ModelDecode(stream, rc);
161
+ last = output[i];
162
+ }
163
+ return output;
164
+ }
165
+ encode1(src, n_in, out) {
166
+ // Count the maximum symbol present
167
+ var max_sym = 0;
168
+ for (var i = 0; i < n_in; i++)
169
+ if (max_sym < src[i])
170
+ max_sym = src[i];
171
+ max_sym++; // FIXME not what spec states!
172
+ var byte_model = new Array(max_sym);
173
+ for (var i = 0; i < max_sym; i++)
174
+ byte_model[i] = new ByteModel(max_sym);
175
+ out.WriteByte(max_sym);
176
+ var rc = new RangeCoder(out);
177
+ var last = 0;
178
+ for (var i = 0; i < n_in; i++) {
179
+ byte_model[last].ModelEncode(out, rc, src[i]);
180
+ last = src[i];
181
+ }
182
+ rc.RangeFinishEncode(out);
183
+ return out.buf.slice(0, out.pos);
184
+ }
185
+ //----------------------------------------------------------------------
186
+ // External codec
187
+ decodeExt(stream, n_out) {
188
+ // Bzip2 only for now
189
+ var output = new Buffer.allocUnsafe(n_out);
190
+ var bits = bzip2.array(stream.buf.slice(stream.pos));
191
+ var size = bzip2.header(bits);
192
+ var j = 0;
193
+ do {
194
+ var chunk = bzip2.decompress(bits, size);
195
+ if (chunk != -1) {
196
+ Buffer.from(chunk).copy(output, j);
197
+ j += chunk.length;
198
+ size -= chunk.length;
199
+ }
200
+ } while (chunk != -1);
201
+ return output;
202
+ }
203
+ encodeExt(stream, n_out) {
204
+ // We cannot compress using Bzip2 now as it's
205
+ // absent from bzip2.js, but consider using
206
+ // https://github.com/cscott/compressjs
207
+ }
208
+ //----------------------------------------------------------------------
209
+ // Order-0 RLE codec
210
+ decodeRLE0(stream, n_out) {
211
+ var output = new Buffer.allocUnsafe(n_out);
212
+ var max_sym = stream.ReadByte();
213
+ if (max_sym == 0)
214
+ max_sym = 256;
215
+ var model_lit = new ByteModel(max_sym);
216
+ var model_run = new Array(258);
217
+ for (var i = 0; i <= 257; i++)
218
+ model_run[i] = new ByteModel(4);
219
+ var rc = new RangeCoder(stream);
220
+ rc.RangeStartDecode(stream);
221
+ var i = 0;
222
+ while (i < n_out) {
223
+ output[i] = model_lit.ModelDecode(stream, rc);
224
+ var part = model_run[output[i]].ModelDecode(stream, rc);
225
+ var run = part;
226
+ var rctx = 256;
227
+ while (part == 3) {
228
+ part = model_run[rctx].ModelDecode(stream, rc);
229
+ rctx = 257;
230
+ run += part;
231
+ }
232
+ for (var j = 1; j <= run; j++)
233
+ output[i + j] = output[i];
234
+ i += run + 1;
235
+ }
236
+ return output;
237
+ }
238
+ encodeRLE0(src, n_in, out) {
239
+ // Count the maximum symbol present
240
+ var max_sym = 0;
241
+ for (var i = 0; i < n_in; i++)
242
+ if (max_sym < src[i])
243
+ max_sym = src[i];
244
+ max_sym++; // FIXME not what spec states!
245
+ var model_lit = new ByteModel(max_sym);
246
+ var model_run = new Array(258);
247
+ for (var i = 0; i <= 257; i++)
248
+ model_run[i] = new ByteModel(4);
249
+ out.WriteByte(max_sym);
250
+ var rc = new RangeCoder(out);
251
+ var i = 0;
252
+ while (i < n_in) {
253
+ model_lit.ModelEncode(out, rc, src[i]);
254
+ var run = 1;
255
+ while (i + run < n_in && src[i + run] == src[i])
256
+ run++;
257
+ run--;
258
+ var rctx = src[i];
259
+ var last = src[i];
260
+ i += run + 1;
261
+ var part = run >= 3 ? 3 : run;
262
+ model_run[rctx].ModelEncode(out, rc, part);
263
+ run -= part;
264
+ rctx = 256;
265
+ while (part == 3) {
266
+ part = run >= 3 ? 3 : run;
267
+ model_run[rctx].ModelEncode(out, rc, part);
268
+ rctx = 257;
269
+ run -= part;
270
+ }
271
+ }
272
+ rc.RangeFinishEncode(out);
273
+ return out.buf.slice(0, out.pos);
274
+ }
275
+ //----------------------------------------------------------------------
276
+ // Order-1 RLE codec
277
+ decodeRLE1(stream, n_out) {
278
+ var output = new Buffer.allocUnsafe(n_out);
279
+ var max_sym = stream.ReadByte();
280
+ if (max_sym == 0)
281
+ max_sym = 256;
282
+ var model_lit = new Array(max_sym);
283
+ for (var i = 0; i < max_sym; i++)
284
+ model_lit[i] = new ByteModel(max_sym);
285
+ var model_run = new Array(258);
286
+ for (var i = 0; i <= 257; i++)
287
+ model_run[i] = new ByteModel(4);
288
+ var rc = new RangeCoder(stream);
289
+ rc.RangeStartDecode(stream);
290
+ var last = 0;
291
+ var i = 0;
292
+ while (i < n_out) {
293
+ output[i] = model_lit[last].ModelDecode(stream, rc);
294
+ last = output[i];
295
+ var part = model_run[output[i]].ModelDecode(stream, rc);
296
+ var run = part;
297
+ var rctx = 256;
298
+ while (part == 3) {
299
+ part = model_run[rctx].ModelDecode(stream, rc);
300
+ rctx = 257;
301
+ run += part;
302
+ }
303
+ for (var j = 1; j <= run; j++)
304
+ output[i + j] = output[i];
305
+ i += run + 1;
306
+ }
307
+ return output;
308
+ }
309
+ encodeRLE1(src, n_in, out) {
310
+ // Count the maximum symbol present
311
+ var max_sym = 0;
312
+ for (var i = 0; i < n_in; i++)
313
+ if (max_sym < src[i])
314
+ max_sym = src[i];
315
+ max_sym++; // FIXME not what spec states!
316
+ var model_lit = new Array(max_sym);
317
+ for (var i = 0; i < max_sym; i++)
318
+ model_lit[i] = new ByteModel(max_sym);
319
+ var model_run = new Array(258);
320
+ for (var i = 0; i <= 257; i++)
321
+ model_run[i] = new ByteModel(4);
322
+ out.WriteByte(max_sym);
323
+ var rc = new RangeCoder(out);
324
+ var i = 0;
325
+ var last = 0;
326
+ while (i < n_in) {
327
+ model_lit[last].ModelEncode(out, rc, src[i]);
328
+ var run = 1;
329
+ while (i + run < n_in && src[i + run] == src[i])
330
+ run++;
331
+ run--;
332
+ var rctx = src[i];
333
+ last = src[i];
334
+ i += run + 1;
335
+ var part = run >= 3 ? 3 : run;
336
+ model_run[rctx].ModelEncode(out, rc, part);
337
+ run -= part;
338
+ rctx = 256;
339
+ while (part == 3) {
340
+ part = run >= 3 ? 3 : run;
341
+ model_run[rctx].ModelEncode(out, rc, part);
342
+ rctx = 257;
343
+ run -= part;
344
+ }
345
+ }
346
+ rc.RangeFinishEncode(out);
347
+ return out.buf.slice(0, out.pos);
348
+ }
349
+ //----------------------------------------------------------------------
350
+ // Pack method
351
+ decodePackMeta(stream) {
352
+ this.nsym = stream.ReadByte();
353
+ var M = new Array(this.nsym);
354
+ for (var i = 0; i < this.nsym; i++)
355
+ M[i] = stream.ReadByte();
356
+ var e_len = stream.ReadUint7(); // Could be derived data from nsym and n_out
357
+ return [M, e_len];
358
+ }
359
+ decodePack(data, M, len) {
360
+ var out = new Buffer.allocUnsafe(len);
361
+ if (this.nsym <= 1) {
362
+ // Constant value
363
+ for (var i = 0; i < len; i++)
364
+ out[i] = M[0];
365
+ }
366
+ else if (this.nsym <= 2) {
367
+ // 1 bit per value
368
+ for (var i = 0, j = 0; i < len; i++) {
369
+ if (i % 8 == 0)
370
+ var v = data[j++];
371
+ out[i] = M[v & 1];
372
+ v >>= 1;
373
+ }
374
+ }
375
+ else if (this.nsym <= 4) {
376
+ // 2 bits per value
377
+ for (var i = 0, j = 0; i < len; i++) {
378
+ if (i % 4 == 0)
379
+ var v = data[j++];
380
+ out[i] = M[v & 3];
381
+ v >>= 2;
382
+ }
383
+ }
384
+ else if (this.nsym <= 16) {
385
+ // 4 bits per value
386
+ for (var i = 0, j = 0; i < len; i++) {
387
+ if (i % 2 == 0)
388
+ var v = data[j++];
389
+ out[i] = M[v & 15];
390
+ v >>= 4;
391
+ }
392
+ }
393
+ else {
394
+ // 8 bits per value: NOP
395
+ return data;
396
+ }
397
+ return out;
398
+ }
399
+ // Compute M array and return meta-data stream
400
+ packMeta(src) {
401
+ var stream = new IOStream('', 0, 1024);
402
+ // Count symbols
403
+ var M = new Array(256);
404
+ for (var i = 0; i < src.length; i++)
405
+ M[src[i]] = 1;
406
+ // Write Map
407
+ for (var nsym = 0, i = 0; i < 256; i++)
408
+ if (M[i])
409
+ M[i] = ++nsym; // map to 1..N
410
+ stream.WriteByte(nsym);
411
+ // FIXME: add check for nsym > 16?
412
+ // Or just accept it as an inefficient waste of time.
413
+ for (var i = 0; i < 256; i++) {
414
+ if (M[i]) {
415
+ stream.WriteByte(i); // adjust to 0..N-1
416
+ M[i]--;
417
+ }
418
+ }
419
+ return [stream, M, nsym];
420
+ }
421
+ encodePack(data) {
422
+ var meta, M, nsym;
423
+ [meta, M, nsym] = this.packMeta(data);
424
+ var len = data.length;
425
+ var i = 0;
426
+ if (nsym <= 1) {
427
+ // Constant values
428
+ meta.WriteUint7(0);
429
+ return [meta, new Buffer.allocUnsafe(0), 0];
430
+ }
431
+ if (nsym <= 2) {
432
+ // 1 bit per value
433
+ var out = new Buffer.allocUnsafe(Math.floor((len + 7) / 8));
434
+ for (var i = 0, j = 0; i < (len & ~7); i += 8, j++)
435
+ out[j] =
436
+ (M[data[i + 0]] << 0) +
437
+ (M[data[i + 1]] << 1) +
438
+ (M[data[i + 2]] << 2) +
439
+ (M[data[i + 3]] << 3) +
440
+ (M[data[i + 4]] << 4) +
441
+ (M[data[i + 5]] << 5) +
442
+ (M[data[i + 6]] << 6) +
443
+ (M[data[i + 7]] << 7);
444
+ if (i < len) {
445
+ out[j] = 0;
446
+ var v = 0;
447
+ while (i < len) {
448
+ out[j] |= M[data[i++]] << v;
449
+ v++;
450
+ }
451
+ j++;
452
+ }
453
+ meta.WriteUint7(j);
454
+ return [meta, out, out.length];
455
+ }
456
+ if (nsym <= 4) {
457
+ // 2 bits per value
458
+ var out = new Buffer.allocUnsafe(Math.floor((len + 3) / 4));
459
+ for (var i = 0, j = 0; i < (len & ~3); i += 4, j++)
460
+ out[j] =
461
+ (M[data[i + 0]] << 0) +
462
+ (M[data[i + 1]] << 2) +
463
+ (M[data[i + 2]] << 4) +
464
+ (M[data[i + 3]] << 6);
465
+ if (i < len) {
466
+ out[j] = 0;
467
+ var v = 0;
468
+ while (i < len) {
469
+ out[j] |= M[data[i++]] << v;
470
+ v += 2;
471
+ }
472
+ j++;
473
+ }
474
+ meta.WriteUint7(j);
475
+ return [meta, out, out.length];
476
+ }
477
+ if (nsym <= 16) {
478
+ // 4 bits per value
479
+ var out = new Buffer.allocUnsafe(Math.floor((len + 1) / 2));
480
+ for (var i = 0, j = 0; i < (len & ~1); i += 2, j++)
481
+ out[j] = (M[data[i + 0]] << 0) + (M[data[i + 1]] << 4);
482
+ if (i < len)
483
+ out[j++] = M[data[i++]];
484
+ meta.WriteUint7(j);
485
+ return [meta, out, out.length];
486
+ }
487
+ // Otherwise an expensive NOP
488
+ meta.WriteUint7(data.length);
489
+ return [meta, data, data.length];
490
+ }
491
+ //----------------------------------------------------------------------
492
+ // STRIPE method
493
+ encodeStripe(hdr, src, N) {
494
+ if (N == 0)
495
+ N = 4; // old default
496
+ // Split into multiple streams
497
+ var part = new Array(N);
498
+ var ulen = new Array(N);
499
+ for (var s = 0; s < N; s++) {
500
+ ulen[s] = Math.floor(src.length / N) + (src.length % N > s);
501
+ part[s] = new Array(ulen[s]);
502
+ }
503
+ for (var x = 0, i = 0; i < src.length; i += N, x++) {
504
+ for (var j = 0; j < N; j++)
505
+ if (x < part[j].length)
506
+ part[j][x] = src[i + j];
507
+ }
508
+ // Compress each part
509
+ var comp = new Array(N);
510
+ var total = 0;
511
+ for (var s = 0; s < N; s++) {
512
+ // Example: try O0 and O1 and choose best
513
+ var comp0 = this.encode(part[s], 0);
514
+ var comp1 = this.encode(part[s], 1);
515
+ comp[s] = comp1.length < comp0.length ? comp1 : comp0;
516
+ total += comp[s].length;
517
+ }
518
+ // Serialise
519
+ var out = new IOStream('', 0, total + 5 * N + 1);
520
+ out.WriteByte(N);
521
+ for (var s = 0; s < N; s++)
522
+ out.WriteUint7(comp[s].length);
523
+ for (var s = 0; s < N; s++)
524
+ out.WriteData(comp[s], comp[s].length);
525
+ return out.buf.slice(0, out.buf.pos);
526
+ }
527
+ decodeStripe(stream, len) {
528
+ var N = stream.ReadByte();
529
+ // Retrieve lengths
530
+ var clen = new Array(N);
531
+ var ulen = new Array(N);
532
+ for (var j = 0; j < N; j++)
533
+ clen[j] = stream.ReadUint7();
534
+ // Decode streams
535
+ var T = new Array(N);
536
+ for (var j = 0; j < N; j++) {
537
+ ulen[j] = Math.floor(len / N) + (len % N > j);
538
+ T[j] = this.decodeStream(stream, ulen[j]);
539
+ }
540
+ // Transpose
541
+ var out = new Buffer.allocUnsafe(len);
542
+ for (var j = 0; j < N; j++) {
543
+ for (var i = 0; i < ulen[j]; i++) {
544
+ out[i * N + j] = T[j][i];
545
+ }
546
+ }
547
+ return out;
548
+ }
549
+ //----------------------------------------------------------------------
550
+ // Cat method
551
+ decodeCat(stream, len) {
552
+ var out = new Buffer.allocUnsafe(len);
553
+ for (var i = 0; i < len; i++)
554
+ out[i] = stream.ReadByte();
555
+ return out;
556
+ }
557
+ };
558
+ //# sourceMappingURL=arith_gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arith_gen.js","sourceRoot":"","sources":["../../src/htscodecs/arith_gen.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export = RangeCoder;
2
+ declare class RangeCoder {
3
+ constructor(src: any);
4
+ low: number;
5
+ range: number;
6
+ code: number;
7
+ FFnum: number;
8
+ carry: number;
9
+ cache: number;
10
+ RangeStartDecode(src: any): void;
11
+ RangeGetFrequency(tot_freq: any): number;
12
+ RangeDecode(src: any, sym_low: any, sym_freq: any, tot_freq: any): void;
13
+ RangeShiftLow(dst: any): void;
14
+ RangeEncode(dst: any, sym_low: any, sym_freq: any, tot_freq: any): void;
15
+ RangeFinishEncode(dst: any): void;
16
+ }