タイトルとクリップの紐付け情報が記録されていると思われる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