def jpeg.mcus
gralha-jpeg-decode@0.1.0.1 · jpeg.bend:475
import gralha-jpeg-decode@0.1.0.1/jpeg.bend as Jpeg
import Base
import gralha-text-scan@0.1.0.1/scan.bend as U
475def jpeg.mcus(n: Nat, +index: U32, +cols: U32, +single: Bool, +tables: List<&2, JPEGHuff>, +interval: U32, +scan: JPEGScan) -> JPEGScan:
476 match n:
477 case 0n: scan
478 case 1n+d:
479 +reset = U32.is_gt(interval, 0) && U32.is_gt(index, 0) && U32.is_eq((index % interval : U32), 0)
480 +ready = U.branch(JPEGScan, reset, _ => jpeg.restart(scan, (208 + (index / interval - 1) % 8 : U32)), _ => scan)
481 jpeg.scan.active(ready, cs => input => jpeg.scan.next(jpeg.mcu(cs, tables, single, (index % cols : U32), (index / cols : U32), input), parts => decoded => jpeg.mcus(d, U32.inc(index), cols, single, tables, interval, JPEGScan{parts, decoded})))