MCPcopy Create free account
hub / github.com/hoothin/UserScripts / scan_tree

Function scan_tree

Picviewer CE+/Picviewer CE+.user.js:11124–11183  ·  view source on GitHub ↗
(s, tree, max_code)

Source from the content-addressed store, hash-verified

11122 * in the bit length tree.
11123 */
11124function scan_tree(s, tree, max_code)
11125// deflate_state *s;
11126// ct_data *tree; /* the tree to be scanned */
11127// int max_code; /* and its largest code of non zero frequency */
11128{
11129 var n; /* iterates over all tree elements */
11130 var prevlen = -1; /* last emitted length */
11131 var curlen; /* length of current code */
11132
11133 var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */
11134
11135 var count = 0; /* repeat count of the current code */
11136 var max_count = 7; /* max repeat count */
11137 var min_count = 4; /* min repeat count */
11138
11139 if (nextlen === 0) {
11140 max_count = 138;
11141 min_count = 3;
11142 }
11143 tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */
11144
11145 for (n = 0; n <= max_code; n++) {
11146 curlen = nextlen;
11147 nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;
11148
11149 if (++count < max_count && curlen === nextlen) {
11150 continue;
11151
11152 } else if (count < min_count) {
11153 s.bl_tree[curlen * 2]/*.Freq*/ += count;
11154
11155 } else if (curlen !== 0) {
11156
11157 if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
11158 s.bl_tree[REP_3_6 * 2]/*.Freq*/++;
11159
11160 } else if (count <= 10) {
11161 s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;
11162
11163 } else {
11164 s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;
11165 }
11166
11167 count = 0;
11168 prevlen = curlen;
11169
11170 if (nextlen === 0) {
11171 max_count = 138;
11172 min_count = 3;
11173
11174 } else if (curlen === nextlen) {
11175 max_count = 6;
11176 min_count = 3;
11177
11178 } else {
11179 max_count = 7;
11180 min_count = 4;
11181 }

Callers 1

build_bl_treeFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected