タイトルとクリップの紐付け情報が記録されていると思われるIFOファイルの構造を調べてみるために、DVD-RAMのIFOファイル(VR_MANGR.IFO)を見る。
この構造は、DVD-VR(DVD Video Recording Format)仕様のものだと思われる。しかし、DVD-VRの仕様書を見つける事が出来なかったので、地道に色々なデータを書き込んで検証する事に…。

とりあえず、色々な形式のIFOファイルの資料を見ていると、IFOファイルの内部は、複数のデータブロックの寄せ集めらしい事が分った。
また、これらのデータブロックに対するアドレス指定が、ヘッダの中に記述されているらしい事も。

と言う事で、以下のブロックがあると思われる(当然のことながら正式名称は不明)
  • ヘッダ
  • プレイリスト
  • クリップリスト
  • 不明1
  • タイトルリスト
  • ベンダ情報

※これらのブロック中の数値はBig Endian

ヘッダ

 位置  長さ  内容 
 0000   0C   識別子('DVD_RTR_VMG0')
 000C   04   このIFOファイルの終端位置(= ファイル長 - 1)
 0010   04   「プレイリスト」ブロックの終端位置(ここまでが、本来のIFOブロックなのか?)
 006C   04   ディスク番号?
 00A2   3D   ディスクタイトル
 0100   04   「クリップリスト」ブロックの開始位置
 0104   04   「不明1」ブロックの開始位置
 0130   04   「タイトルリスト」ブロックの開始位置
 0164   04   「ベンダ情報」ブロックの開始位置


プレイリスト

ヘッダ中に、このブロックの開始位置を示す数値は見当たらず、ファイルの先頭から0x200の位置から始まる。
したがって、このブロックは、ヘッダの一部と解釈するほうが正しいのかも。
 位置  長さ  内容 
 0000   04   有効フラグ? (1: プレイリストあり、0: プレイリストなし)
 0004   04   このブロックの長さ相対的な終端位置(= ブロック長 - 1)

プレイリストが存在しない場合、「00 00 00 00 00 00 00 07」の8バイトのバイト列となる。


クリップリスト

 位置  長さ  内容 
 0000   04   フラグ?(0x00000101)
 0004   04   このブロックの長さ相対的な終端位置(= ブロック長 - 1)
 0008   3C   不明なデータ列
 0044   02   クリップ数
 0046   04 * クリップ数   クリップ情報への相対位置配列

クリップ情報

 位置  長さ  内容 
 0000   02   0固定?(世界時、地方時識別フラグ?)
 0002   05   日時情報(*)
 0007   02   音声モード
 0009   06   再生開始タイムスタンプ(*SCR)
 000F   06   再生終了タイムスタンプ(*SCR)
 001D   04   ストリームのセクタ位置
 0021   ??   不明

※日時情報は、5バイトの値を、b39-b26:年 b25-b22:月 b21-b17:日 b18-b12:時 b11-b06:分 b05-b00:秒として表現したもの
※SCRは、0x00からの4バイト整数値 * 300 + 0x04からの2バイト整数値で表される27MHzのタイムスタンプ


不明1

ヘッダの0x0104で指し示されたアドレスからのデータが、「00 00 00 00 00 00 00 07」となっているので、プレイリストブロックの先頭8バイトと同じ構造と思われる。
 位置  長さ  内容 
 0000   04   有効フラグ? (0: 無効)
 0004   04   このブロックの長さ相対的な終端位置(= ブロック長 - 1)


タイトルリスト

 位置  長さ  内容 
 0000   02   タイトル数
 0002   02   クリップ数
 0004   8E * タイトル数   タイトルの情報 * タイトル数
 0004 + 8E * タイトル数   4 * クリップ数   タイトルクリップ情報への相対位置配列

タイトル情報

 位置  長さ  内容 
 0000   04   このタイトルに含まれるクリップ数
 0004   40   記録日時や、ビットレートなどの情報
 0044   40   タイトル名(シフトJIS)
 0084   04   タイトルサムネイルのフレームが含まれるクリップ番号
 0088   08   タイトルサムネイルのフレームのタイムスタンプ

タイトルクリップ情報

この情報は、クリップリストのクリップ情報とは異なる
 位置  長さ  内容 
 0000   04   クリップ番号(1~)
 0004   02   このクリップに含まれるチャプタ数
 0006   06   再生開始タイムスタンプ(*SCR)
 000C   06   再生終了タイムスタンプ(*SCR)
 0012   any   チャプタ情報の配列

チャプタ情報

 位置  長さ  内容 
 0000   01   チャプタ情報文字列の長さ(未定義の場合0)
 0001   06   チャプタ位置のタイムスタンプ(*SCR)
 0007   チャプタ情報文字列の長さ   チャプタタイトル
 0007 + チャプタ情報文字列の長さ   チャプタ情報文字列の長さ   チャプタの詳細


ということらしい。
最終更新:2007年03月28日 21:40