2015-01-14 64 views
0

decoding entropy encoded DC values in JPEG(或entropy encoded prediction differences in lossless JPEG),我如何區分1位已填充填充標記之前的一個字節和霍夫曼編碼值?處理填充/東西位熵編碼JPEG

例如,如果我看到:

0xAF 0xFF 0xD9 

,我已經消耗位[0xA],我怎麼能知道如果下一個0xF是填充或應該被解碼?

這是從JPEG規格:

F.1.2.3字節填充

爲了提供用於其可以位於在上述壓縮圖像數據,而無需解碼標記代碼 提供代碼空間, 使用字節填充。

無論何時,在正常編碼過程中,在代碼字符串中創建了字節值X'FF',則在代碼字符串中填充一個X'00'字節爲 。如果在「0xFFFF」字節之後檢測到X'00'字節,則解碼器必須丟棄它。如果該字節不爲零,則檢測到標記 ,並且應解釋爲完成掃描解碼所需的 範圍。

標記 的字節對齊是通過用1位填充不完整的字節來實現的。如果使用1位的填充產生一個X'FF'值,則在添加 標記之前填充零字節。

回答

1

對於壓縮數據流中的FF值只有兩種可能性。

  1. 重新啓動標記;或者
  2. FF00代表FF。

如果您正在解碼一個流,您將從重啓時間間隔知道何時需要重啓標記。當您在解碼的位置點擊重新開始標記時,您會丟棄當前字節中的剩餘位。

+0

如果我在點擊重新開始標記之前擊中了EOI(0xFF,0xD9),怎麼辦? –

+0

如果您在未解碼所有MCU的情況下進入EOI市場,則數據有問題。 – user3344003

+0

[這表示](https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure)使用「DRI」是可選的。 –