• 基本的に LittleEndian
  • 後は bit 処理が幾つか
  • タグは TLC(type,length,contents) 構造
+---------+---------------------+
|  magic  |  \0  |  file_length |
+-------- +------+--------------+
<-3 bytes-><1 byte><-- 4 bytes -->

magic: offset = 0

  • FWS or CWS の 3文字 + \0 terminate string
  • CWS の時は、ファイルサイズフィールド以降が zlib 圧縮される

file_length: offset = 4

  • LittleEndian 4 byte

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

  • 先頭 5 bits は、この後に続く {x,y}_{min_max} のフィールドサイズ

{x,y}_{min_max}: offset=8 + 5 + n*align (n は 0 数え)

  • 表示フレームの左上と右下の座標値 (単位は TWIPS)

frame_rate_decimal: offset = 8 + 5 + 4*align

  • frame_rate の小数部

frame_rate_integer: offset = 8 + 5 + 4*align + 1

  • frame_rate の整数部

frame_rate_count: offset = 8 + 5 + 4*align + 2

  • frame_rate_count: frame 数

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  |  length  |     contents     |
+-------------------------------------+
<-6bits-><-10bites-><-- length bits -->

tag block の構造 (1) 0x3f <= length

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

contents の構造

  • tag 次第。

tag の番号

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

(以下、作成中)


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