JPG huffman DECODE卡住

时间:2018-08-02 09:55:13

标签: jpeg huffman-code

我正在尝试解码JPG文件,因此正确读取了整个标头部分。在某个时候读取照片本身(SOS,0xFFDA)的过程中,用于在霍夫曼表中查找对应关系的功能进入无限循环。如果在十六进制编辑器中查看文件,则可以在错误位置找到以下字节序列:

7F FF 00 61

FF 00 => FF

7F FF 61

以二进制代码表示的

0111 1111 1111 1111 0110 0001

过去的MCU已经使用了第一位,现在连续15个“ 1”,然后为零。在相应的霍夫曼表中,最大代码为8个1和一个零。我得出的结论是字节7F直到最后才被填充。但这不是文件的结尾。我该如何确定何时需要跳过一个字节,什么时候不需要?

1 个答案:

答案 0 :(得分:1)

解码AC系数的算法不是很清楚。我将循环条件从var newarr = []; for (var i = 0, l = arr.length; i < l; i++) { var keys = Object.keys(arr[i]); for (var j = 0, k = keys.length; j < k; j++) { newarr.push(arr[i][keys[j]]); } } console.log(newarr) 更改为(index != 63),因为EOB冲击了MCU的第64个元素,一切开始起作用。 https://www.w3.org/Graphics/JPEG/itu-t81.pdf(第106页) enter image description here