JPG 霍夫曼解码器

JPG huffman DECODE stucks

我正在尝试解码 JPG 文件,整个 header 部分已正确读取。在读取照片 body 本身(SOS,0xFFDA)的过程中,在某个时刻,在霍夫曼 table 中寻找对应关系的函数进入无限循环。如果您在十六进制编辑器中查看该文件,您可以在错误位置找到以下字节序列:

7F FF 00 61

FF 00 => FF

7F FF 61

二进制代码

0111 1111 1111 1111 0110 0001

第一位已经被过去的MCU使用了,现在是连续15'ones'然后归零。在对应的霍夫曼table中,最大编码为8个1和1个0。我得出的结论是字节 7F 直到最后才被 1 填充。但这不是文件的结尾。我怎样才能知道什么时候需要跳过一个字节,什么时候不需要?

解码AC系数的算法不是很清楚。我将循环条件从 (index != 63) 更改为 (index <= 63) 因为 EOB 命中了 MCU 的第 64 个元素并且一切都开始工作了。 https://www.w3.org/Graphics/JPEG/itu-t81.pdf(第 106 页)