TITLE:Flash SWF フォーマット
#contents

- 基本的に LittleEndian
- 後は bit 処理が幾つか
- タグは TLC(type,length,contents) 構造

* header [#header]

 +---------+---------------------+
 |  magic  |  \0  |  file_length |
 +-------- +------+--------------+
 <-3 bytes-><1 byte><-- 4 bytes -->

** magic: offset = 0 [#magic]
- FWS or CWS の 3文字 + \0 terminate string
- CWS の時は、ファイルサイズフィールド以降が zlib 圧縮される
** file_length: offset = 4 [#file_length]
- LittleEndian 4 byte

* header_movie [#header_movie]

 +-------+-----------+-----------+-----------+-----------+---
 | align |   x_min   |   x_max   |   y_min   |   y_max   | ..
 +-------+-----------+-----------+-----------+-----------+---
 <-5 bits><align bits><align bits><align bits><align bits>

  ---+---------------------------------+------------------+
  .. | frame_rate_dec | frame_rate_int | frame_rate_count |
  ---+---------------------------------+------------------+
      <-- 1 byte -->   <--  1 byte --> <--  2 bytes  -->

** align: offset = 8 [#align]
- 先頭 5 bits は、この後に続く {x,y}_{min_max} のフィールドサイズ
** {x,y}_{min_max}: offset=8 + 5 + n*align (n は 0 数え) [#zabe493c]
- 表示フレームの左上と右下の座標値 (単位は [[TWIPS]])

** frame_rate_decimal: offset = 8 + 5 + 4*align [#frame_rate_decimal]
- frame_rate の小数部
** frame_rate_integer: offset = 8 + 5 + 4*align + 1 [#frame_rate_integer]
- frame_rate の整数部
** frame_rate_count: offset = 8 + 5 + 4*align + 2 [#frame_rate_count]
- frame_rate_count: frame 数


* tag block [#tag_block]

- header + header_movie の後ろに TLC(Type|Length|Contents)形式で並ぶ

 +--------------------------------------------------+
 | header |header_movie| tag_block | tag_block| ... |
 +--------------------------------------------------+
 <-8bytes-> <- 可変 ->  <- 可変 ->

- tag block は contents の長さ(length)によって二種類のフォーマットに分かれる

** tag block の構造 (1) length < 0x3f [#tag_block_structure]

 +-------------------------------------+
 |  tag  |  length  |     contents     |
 +-------------------------------------+
 <-6bits-><-10bites-><-- length bits -->

** tag block の構造 (1) 0x3f <= length [#ceef6e7f]

 +----------------------------------------------------+
 |  tag  |  0x3f    |    length    |     contents     |
 +----------------------------------------------------+
 <-6bits-><-10bites-><-- 4 bytes --> <-- length bits -->

** contents の構造 [#md979b4b]

- tag 次第。

*** tag の番号 [#vf9e3918]

- 0: End Tag (ファイルの末尾に来る tag は必ずこれ)

(以下、作成中)

Reload   Diff   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes