SWFの構造要約_SWF_ヘッダ - hsk/swfspec_ja GitHub Wiki
SWF ヘッダ
SWF ファイルは、次のようなヘッダから始まります。 データの型については 基本的なデータ型 をご覧ください。
| フィールド | タイプ | 内容 |
|---|---|---|
| Signature | UI8 | シグネチャバイト: |
| “F” => 圧縮されていない | ||
| “C” => 圧縮されている (SWF 6 以降のみ) | ||
| Signature | UI8 | シグネチャバイト: 常に “W” |
| Signature | UI8 | シグネチャバイト: 常に “S” |
| Version | UI8 | 1 バイトのファイルバージョン (例: 0x06 => SWF 6) |
| FileLength | UI32 | バイト単位のファイルを全て含む長さ |
| FrameSize | RECT | twip 単位のフレームの大きさ |
| FrameRate | UI16 | 8.8 固定小数点数形式のフレーム数/秒 |
| FrameCount | UI16 | ファイルの全フレーム数 |
ヘッダは、3 バイトのシグネチャ 0x46, 0x57, 0x53 ("FWS") か、 0x43, 0x57, 0x53 ("CWS") で始まります。 FWS シグネチャは SWF ファイルが圧縮されていないことを、CWS は最初の 8 バイト以降 (FileLength フィールドの後) が ZLIB 標準によって圧縮されていることを意味します。ZLIB のデータフォーマットは RFC 1950 ~ 1952 で解説されています (下記リンク参照)。CWS は SWF 6 以降で使用することができます。
シグネチャの後に 1 バイトのバージョン番号が続きます。 バージョン番号は ASCII 文字ではなく、8 bit の数値で表します。例えば SWF 4 は、このバイトが ASCII 文字の "4" (0x34) ではなく、 0x04 になります。
FileLength フィールドは、ヘッダを含む SWF ファイルの全長を表します。 圧縮されていない SWF ファイル (FWS シグネチャ) の場合、 FileLength フィールドはファイルのサイズと全く同一になります。 圧縮された SWF ファイル (CWS シグネチャ) の場合、 FileLength フィールドは解凍後のファイルの全長を表すので、通常、ファイルのサイズと一致することはありません。
FrameSize フィールドでは、スクリーン上に表示される幅と高さを宣言します。 このフィールドは RECT 構造体で保存するので、指定する座標のサイズによって構造体の必要とするバイトサイズが変化します。FrameSize フィールドの Xmin, Ymin 値は常に 0 になります。Xmax, Ymax は、幅と高さを表します (RECT 型 参照)。
FrameRate はシステムに要求する秒間フレーム数を表します。 CPU 使用率が高く Flash Player の動作が遅くなっている時には、この値通りには動作しません。
FrameCount は SWF ファイルの全フレーム数を表します。
リンク
- RFC 1950 ZLIB Compressed Data Format Specification version 3.3 日本語訳 - futomi's CGI Cafe
- RFC 1951 DEFLATE Compressed Data Format Specification version 1.3 日本語訳 - futomi's CGI Cafe
- RFC 1952 GZIP file format specification version 4.3 日本語訳 - futomi's CGI Cafe
移動
- 前のページ : SWFの構造要約
- 次のページ : SWF ファイルの構造