RIFFファイルフォーマット
トップページ >>
各種ファイルフォーマット >>
完成:2002/12/02
更新:2004/10/28
RIFF(Resource Interchange File Format)はマルチメディアファイルのためのフォーマットです。
これ自体で何かのフォーマットであるわけではなく、フォーマットのフォーマットみたいなものです。
RIFFの基本単位=チャンク
RIFFファイルは、データの論理的な単位である「チャンク(chunk)」によって構成される。
つまり、RIFFファイルはチャンクの集合体なのである。
チャンク(chunk)
| 識別子(ID) |
4byte |
チャンクを識別するための4文字のコード |
| サイズ(Size) |
4byte |
データサイズを指定する |
| データ(Data) |
n byte |
データ本体 |
- 識別子は1〜4文字のアルファベットで構成され、3文字以下の場合は右側を空白文字で詰める。
- サイズは4バイトのリトルエンディアン、つまり後ろのバイトデータの方が上位にある形式で記録される。
- データの構造は、それぞれのチャンクタイプによって独自に定義される。
チャンクの親子関係
チャンクはチャンクを含むことができる。
チャンクを含むことができるのは、チャンク識別子が「RIFF」または「LIST」のチャンクだけである。
このとき、他のチャンクに含まれているチャンクを、「サブチャンク(subchunk)」 と呼び、他のチャンクを含むチャンクを「親チャンク(parent chunk)」と呼ぶ。
RIFFチャンク
RIFFファイルでの最初のチャンクは、"RIFF"チャンクでなければならない。
ファイル内のその他のチャンクはすべて、このRIFFチャンクのサブチャンクとなる。
RIFFチャンクには、データの最初の4バイトに追加フィールドが含まれる。
追加フィールドでは、チャンクのフォームタイプが提供される。
フォームタイプは、ファイルに格納されるデータの形式を識別する、4文字のコードである。
たとえば、Microsoftのwaveform-audioのスタイルのフォームタイプは「WAVE」である。
RIFFチャンク(例)
| 識別子:'RIFF' |
4byte |
| サイズ:(n'+n''+20)byte |
4byte |
| データ |
フォームタイプ |
4byte |
サブチャンク
| 識別子 | 4byte |
| サイズ | 4byte |
| データ | n'byte |
サブチャンク
| 識別子 | 4byte |
| サイズ | 4byte |
| データ | n''byte |
|
LISTチャンク
LISTチャンクは、サブチャンクをグループ化したものである。
これらのサブチャンクのいくつかは繰り返し現れる場合があるが、LISTは配列ではない。
LISTチャンクにも、データの最初の4バイトに追加フィールドが含まれる。
追加フィールドでは、フィールドの「リストタイプ」が含まれる。
リストタイプは、リストの内容を識別する、4文字のコードである。
たとえば、LISTチャンクのリストタイプが「INFO」だった場合、「ICOP」と「ICRD」のチャンクを含むことができる。
(ちなみに、ICOPは著作権、ICRDは作成日に関するチャンクである)
RIFFチャンク(例)
| 識別子:'RIFF' |
4byte |
| サイズ |
4byte |
| データ |
フォームタイプ |
4byte |
LISTチャンク(例)
| 識別子:'LIST' |
4byte |
| サイズ |
4byte |
| データ |
リストタイプ |
4byte |
サブチャンク
| 識別子 | 4byte |
| サイズ | 4byte |
| データ | n''byte |
サブチャンク
| 識別子 | 4byte |
| サイズ | 4byte |
| データ | n''byte |
|
|
administrated by umekkii -> admin@umekkii.jp