【问题标题】:JPG huffman DECODE stucksJPG 霍夫曼解码卡住
【发布时间】:2018-08-02 09:55:12
【问题描述】:

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

7F FF 00 61

FF 00 => FF

7F FF 61

二进制代码

0111 1111 1111 1111 0110 0001

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

【问题讨论】:

  • 什么功能?谁写的?进入无限循环的霍夫曼解码函数有一个错误。它应该总是解码或报告错误。
  • 我希望他没有使用我的 JPEG 源代码。 :-)

标签: jpeg huffman-code


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多