From b1d111d1bf8db042413152d49ba021494894218c Mon Sep 17 00:00:00 2001 From: Ryan Oldenburg Date: Wed, 25 May 2022 22:17:41 -0500 Subject: [PATCH] getBits --- src/pixie/fileformats/jpeg.nim | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/pixie/fileformats/jpeg.nim b/src/pixie/fileformats/jpeg.nim index d30c619..1f4418c 100644 --- a/src/pixie/fileformats/jpeg.nim +++ b/src/pixie/fileformats/jpeg.nim @@ -547,17 +547,16 @@ proc getBitsAsSignedInt(state: var DecoderState, n: int): int = state.bitsBuffered -= n result = k.int + (biases[n] and (not sign)) -proc getBitsAsUnsignedInt(state: var DecoderState, n: int): int = +proc getBits(state: var DecoderState, n: int): int = ## Get n number of bits as a unsigned integer. if n notin 0 .. 16: failInvalid() if state.bitsBuffered < n: state.fillBitBuffer() - var k = lrot(state.bitBuffer, n) + let k = lrot(state.bitBuffer, n) state.bitBuffer = k and (not bitMasks[n]) - k = k and bitMasks[n] + result = (k and bitMasks[n]).int state.bitsBuffered -= n - return k.int proc decodeRegularBlock( state: var DecoderState, component: int, data: var array[64, int16] @@ -642,7 +641,7 @@ proc decodeProgressiveContinuationBlock( if r < 15: state.eobRun = 1 shl r if r != 0: - state.eobRun += state.getBitsAsUnsignedInt(r) + state.eobRun += state.getBits(r) dec state.eobRun break k += 16 @@ -681,7 +680,7 @@ proc decodeProgressiveContinuationBlock( if r < 15: state.eobRun = (1 shl r) - 1 if r != 0: - state.eobRun += state.getBitsAsUnsignedInt(r) + state.eobRun += state.getBits(r) r = 64 # force end of block else: discard