画像チャンク

実際の画像フレームは、AMFヘッダーの“movi”という文字列の後に格納されます。画像圧縮タイプがLZC、LZG、LZIV、またはLZ8の場合、画像データの間に時刻情報が挿入されます。時刻のチャンクはJUNKチャンクとして格納され、以下で構成されます:

  • 文字列“JUNK”。
  • このチャンクの長さを示す4バイトの値で、最下位バイト(LSB)を先頭にして格納されます。AMFバージョン1.0ファイルの長さの値は4で、バージョン2.0および3.0ファイルの長さの値は8です。
  • 4バイトの値。バージョン1.0ファイルでは、このフレームの時刻を示す浮動小数点数です。バージョン1.0を使用するUNIXプラットフォームでは、読み取り後にこの値をバイトスワップする必要があります。バージョン2.0および3.0ファイルでは、これは整数で、LSBを先頭にして格納され、このフレームの識別番号を示します。
  • このフレームの時刻を示す4バイトの浮動小数点数(バージョン2.0以降のみ)。
画像データは時刻チャンクの後に続きます。このデータは、使用される圧縮方法によって異なります。バージョン3.0の時点で、以下のタイプがサポートされています:
  • LZC: 24ビットのカラー画像に対するLempel-Ziv圧縮。
  • LZIVまたはLZG:グレースケール画像に対するLempel-Ziv圧縮。
  • JPEG:JPEG圧縮。
  • LZ8:8ビット(256カラー)画像に対するLempel-Ziv圧縮。
LZCエンコードファイル用のフレームチャンクのHEXダンプを以下に示します。LZVI、LZG、LZ8圧縮は同様のフォーマットに従います:


図 1.

凡例

薄緑色
時刻情報に使用するJUNKチャンクのサイズ。4バイトの長整数値で、最下位バイト(LSB)を先頭にして格納されます。
青色
このフレームの時刻値。この値は、バージョン1.0ファイルでのみ読み取られます。バージョン2.0以降にも存在しますが、これらのバージョンでは、ファイル内の別の場所にあるAMFフッター構造から時刻値を取得するため、無視されます。
紫色
フレーム番号。LSBを先頭にして格納される4バイトの整数。
青緑色
文字列値“00db”。
赤色
このファイルに格納されている、画像チャンクのサイズ(バイト単位)。LSBを先頭にして格納される4バイトの値。
黄色
画像データの圧縮サイズ。LSBを先頭にして格納される4バイトの値。
紺色
画像データの非圧縮サイズ。LSBを先頭にして格納される4バイトの値。
濃い緑色
画像データの先頭を示します。
JPEG圧縮のAMFでは時刻のJUNKチャンクを使用しません。この圧縮タイプはバージョン2.0で追加されたもので、その時点ではすでに時刻情報をAMFフッター構造から取得できたためです。JPEGエンコードファイル用のフレームチャンクのHEXダンプを以下に示します。


図 2.

凡例

青緑色
文字列値“00db”。
赤色
このファイルに格納されている、画像チャンクのサイズ(バイト単位)。LSBを先頭にして保存される4バイトの値。
黄色
画像データの先頭を示します。