SOS (0xFFDA) スキャンヘッダー |
SOSはイメージデータの先頭に記録され、直後にイメージデータが続く事を表しています。
また、後に続くイメージデータの成分などの内容が記録されています。
解析例
SOS :Start Of Scan 0-63[00]←@
HT Selector[DC/AC] Y[0/0] Cb[1/1] Cr[1/1]
@の数値はDCT係数の開始番号-終了番号[DCT係数のビット値(16進2桁)]となっており、ベースラインでは0-63[00]固定です。
プログレッシブでは、開始番号-終了番号は0から63までの値が入ります。
DCT係数のビット値は上位ビット(左桁)、下位ビット(右桁)に分かれ、それぞれ0から0xDまでの値が入ります。
2行目は、イメージデータの画像成分と参照するハフマンテーブルを指定しています。
プログレッシブ形式では、最初のイメージデータはDC成分だけの画像になります。
以下の例(A)のように、テーブルを参照していない場合は "-" 表示になります。
SOF2 :Start Of Frame 2 - Progressive DCT
Image size 549 x 393 pixel - color[YCbCr]
Component-Y 2x2 QT0
Component-Cb 1x1 QT1
Component-Cr 1x1 QT1
DHT :Define Huffman Table HT0-DC HT1-DC
SOS :Start Of Scan 0-0[01]
HT Selector[DC/AC] Y[0/-] Cb[1/-] Cr[1/-]←A
〜〜〜〜〜〜〜〜〜〜〜〜以下省略〜〜〜〜〜〜〜〜〜〜
※DCT係数の0はDC成分、1〜63はAC成分です
SOSの構造
図の下の16進数値は 標準的なベースライン形式の例
名称 サイズ 内容 Ls 2バイト セグメント長 Ns 1バイト 成分数 以下の3つの値は成分毎にあります Csn 1バイト 成分ID Tdn 4ビット(上位) DC成分ハフマンテーブル番号 Tan 4ビット(下位) AC成分ハフマンテーブル番号 以下の4つの値は成分数に関係なく固定長 Ss 1バイト 量子化係数開始番号 Se 1バイト 量子化係数終了番号 Ah 4ビット(上位) 前回のスキャンの係数値分割シフト量(最初のスキャンは0) Al 4ビット(下位) 係数値分割シフト量 (最後のスキャンは0) ベースラインではSsからAlまでは固定です。Ss=0、Se=0x3F、Ah=0、Al=0
プログレッシブでは通常、DC成分がインターリブ方式で各表示色成分をまとめたスキャンで記録、AC成分は各表示色成分毎に分けて記録されます。