直りま
せんでした・・・・
でも、進展はありました^^
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から続きの処理をします。