208{
209 unsigned int i, j, b, cls, num;
210 size_t np;
213
214
215 while (ndata) {
217 ndata -= 17;
218 d = *data++;
220 cls = d >> 4; num = d & 0x0F;
224 for (np = i = 0; i < 16; i++) {
225 np += (pb[i] = *data++);
226 }
230 hc = 0;
231 for (j = i = 0; i < 16; i++) {
232 b = pb[i];
233 while (b--) ph[j++] = hc++;
234 hc <<= 1;
235 }
236
238 ndata -= np;
242 for (i = 0; i < np; i++) {
243 d = *data++;
244 if (!cls && d > 11)
return JDR_FMT1;
245 pd[i] = d;
246 }
247#if JD_FASTDECODE == 2
248 {
249 unsigned int span, td, ti;
252
253 if (cls) {
256 jd->hufflut_ac[num] = tbl_ac;
258 } else {
261 jd->hufflut_dc[num] = tbl_dc;
263 }
264 for (i = b = 0; b < HUFF_BIT; b++) {
265 for (j = pb[b]; j; j--) {
266 ti = ph[i] << (HUFF_BIT - 1 - b) & HUFF_MASK;
267 if (cls) {
268 td = pd[i++] | ((b + 1) << 8);
269 for (span = 1 << (HUFF_BIT - 1 - b); span; span--, tbl_ac[ti++] = (
uint16_t)td) ;
270 } else {
271 td = pd[i++] | ((b + 1) << 4);
272 for (span = 1 << (HUFF_BIT - 1 - b); span; span--, tbl_dc[ti++] = (
uint8_t)td) ;
273 }
274 }
275 }
276 jd->longofs[num][cls] = i;
277 }
278#endif
279 }
280
282}
static void * alloc_pool(JDEC *jd, size_t ndata) FL_NOEXCEPT
uint16_t * huffcode[2][2]
void * memset(void *s, int c, size_t n) FL_NOEXCEPT