Lines Matching refs:dist
26 int ZopfliGetDistExtraBits(int dist) {
28 if (dist < 5) return 0;
29 return (31 ^ __builtin_clz(dist - 1)) - 1; /* log2(dist - 1) - 1 */
31 if (dist < 5) return 0;
32 else if (dist < 9) return 1;
33 else if (dist < 17) return 2;
34 else if (dist < 33) return 3;
35 else if (dist < 65) return 4;
36 else if (dist < 129) return 5;
37 else if (dist < 257) return 6;
38 else if (dist < 513) return 7;
39 else if (dist < 1025) return 8;
40 else if (dist < 2049) return 9;
41 else if (dist < 4097) return 10;
42 else if (dist < 8193) return 11;
43 else if (dist < 16385) return 12;
48 int ZopfliGetDistExtraBitsValue(int dist) {
50 if (dist < 5) {
53 int l = 31 ^ __builtin_clz(dist - 1); /* log2(dist - 1) */
54 return (dist - (1 + (1 << l))) & ((1 << (l - 1)) - 1);
57 if (dist < 5) return 0;
58 else if (dist < 9) return (dist - 5) & 1;
59 else if (dist < 17) return (dist - 9) & 3;
60 else if (dist < 33) return (dist - 17) & 7;
61 else if (dist < 65) return (dist - 33) & 15;
62 else if (dist < 129) return (dist - 65) & 31;
63 else if (dist < 257) return (dist - 129) & 63;
64 else if (dist < 513) return (dist - 257) & 127;
65 else if (dist < 1025) return (dist - 513) & 255;
66 else if (dist < 2049) return (dist - 1025) & 511;
67 else if (dist < 4097) return (dist - 2049) & 1023;
68 else if (dist < 8193) return (dist - 4097) & 2047;
69 else if (dist < 16385) return (dist - 8193) & 4095;
70 else return (dist - 16385) & 8191;
74 int ZopfliGetDistSymbol(int dist) {
76 if (dist < 5) {
77 return dist - 1;
79 int l = (31 ^ __builtin_clz(dist - 1)); /* log2(dist - 1) */
80 int r = ((dist - 1) >> (l - 1)) & 1;
84 if (dist < 193) {
85 if (dist < 13) { /* dist 0..13. */
86 if (dist < 5) return dist - 1;
87 else if (dist < 7) return 4;
88 else if (dist < 9) return 5;
90 } else { /* dist 13..193. */
91 if (dist < 17) return 7;
92 else if (dist < 25) return 8;
93 else if (dist < 33) return 9;
94 else if (dist < 49) return 10;
95 else if (dist < 65) return 11;
96 else if (dist < 97) return 12;
97 else if (dist < 129) return 13;
101 if (dist < 2049) { /* dist 193..2049. */
102 if (dist < 257) return 15;
103 else if (dist < 385) return 16;
104 else if (dist < 513) return 17;
105 else if (dist < 769) return 18;
106 else if (dist < 1025) return 19;
107 else if (dist < 1537) return 20;
109 } else { /* dist 2049..32768. */
110 if (dist < 3073) return 22;
111 else if (dist < 4097) return 23;
112 else if (dist < 6145) return 24;
113 else if (dist < 8193) return 25;
114 else if (dist < 12289) return 26;
115 else if (dist < 16385) return 27;
116 else if (dist < 24577) return 28;