efront 4.29.1 → 4.30.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/#/345/233/275/351/231/205/345/214/226.yml +9 -0
- package/apps/pivot/main.js +2 -1
- package/coms/compile/Javascript.js +4 -0
- package/coms/compile/Javascript_test.js +3 -2
- package/coms/compile/Program.js +16 -2
- package/coms/compile/common.js +8 -20
- package/coms/compile/common_test.js +1 -0
- package/coms/docs/helps.js +1 -0
- package/coms/kugou/krc.js +3 -2
- package/coms/kugou/musicList.js +9 -0
- package/coms/zimoli/hookmedia.js +29 -0
- package/coms/zimoli/vbox.js +7 -2
- package/package.json +1 -1
- package/public/efront.js +1 -1
- package/public//346/226/207/344/273/266/347/263/273/347/273/237//344/270/273/351/241/265.jsp +2 -2
- package/coms/basic/concatByte.js +0 -15
- package/coms/basic/decodePack.js +0 -203
- package/coms/basic/decodeRange.js +0 -68
- package/coms/basic/encodePack.h +0 -9
- package/coms/basic/encodePack.js +0 -301
- package/coms/basic/encodeRange.h +0 -17
- package/coms/basic/encodeRange.js +0 -107
- package/coms/basic/encodeRange_test.js +0 -40
- package/coms/basic/readBinary.asm +0 -77
- package/coms/basic/readBinary.js +0 -31
- package/coms/basic/writeBinary.js +0 -37
package/coms/basic/concatByte.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
function concatTypedArray(buffs) {
|
|
2
|
-
var total = 0;
|
|
3
|
-
buffs.forEach(a => total += a.byteLength || a.length);
|
|
4
|
-
var res = new Uint8Array(total);
|
|
5
|
-
var offset = 0, inc = 0;
|
|
6
|
-
while (offset < total) {
|
|
7
|
-
var b = buffs[inc++];
|
|
8
|
-
if (b.buffer) b = new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
|
|
9
|
-
res.set(b, offset);
|
|
10
|
-
offset += b.length;
|
|
11
|
-
}
|
|
12
|
-
return res;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
module.exports = concatTypedArray;
|
package/coms/basic/decodePack.js
DELETED
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
"include ./encodePack.h";
|
|
2
|
-
var readBinary = require("./readBinary");
|
|
3
|
-
var decodeRange = require("./decodeRange");
|
|
4
|
-
function decodeFlat(buff, start = 0) {
|
|
5
|
-
var tcount = buff[start];
|
|
6
|
-
var total = 0;
|
|
7
|
-
var t = buff[start + 1] & 0x1f;
|
|
8
|
-
var bitoffset = start + 2 << 3, inc = 0;
|
|
9
|
-
var counts = [];
|
|
10
|
-
while (inc < tcount) {
|
|
11
|
-
var v = readBinary(buff, bitoffset, t);
|
|
12
|
-
bitoffset += t;
|
|
13
|
-
var k = readBinary(buff, bitoffset, t);
|
|
14
|
-
bitoffset += t;
|
|
15
|
-
counts.unshift(k, v);
|
|
16
|
-
total += v;
|
|
17
|
-
inc++;
|
|
18
|
-
}
|
|
19
|
-
var rest = new Array(total);
|
|
20
|
-
while (counts.length) {
|
|
21
|
-
var t = counts[counts.length - 2];
|
|
22
|
-
var n = readBinary(buff, bitoffset, t);
|
|
23
|
-
rest[--total] = [n, t];
|
|
24
|
-
bitoffset += t;
|
|
25
|
-
if (--counts[counts.length - 1] <= 0) {
|
|
26
|
-
counts.pop();
|
|
27
|
-
counts.pop();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
rest.offset = bitoffset;
|
|
31
|
-
return rest;
|
|
32
|
-
}
|
|
33
|
-
function fromhuff(buff, result = [], scanstart, type) {
|
|
34
|
-
type = type === repeat_huffman;
|
|
35
|
-
var huf = decodeFlat(buff, scanstart);
|
|
36
|
-
var byteoffset = huf.offset + 7 >> 3;
|
|
37
|
-
var map = [];
|
|
38
|
-
var codeend = byteoffset + (huf.length - 1);
|
|
39
|
-
while (byteoffset < codeend) {
|
|
40
|
-
var [k, v] = huf.shift();
|
|
41
|
-
if (!map[v]) {
|
|
42
|
-
map[v] = {};
|
|
43
|
-
}
|
|
44
|
-
if (type) {
|
|
45
|
-
if (buff[byteoffset] >= 128) {
|
|
46
|
-
codeend++;
|
|
47
|
-
map[v][k] = buff[byteoffset++] - 128 << 8 | buff[byteoffset++];
|
|
48
|
-
} else {
|
|
49
|
-
map[v][k] = buff[byteoffset++];
|
|
50
|
-
}
|
|
51
|
-
} else {
|
|
52
|
-
map[v][k] = buff[byteoffset++];
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
var bitoffset = byteoffset << 3;
|
|
56
|
-
codeend = buff.length << 3;
|
|
57
|
-
var endflag = huf[huf.length - 1];
|
|
58
|
-
var t = 1, s = endflag[1];
|
|
59
|
-
do {
|
|
60
|
-
if (!(t in map)) {
|
|
61
|
-
continue;
|
|
62
|
-
}
|
|
63
|
-
var sum = readBinary(buff, bitoffset, t);
|
|
64
|
-
if (sum in map[t]) {
|
|
65
|
-
bitoffset += t;
|
|
66
|
-
result.push(map[t][sum]);
|
|
67
|
-
t = 0;
|
|
68
|
-
}
|
|
69
|
-
} while (bitoffset < codeend && ++t <= s);
|
|
70
|
-
|
|
71
|
-
if (sum !== endflag[0]) {
|
|
72
|
-
console.log(
|
|
73
|
-
"result:", result,
|
|
74
|
-
"\r\ndataend:", codeend,
|
|
75
|
-
"\r\nendflag:", endflag,
|
|
76
|
-
"\r\ncodefound:", sum,
|
|
77
|
-
"\r\nbitwidth:", t,
|
|
78
|
-
"\r\ncodemap:", map
|
|
79
|
-
);
|
|
80
|
-
throw console.warn(i18n`数据异常!`);
|
|
81
|
-
}
|
|
82
|
-
bitoffset = bitoffset + endflag[1];
|
|
83
|
-
return bitoffset;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
function inflate(buff) {
|
|
87
|
-
var result = [];
|
|
88
|
-
for (var cx = 0, dx = buff.length; cx < dx; cx++) {
|
|
89
|
-
var b = buff[cx];
|
|
90
|
-
if (b < 256) {
|
|
91
|
-
result.push(b);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
b = ((b & 0x7f) << 8 | buff[++cx]) + 1;
|
|
95
|
-
var c = buff[++cx] << 9 | buff[++cx] << 4 | buff[++cx];
|
|
96
|
-
var s = result.length - c - b;
|
|
97
|
-
var code = result.slice(s, s + b);
|
|
98
|
-
while (code.length) {
|
|
99
|
-
result.push.apply(result, code.splice(0, 1024));
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return result;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
function repeat(a, count) {
|
|
107
|
-
var result = [];
|
|
108
|
-
while (count-- > 0) {
|
|
109
|
-
result.push(a);
|
|
110
|
-
}
|
|
111
|
-
return new Uint8Array(result);
|
|
112
|
-
}
|
|
113
|
-
function readint(buff) {
|
|
114
|
-
var n = 0;
|
|
115
|
-
for (var cx = 0, dx = buff.length; cx < dx; cx++) {
|
|
116
|
-
var b = buff[cx];
|
|
117
|
-
n = n * 256 + b;
|
|
118
|
-
}
|
|
119
|
-
return n;
|
|
120
|
-
}
|
|
121
|
-
var concatByte = require("./concatByte");
|
|
122
|
-
function unpack(buff) {
|
|
123
|
-
if (buff.length < 2) return buff;
|
|
124
|
-
var result = [];
|
|
125
|
-
var byteoffset = 0;
|
|
126
|
-
do {
|
|
127
|
-
var type = buff[byteoffset + 1] >> 5;
|
|
128
|
-
switch (type) {
|
|
129
|
-
case normal_huffman:
|
|
130
|
-
var res = [];
|
|
131
|
-
var bitoffset = fromhuff(buff, res, byteoffset);
|
|
132
|
-
result.push(new Uint8Array(res));
|
|
133
|
-
byteoffset = bitoffset + 7 >> 3;
|
|
134
|
-
break;
|
|
135
|
-
case repeat_huffman:
|
|
136
|
-
var res = [];
|
|
137
|
-
var bitoffset = fromhuff(buff, res, byteoffset, type);
|
|
138
|
-
res = new Uint16Array(res);
|
|
139
|
-
res = inflate(res);
|
|
140
|
-
res = new Uint8Array(res);
|
|
141
|
-
result.push(res);
|
|
142
|
-
var tempoffset = bitoffset + 7 >> 3;
|
|
143
|
-
byteoffset = tempoffset;
|
|
144
|
-
break;
|
|
145
|
-
case normal_repeat1:
|
|
146
|
-
var count = buff[byteoffset + 1] & 0x1f;
|
|
147
|
-
var res = repeat(buff[byteoffset], count);
|
|
148
|
-
result.push(res);
|
|
149
|
-
byteoffset += 2;
|
|
150
|
-
break;
|
|
151
|
-
case normal_repeat2:
|
|
152
|
-
var count = (buff[byteoffset + 1] & 0x1f) << 8 | buff[byteoffset + 2];
|
|
153
|
-
var res = repeat(buff[byteoffset], count);
|
|
154
|
-
result.push(res);
|
|
155
|
-
byteoffset += 3;
|
|
156
|
-
break;
|
|
157
|
-
case normal_nocode1:
|
|
158
|
-
var count = buff[byteoffset] << 5 | buff[byteoffset + 1] & 0x1f;
|
|
159
|
-
byteoffset += 2;
|
|
160
|
-
var res = buff.slice(byteoffset, byteoffset + count);
|
|
161
|
-
result.push(res);
|
|
162
|
-
byteoffset += count;
|
|
163
|
-
break;
|
|
164
|
-
case normal_nocode2:
|
|
165
|
-
var count = buff[byteoffset] << 13 | buff[byteoffset + 1] << 8 & 0x1f00 | buff[byteoffset + 2];
|
|
166
|
-
byteoffset += 3;
|
|
167
|
-
var res = buff.slice(byteoffset, byteoffset + count);
|
|
168
|
-
result.push(res);
|
|
169
|
-
byteoffset += count;
|
|
170
|
-
break;
|
|
171
|
-
case normal_nocode3:
|
|
172
|
-
var count = buff[byteoffset] << 21 | buff[byteoffset + 1] << 16 & 0x1f0000 | buff[byteoffset + 2] << 8 | buff[byteoffset + 3];
|
|
173
|
-
byteoffset += 4;
|
|
174
|
-
var res = buff.slice(byteoffset, byteoffset + count);
|
|
175
|
-
result.push(res);
|
|
176
|
-
byteoffset += count;
|
|
177
|
-
break;
|
|
178
|
-
case other_compress:
|
|
179
|
-
var size = buff[byteoffset + 1] & 0x1f;
|
|
180
|
-
var type1 = buff[byteoffset];
|
|
181
|
-
var count = buff.slice(byteoffset += 2, byteoffset += size);
|
|
182
|
-
count = readint(count);
|
|
183
|
-
switch (type1) {
|
|
184
|
-
case range_compress:
|
|
185
|
-
var res = buff.slice(byteoffset, byteoffset += count);
|
|
186
|
-
res = decodeRange(res);
|
|
187
|
-
res = new Uint16Array(res);
|
|
188
|
-
res = inflate(res);
|
|
189
|
-
res = new Uint8Array(res);
|
|
190
|
-
result.push(res);
|
|
191
|
-
break;
|
|
192
|
-
default:
|
|
193
|
-
throw new Error(i18n`编码异常!`);
|
|
194
|
-
}
|
|
195
|
-
break;
|
|
196
|
-
default:
|
|
197
|
-
throw new Error(i18n`数据异常!`);
|
|
198
|
-
}
|
|
199
|
-
} while (byteoffset + 1 < buff.length);
|
|
200
|
-
result = concatByte(result);
|
|
201
|
-
return result;
|
|
202
|
-
}
|
|
203
|
-
module.exports = unpack;
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"include ./encodeRange.h";
|
|
2
|
-
var R = R_max,
|
|
3
|
-
L = 0,
|
|
4
|
-
d = 0;
|
|
5
|
-
var __buff;
|
|
6
|
-
var __input = 0;
|
|
7
|
-
|
|
8
|
-
function init() {
|
|
9
|
-
L = 0;
|
|
10
|
-
R = R_max;
|
|
11
|
-
d = 0;
|
|
12
|
-
var i = code_bits + 1;
|
|
13
|
-
do {
|
|
14
|
-
i -= 8;
|
|
15
|
-
d = shl(d, 8) | input();
|
|
16
|
-
} while (i > 0);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
function input() {
|
|
20
|
-
if (__input >= __buff.length) return 0;
|
|
21
|
-
return __buff[__input++];
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function guess(T) {// DecodeTarget
|
|
25
|
-
var code = T;
|
|
26
|
-
code = shr(d, 1);
|
|
27
|
-
R = R / T | 0;
|
|
28
|
-
var result;
|
|
29
|
-
if (code < L) {
|
|
30
|
-
result = (code + R_max - L) / R | 0;
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
result = (code - L) / R | 0;
|
|
34
|
-
}
|
|
35
|
-
return result;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function decode(cf, f) {
|
|
39
|
-
L += cf * R;
|
|
40
|
-
R = f * R;
|
|
41
|
-
while (R <= R_min) {
|
|
42
|
-
L = shl(L, 8) & R_max - 1;
|
|
43
|
-
R = shl(R, 8);
|
|
44
|
-
d = shl(d, 8) | input();
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
function main(buff) {
|
|
49
|
-
var [total, offset] = readLEB128(buff, 0);
|
|
50
|
-
__input = offset;
|
|
51
|
-
__buff = buff;
|
|
52
|
-
init();
|
|
53
|
-
var tree = new BitTree(symbol_no);
|
|
54
|
-
var f, cf;
|
|
55
|
-
var result = [];
|
|
56
|
-
while (result.length < total) {
|
|
57
|
-
var g = guess(tree.total);
|
|
58
|
-
var i = tree.find2(g);
|
|
59
|
-
var cf = tree.sumTo(i);
|
|
60
|
-
var f = tree.counts[i];
|
|
61
|
-
decode(cf, f);
|
|
62
|
-
tree.count(i);
|
|
63
|
-
result.push(i);
|
|
64
|
-
}
|
|
65
|
-
__buff = null;
|
|
66
|
-
return result;
|
|
67
|
-
}
|
|
68
|
-
module.exports = main;
|
package/coms/basic/encodePack.h
DELETED
package/coms/basic/encodePack.js
DELETED
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
"include ./encodePack.h";
|
|
2
|
-
var getIndexFromOrderedArray = require("./getIndexFromOrderedArray");
|
|
3
|
-
var saveToOrderedArray = require("./saveToOrderedArray");
|
|
4
|
-
var writeBinary = require("./writeBinary");
|
|
5
|
-
var encodeRange = require("./encodeRange");
|
|
6
|
-
var createHuffman = function (counts) {
|
|
7
|
-
var rest = [];
|
|
8
|
-
var counts = [].slice.call(counts);
|
|
9
|
-
do {
|
|
10
|
-
var a = counts.pop();
|
|
11
|
-
var b = counts.pop();
|
|
12
|
-
var p = [+a + +b];
|
|
13
|
-
if (!a.length) rest.unshift([0, p]);
|
|
14
|
-
else a[1] = p, a[0] = 0;
|
|
15
|
-
if (!b.length) rest.unshift([1, p]);
|
|
16
|
-
else b[1] = p, b[0] = 1;
|
|
17
|
-
saveToOrderedArray(counts, p, (a, b) => a >= b);
|
|
18
|
-
} while (counts.length > 1);
|
|
19
|
-
|
|
20
|
-
rest = rest.map(a => {
|
|
21
|
-
var sum = a[0];
|
|
22
|
-
var i = 1;
|
|
23
|
-
while (a[1] !== p) {
|
|
24
|
-
a = a[1];
|
|
25
|
-
sum |= a[0] << i++;
|
|
26
|
-
}
|
|
27
|
-
return [sum, i];
|
|
28
|
-
});
|
|
29
|
-
rest = rest.sort((a, b) => a[1] - b[1]);
|
|
30
|
-
return rest;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
function encodeFlat(rest) {
|
|
34
|
-
var countMap = {};
|
|
35
|
-
var dist = [];
|
|
36
|
-
rest = [].slice.call(rest);
|
|
37
|
-
rest.forEach(sum => {
|
|
38
|
-
sum = sum[1];
|
|
39
|
-
if (!countMap[sum]) countMap[sum] = 1;
|
|
40
|
-
else countMap[sum]++;
|
|
41
|
-
});
|
|
42
|
-
var max = 0, total = 0;
|
|
43
|
-
for (var k in countMap) {
|
|
44
|
-
var v = countMap[k];
|
|
45
|
-
k = +k;
|
|
46
|
-
if (k > max) max = k;
|
|
47
|
-
if (v > max) max = v;
|
|
48
|
-
total += k * v;
|
|
49
|
-
dist.push(+k, v);
|
|
50
|
-
}
|
|
51
|
-
var t = 1;
|
|
52
|
-
while (max >> t) t++;
|
|
53
|
-
var buff = new Uint8Array(t * dist.length + total + 23 >> 3);
|
|
54
|
-
buff[0] = dist.length >> 1;
|
|
55
|
-
buff[1] = t;
|
|
56
|
-
var offset = 16;
|
|
57
|
-
while (dist.length > 0) {
|
|
58
|
-
writeBinary(buff, offset, t, dist.pop());
|
|
59
|
-
offset += t;
|
|
60
|
-
}
|
|
61
|
-
while (rest.length) {
|
|
62
|
-
var s = rest.pop();
|
|
63
|
-
writeBinary(buff, offset, s[1], s[0]);
|
|
64
|
-
offset += s[1];
|
|
65
|
-
}
|
|
66
|
-
return buff;
|
|
67
|
-
}
|
|
68
|
-
function tohuff(buff, result = [], type_limit) {
|
|
69
|
-
var a = new Uint32Array(type_limit);
|
|
70
|
-
for (var cx = 0, dx = buff.length; cx < dx; cx++) {
|
|
71
|
-
a[buff[cx]]++;
|
|
72
|
-
}
|
|
73
|
-
var b = new Uint32Array(type_limit);
|
|
74
|
-
for (var cx = 0, dx = b.length; cx < dx; cx++) {
|
|
75
|
-
b[cx] = cx;
|
|
76
|
-
}
|
|
77
|
-
b.sort(function (m, n) {
|
|
78
|
-
return a[n] - a[m];
|
|
79
|
-
});
|
|
80
|
-
var size = getIndexFromOrderedArray(b, 1, (m, n) => a[m] >= n, false);
|
|
81
|
-
if (a[b[size]] > 0) size++;
|
|
82
|
-
if (size + 1 > b.length) console.log(a.slice(420), buff.filter(a => a > 512), b.slice(420))
|
|
83
|
-
|
|
84
|
-
var c = new Uint32Array(b.buffer, 0, size + 1).map(_ => a[_]);
|
|
85
|
-
c = createHuffman(c);
|
|
86
|
-
var d = new Uint32Array(type_limit);
|
|
87
|
-
var f = [].slice.call(encodeFlat(c));
|
|
88
|
-
c.forEach((s, i) => {
|
|
89
|
-
if (type_limit > 258) {
|
|
90
|
-
if (b[i] < 128) {
|
|
91
|
-
f.push(b[i]);
|
|
92
|
-
} else {
|
|
93
|
-
f.push((b[i] >> 8) + 128, b[i] & 0xff);
|
|
94
|
-
}
|
|
95
|
-
} else {
|
|
96
|
-
f.push(b[i]);
|
|
97
|
-
}
|
|
98
|
-
a[b[i]] = s[0];
|
|
99
|
-
d[b[i]] = s[1];
|
|
100
|
-
});
|
|
101
|
-
if (type_limit > 258 && b[c.length - 1] >= 128) f.pop();
|
|
102
|
-
f.pop();
|
|
103
|
-
result.push.apply(result, f);
|
|
104
|
-
var bitoffset = result.length * 8;
|
|
105
|
-
buff.forEach(s => {
|
|
106
|
-
writeBinary(result, bitoffset, d[s], a[s]);
|
|
107
|
-
bitoffset += d[s];
|
|
108
|
-
});
|
|
109
|
-
var endflag = c[c.length - 1];
|
|
110
|
-
writeBinary(result, bitoffset, endflag[1], endflag[0]);
|
|
111
|
-
return bitoffset + endflag[1];
|
|
112
|
-
}
|
|
113
|
-
function scan(buff) {
|
|
114
|
-
var cache = [], cacheLength = 0, cacheLimit = 32768;
|
|
115
|
-
var writeCache = function (length) {
|
|
116
|
-
for (var cy = cx, dy = cx + length; cy < dy; cy++) {
|
|
117
|
-
var b = buff[cy] << 8 | buff[cy + 1] ^ buff[cy + 2];
|
|
118
|
-
if (cacheLength >= cacheLimit) {
|
|
119
|
-
var t = cy - cacheLength;
|
|
120
|
-
var a = buff[t++] << 8 | buff[t++] ^ buff[t];
|
|
121
|
-
cache[a].shift();
|
|
122
|
-
} else {
|
|
123
|
-
cacheLength++;
|
|
124
|
-
}
|
|
125
|
-
if (!cache[b]) cache[b] = [];
|
|
126
|
-
cache[b].push(cy);
|
|
127
|
-
}
|
|
128
|
-
};
|
|
129
|
-
var readCache = function () {
|
|
130
|
-
var sign = buff[cx] << 8 | buff[cx + 1] ^ buff[cx + 2];
|
|
131
|
-
if (!cache[sign]) return buff[cx];
|
|
132
|
-
var list = cache[sign];
|
|
133
|
-
var max_length = 2, match_position;
|
|
134
|
-
for (var cy = list.length - 1; cy > 0; cy--) {
|
|
135
|
-
var inc = list[cy];
|
|
136
|
-
for (var cz = 1, dz = Math.min(cx - inc, buff.length - cx); cz < dz; cz++) {
|
|
137
|
-
if (buff[cx + cz] !== buff[inc + cz]) break;
|
|
138
|
-
}
|
|
139
|
-
if (cz > max_length) {
|
|
140
|
-
max_length = cz;
|
|
141
|
-
match_position = inc;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
if (max_length > 2) {
|
|
145
|
-
sign = [max_length - 1, cx - match_position - max_length];
|
|
146
|
-
} else {
|
|
147
|
-
sign = buff[cx];
|
|
148
|
-
}
|
|
149
|
-
return sign;
|
|
150
|
-
};
|
|
151
|
-
var result = new Uint16Array(buff.length), result_index = 0;
|
|
152
|
-
for (var cx = 0, dx = buff.length; cx < dx; cx++) {
|
|
153
|
-
var b = readCache();
|
|
154
|
-
if (b.length) {
|
|
155
|
-
result[result_index++] = b[0] >> 8 | 0x100;
|
|
156
|
-
result[result_index++] = b[0] & 0xff;
|
|
157
|
-
result[result_index++] = b[1] >> 9;
|
|
158
|
-
result[result_index++] = b[1] >> 4 & 0x1f;
|
|
159
|
-
result[result_index++] = b[1] & 0xf;
|
|
160
|
-
writeCache(1 + b[0]);
|
|
161
|
-
cx += b[0];
|
|
162
|
-
} else {
|
|
163
|
-
result[result_index++] = b;
|
|
164
|
-
writeCache(1);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
return result.slice(0, result_index);
|
|
168
|
-
}
|
|
169
|
-
function repeat(buff, readstart = 0) {
|
|
170
|
-
var s = buff[readstart], f = [s], c = 0;
|
|
171
|
-
for (var cx = readstart + 1, dx = buff.length; cx < dx; cx++) {
|
|
172
|
-
if (buff[cx] !== s) break;
|
|
173
|
-
}
|
|
174
|
-
var length = cx - readstart;
|
|
175
|
-
length = length & 0x1fff;
|
|
176
|
-
if (length < 32) {
|
|
177
|
-
f[1] = normal_repeat1 << 5 | length;
|
|
178
|
-
} else {
|
|
179
|
-
f[1] = normal_repeat2 << 5 | length >> 8;
|
|
180
|
-
f[2] = length & 0xff;
|
|
181
|
-
}
|
|
182
|
-
f.byteoffset = cx;
|
|
183
|
-
return f;
|
|
184
|
-
}
|
|
185
|
-
var concatTypedArray = require("./concatByte");
|
|
186
|
-
|
|
187
|
-
function pack(buff) {
|
|
188
|
-
if (buff.length < 2) return buff;
|
|
189
|
-
var byteoffset = 0;
|
|
190
|
-
var samples = []; var count1 = 0, countp;
|
|
191
|
-
var tempoffset = byteoffset;
|
|
192
|
-
var result = [];
|
|
193
|
-
var reset = function () {
|
|
194
|
-
tempoffset = byteoffset;
|
|
195
|
-
samples = [];
|
|
196
|
-
count1 = 0;
|
|
197
|
-
countp = samples.length;
|
|
198
|
-
};
|
|
199
|
-
do {
|
|
200
|
-
var s = buff[tempoffset++];
|
|
201
|
-
var sl = samples.length;
|
|
202
|
-
saveToOrderedArray(samples, s);
|
|
203
|
-
if (sl === samples.length && tempoffset < buff.length && tempoffset - byteoffset < 8192 << 12) {
|
|
204
|
-
continue;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
switch (samples.length) {
|
|
208
|
-
case 1:
|
|
209
|
-
if (tempoffset - byteoffset > 8) {
|
|
210
|
-
var f = repeat(buff, byteoffset);
|
|
211
|
-
result.push(f);
|
|
212
|
-
byteoffset = f.byteoffset;
|
|
213
|
-
reset();
|
|
214
|
-
break;
|
|
215
|
-
}
|
|
216
|
-
default:
|
|
217
|
-
var length = tempoffset - byteoffset;
|
|
218
|
-
if (tempoffset >= buff.length || length > 8192 << 12) {
|
|
219
|
-
var res = [];
|
|
220
|
-
var _buff = buff.slice(byteoffset, byteoffset + length);
|
|
221
|
-
var _buff1 = scan(_buff);
|
|
222
|
-
var huffman_type = repeat_huffman;
|
|
223
|
-
var type_limit = 516;
|
|
224
|
-
if (_buff.length <= _buff1.length) {
|
|
225
|
-
type_limit = 258;
|
|
226
|
-
huffman_type = normal_huffman;
|
|
227
|
-
} else {
|
|
228
|
-
_buff = _buff1;
|
|
229
|
-
}
|
|
230
|
-
tohuff(_buff, res, type_limit);
|
|
231
|
-
res[1] |= huffman_type << 5;
|
|
232
|
-
result.push(res);
|
|
233
|
-
byteoffset = tempoffset;
|
|
234
|
-
reset();
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
} while (tempoffset < buff.length);
|
|
238
|
-
result = concatTypedArray(result);
|
|
239
|
-
return pack0(buff, result);
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
function pack0(buff, result) {
|
|
243
|
-
var length = buff.length;
|
|
244
|
-
if (length < 8192 && result.length - length > 2) {
|
|
245
|
-
result = concatTypedArray([
|
|
246
|
-
[length >> 5, normal_nocode1 << 5 | length & 0x1f],
|
|
247
|
-
buff
|
|
248
|
-
]);
|
|
249
|
-
}
|
|
250
|
-
else if (length < 8192 << 8 && result.length - length > 3) {
|
|
251
|
-
result = concatTypedArray([
|
|
252
|
-
[length >> 13, normal_nocode2 << 5 | length >> 8 & 0x1f, length & 0xff],
|
|
253
|
-
buff
|
|
254
|
-
]);
|
|
255
|
-
}
|
|
256
|
-
else if (length < 8192 << 16 && result.length - length > 4) {
|
|
257
|
-
result = concatTypedArray([
|
|
258
|
-
[length >> 21, normal_nocode3 << 5 | length >> 16 & 0x1f, length >> 8 & 0xff, length & 0xff],
|
|
259
|
-
buff
|
|
260
|
-
]);
|
|
261
|
-
}
|
|
262
|
-
return result;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
function int(n) {
|
|
266
|
-
var dist = [];
|
|
267
|
-
while (n > 0) {
|
|
268
|
-
dist.push(n & 0xff);
|
|
269
|
-
n = n / 256 | 0;
|
|
270
|
-
}
|
|
271
|
-
dist.reverse();
|
|
272
|
-
return dist;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
function pack2(buff) {
|
|
277
|
-
var result = [];
|
|
278
|
-
for (var cx = 0, dx = buff.length, bx = 32 * 1024 * 1024; cx < dx; cx += bx) {
|
|
279
|
-
var b = buff.slice(cx, cx + bx);
|
|
280
|
-
var b = scan(b);
|
|
281
|
-
var e = encodeRange(b);
|
|
282
|
-
var el = int(e.length);
|
|
283
|
-
result.push(concatTypedArray([
|
|
284
|
-
[
|
|
285
|
-
range_compress,
|
|
286
|
-
other_compress << 5 | el.length,
|
|
287
|
-
],
|
|
288
|
-
el, e]));
|
|
289
|
-
}
|
|
290
|
-
result = concatTypedArray(result);
|
|
291
|
-
return pack0(buff, result);
|
|
292
|
-
}
|
|
293
|
-
module.exports = function (buff, type) {
|
|
294
|
-
switch (type) {
|
|
295
|
-
case 1:
|
|
296
|
-
return pack(buff);
|
|
297
|
-
case 2:
|
|
298
|
-
return pack2(buff);
|
|
299
|
-
}
|
|
300
|
-
return pack2(buff);
|
|
301
|
-
};
|
package/coms/basic/encodeRange.h
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
const symbol_no = 512;
|
|
2
|
-
const eom = symbol_no;
|
|
3
|
-
const code_bits = 31;
|
|
4
|
-
const shift_bits = code_bits - 8; //shift_bits
|
|
5
|
-
const R_max = shl(1, code_bits);
|
|
6
|
-
const R_min = shl(1, shift_bits);
|
|
7
|
-
const max_freq = 0xffff;
|
|
8
|
-
function shl(a, n) {
|
|
9
|
-
a = a << n;
|
|
10
|
-
if (a < 0) {
|
|
11
|
-
a += 0x100000000;
|
|
12
|
-
}
|
|
13
|
-
return a;
|
|
14
|
-
}
|
|
15
|
-
function shr(a, n) {
|
|
16
|
-
return a >>> n;
|
|
17
|
-
}
|