TITLE:Flash SWF フォーマット #contents - 基本的に LittleEndian - 後は bit 処理が幾つか - タグは TLC(type,length,contents) 構造 * header [#header] +-----------------+--------------+ |FWS or CWS| \0 | file_length | +----------+------+--------------+ <-3 bytes-><1 byte><-- 4 bytes --> ** offset=0 FWS\0 or CWS\0 の 3文字+ \0 terminate string [#ibd122ad] - CWS の時は、ファイルサイズフィールド以降が zlib 圧縮される ** offset=4 file_length [#g68789a2] - 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 --> ** offset=8 [#r84af899] - 先頭 5 bits は、この後に続く {x,y}_{min_max} のフィールドサイズ ** offset=8 + 5 + 4*align [#h3e93a9a] - frame_rate の小数部 ** offset=8 + 5 + 4*align + 1 [#zd15a98a] - frame_rate の整数部 ** offset=8 + 5 + 4*align + 2 [#bb5d9d12] - frame_rate_count: frame 数 * tag block [#tag] - TLC(Type|Length|Contents)形式で並んでいる +-----------------------------------+-- | tag block | tag block | tag block |... +-----------------------------------+-- ** tag block の構造 (1) length < 0x3f [#j92d1e12] - tag contents 分の長さ(length)によって二種類のフォーマット +-------------------------------------+ | 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] (以下、作成中) |