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

offset=0 FWS\0 or CWS\0 の 3文字+ \0 terminate string

  • CWS の時は、ファイルサイズフィールド以降が zlib 圧縮される

offset=4 file_length

  • 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  -->

offset=8

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

offset=8 + 5 + 4*align

  • frame_rate の小数部

offset=8 + 5 + 4*align + 1

  • frame_rate の整数部

offset=8 + 5 + 4*align + 2

  • frame_rate_count: frame 数

tag block

  • TLC(Type|Length|Contents)形式で並んでいる
    +-----------------------------------+--
    | tag block | tag block | tag block |...
    +-----------------------------------+--

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

  • tag contents 分の長さ(length)によって二種類のフォーマット
    +-------------------------------------+
    |  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 の番号

(以下、作成中)


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