SOS (0xFFDA) スキャンヘッダー Back
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成分は各表示色成分毎に分けて記録されます。