- The added line is THIS COLOR.
- The deleted line is THIS COLOR.
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]
(以下、作成中)