def jpeg.progressive.refine.symbol
gralha-jpeg-decode@0.1.0.1 · jpeg.bend:331
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
import gralha-bytes@0.1.0.1/bytes.bend as Bin
331def jpeg.progressive.refine.symbol(read: JPEGRead, +index: U32, +end: U32, +offset: U32, +p1: U32, +coefficients: Bin.Bytes, +predictor: U32) -> JPEGRefined:
332 JPEGRead{symbol, stream} = read
333 +rs = symbol
334 +input = stream
335 +run = (rs / 16 : U32)
336 +count = (rs % 16 : U32)
337 +ok = jpeg.stream.valid(input) && U32.is_le(count, 1)
338 U.branch(JPEGRefined, Bool.not(ok), _ => JPEGRefined{U32.inc(end), JPEGBlock{jpeg.stream.invalid(input), coefficients, predictor}},
339 _ => U.branch(JPEGRefined, U32.is_eq(count, 1), _ => jpeg.progressive.refine.fresh(jpeg.bits(input, 1), index, end, run, offset, p1, coefficients, predictor),
340 _ => U.branch(JPEGRefined, U32.is_eq(run, 15), _ => jpeg.progressive.walk(index, end, 16, 0, offset, p1, JPEGBlock{input, coefficients, predictor}),
341 _ => jpeg.progressive.refine.eob(jpeg.progressive.eob(jpeg.bits(input, run), run, coefficients, predictor, 1), index, end, offset, p1))))
342
343@unsafe