处理填充/填充位熵编码JPEG

3
解码JPEG中熵编码的DC值(或无损JPEG中的熵编码预测差异)时,我该如何区分填充字节和Huffman编码值之间的1位?
例如,如果我看到:
0xAF 0xFF 0xD9

我已经使用了[0xA]中的位,如何判断下一个0xF是填充还是应该解码?
这是来自JPEG规范的内容:
F.1.2.3字节填充
为了为可以在压缩图像数据中定位的标记代码提供编码空间,使用字节填充。
在正常编码过程中,每当创建代码字符串中的字节值X'FF'时,就会将X'00'字节填充到代码字符串中。如果在X'FF'字节之后检测到X'00'字节,则解码器必须丢弃它。如果字节不为零,则已检测到标记,并应根据需要对其进行解释以完成扫描的解码。
通过使用1位填充不完整的字节来实现标记的字节对齐。如果使用1位填充创建X'FF'值,则在添加标记之前填充零字节。
1个回答

2

在压缩数据流中,FF值只有两种可能性。

  1. 重启标记;或
  2. 表示FF的FF00。

如果您正在解码流,则可以从重启间隔中知道何时期望重启标记。当您到达解码中应找到重启标记的点时,应丢弃当前字节中剩余的位。


如果我在撞到重启标记之前击中 EOI (0xFF,0xD9) 怎么办? - Alex Rothberg
如果您在未解码所有MCU的情况下进入EOI市场,则数据可能存在问题。 - user3344003
这表明使用 DRI 是可选的。 - Alex Rothberg
1
这是关于编程的内容,翻译成中文如下:在没有DRI标记的情况下,你唯一需要跳过字节开头的位的时间是在扫描结束时。 - user3344003

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接