Resource Interchange File Format

Resource Interchange File Format (RIFF) について



Resource Interchange File Format(RIFF)は、多様なデータを格納するための汎用コンテナフォーマットです。1991年にMicrosoftとIBMによって提案され、Windows 3.1のマルチメディアファイルの標準フォーマットとして採用されました。RIFFは、データの塊である「チャンク」を基本単位とし、それらを組み合わせて構造化されたデータを表現します。

RIFFの概要



RIFFは、シンプルでありながら柔軟な構造を持つコンテナフォーマットです。データは、識別子、サイズ、ペイロードから構成される「チャンク」と呼ばれる単位で管理されます。これらのチャンクは木構造を形成することができ、これにより複雑なデータ構造を効率的に表現できます。RIFFの重要な特徴として、マルチバイトデータはリトルエンディアンで格納される点が挙げられます。

RIFFは汎用性が高いため、多くの分野特化コンテナフォーマットの基盤となっています。代表的なものとして、WAV(音声ファイル形式)やAVI(動画ファイル形式)などがあります。これらのフォーマットは、RIFFの基本的な構造をベースに、特定の用途に合わせた制約や拡張を加えています。

RIFFの仕様



RIFFファイルは、チャンクの集合体として構成されます。ファイルは必ずRIFFヘッダーと呼ばれる特殊なチャンクで始まり、その後に任意の数のチャンクが続きます。RIFFヘッダーは、ファイルの先頭に配置され、ファイルフォーマット名とチャンク列を格納します。

チャンクは、以下の3つの要素で構成されます。

1. チャンク FourCC: チャンクの識別子となる4文字のASCIIコード。
2. チャンクサイズ: チャンクペイロードのバイト数を表す32ビット整数。
3. チャンクペイロード: チャンクに格納されるデータ。データ長が奇数の場合、偶数になるようにゼロ埋めされます。

特殊なチャンクとして、LISTチャンクがあります。LISTチャンクは、他のチャンクを子チャンクとして格納することができ、階層的なデータ構造を表現するのに役立ちます。

RIFFヘッダー


RIFFヘッダーは、RIFFファイルの先頭に必ず存在する必要のある特殊なチャンクです。以下の制約があります。

ファイル先頭に1つのみ存在
チャンク FourCC は "RIFF" である
チャンクペイロードは、ファイルフォーマット名とチャンク列で構成される。

LISTチャンク


LISTチャンクは、他のチャンクを子チャンクとして格納するための特殊なチャンクです。以下の制約があります。

チャンク FourCC は "LIST" である
チャンクペイロードは、子チャンクタイプと子チャンク列で構成される。

INFOチャンクとその問題点



INFOチャンクは、ファイルに関するメタデータを格納するためのチャンクです。本来はファイルの先頭に配置されるべきとされています。しかし、INFOチャンクの位置に関する誤った認識や実装ミスにより、以下のような問題が発生しました。

INFOチャンクの位置がファイル末尾にある場合がある:これにより、メタデータへのアクセスが遅くなり、互換性の問題も生じました。
INFOチャンクのサイズ変更によるファイルのずれ:大きなファイルでは、INFOチャンクの拡張や追加がファイル全体のずれを引き起こすため、ディスクI/Oが頻繁に発生しました。

これらの問題は、特にMacintosh環境で多く見られました。一部のソフトウェア開発者は、誤った位置にあるINFOチャンクを処理できるように実装しましたが、全てのソフトウェアがそうだったわけではありません。その結果、メタデータが失われたり、ファイルが正しく処理されないといった問題が生じました。また、CorelDRAW10のように、意図的にINFOチャンクをファイル末尾に置くアプリケーションも存在し、互換性の問題をさらに複雑にしました。

派生コンテナフォーマット



RIFFは汎用コンテナフォーマットであるため、様々な分野特化コンテナフォーマットがRIFFをベースに開発されました。以下にその代表例を挙げます。

WAV:Windowsの標準的な音声ファイル形式
AVI:Windowsの標準的な動画ファイル形式
RMI:RIFFをベースとしたMIDIファイル形式
CDR:CorelDRAWのベクターグラフィックスファイル形式
ANI:Windowsのアニメーションカーソルファイル形式
* WebP : Googleが開発した静止画ファイル形式

RIFFの歴史



RIFFは、1991年にMicrosoftとIBMによって提案されました。その基礎となったのは、1985年にElectronic Artsが策定したInterchange File Format(IFF)です。RIFFは、IBM PCが採用するx86プロセッサに合わせてリトルエンディアンを採用しているのに対し、IFFはAmigaやMacintoshで使われていた68kプロセッサに合わせてビッグエンディアンを採用していました。Apple1988年にIFFをベースにしたビッグエンディアンAIFFを策定しています。

RF64



欧州放送連合(EBU)は、RIFF仕様に基づいた多チャンネルファイル形式としてRF64を開発しました。RF64はBWF互換であり、4GBを超えるファイルに対応しています。

まとめ



RIFFは、シンプルでありながら柔軟な構造を持つ汎用コンテナフォーマットです。その汎用性の高さから、WAVやAVIなど多くの派生フォーマットを生み出してきました。しかし、INFOチャンクの扱いの誤りによる互換性の問題や、ファイルサイズの制限など、いくつかの課題も抱えていました。しかし、その歴史と多岐にわたる応用例は、RIFFが現代のマルチメディアファイルフォーマットに大きな影響を与えたことを示しています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。