直りま

せんでした・・・・

でも、進展はありました^^

0xFF の後の 0x00 をスキップする処理がバグっており(汗
一度スキップしてしまうと、その後、永遠と1byte読み込むと1byteスキップするという、
マヌケな事になっていました。(アハハ

(フラグを立てて、0x00を華麗にスルーしたのは良いけれど、フラグ立てっぱなしで、スルーしまくり(笑))


テストデータ


修正前



修正後



この修正後のデータは、だいぶ、元の画像に近くなってきました☆
うっすらですが、前の画像の模様が見えます!!


まぁ、まだまだですよね(アハハ


                                                        • -

【豆知識】

JPEGにおいては、0xFF (2進数で表すと:11111111)という値は特別な値で、決められた所にした使用出来ません。
(0xFFは、マーカーというものの開始を表します。)

ここで、JPEGはデータをbit単位で圧縮しますので、

・・・001101110101010101・・・・と並んで行き、

時として

・・・11111111・・・・・ となってしまう事があります。

これが、運悪く、あるbyteの0番目から始まると、0xFF(11111111)となってしまいます。


そこで、圧縮データ中に偶然 0xFF が出来てしまった場合には、圧縮データとは関係なく、その次に 0x00 を入れて、
この 0xFF が偶然のものであるという事を示します。


そこで、デコーダーは、0xFFを発見したら、次のバイトが0x00なら、その0x00は存在しないものとして、
その次のbyteから続きの処理をします。