「RIFF」はこの項目へ転送されています。ポピュラー音楽の楽句については「リフ」をご覧ください。
RIFFMIMEタイプapplication/x-riff
マジック
ナンバーRIFF
開発者マイクロソフト、IBM
初版1991年8月 (32年前) (1991-08)
種別汎用メタファイル形式
派生元Interchange File Format
Resource Interchange File Format(RIFF、「資源交換用ファイル形式」の意味)は、タグ付きのデータを格納するための汎用メタファイル形式である。1991年、マイクロソフトとIBMが提案し、マイクロソフトのWindows 3.1のマルチメディアファイルのデフォルトフォーマットとして採用された。エレクトロニック・アーツが1985年に策定したInterchange File Format (IFF、「交換用ファイル形式」の意味) に基づいている。RIFFはIBM PCが使っているx86プロセッサに合わせて多バイト整数をリトルエンディアン形式で格納するのに対して、IFFはAmigaやMacintoshで使われていたため、68kプロセッサのビッグエンディアンを採用していた点が異なる。なお、Appleは1988年にIFFに基づいたビッグエンディアンのAIFFを策定している。
マイクロソフトの実装は、RIFFメタ形式を基盤とした各種ファイル形式 (AVI, ANI, WAV) で知られている。 RIFFファイルは「チャンク」と呼ばれるものの並びである。形式はIFFと全く同一であり、上述の通りエンディアンだけが異なる。また、チャンク名の意味も一部異なる。 全てのチャンクは次のような形式である。 チャンク識別子「RIFF」と「LIST」は、チャンク内にサブチャンクを含むことができる。これらのチャンクは、識別子と長さの後が次のような形式である。 ファイル全体が1つのRIFFチャンクで構成され、サブチャンクの並びが格納されている。したがって、正しいRIFFファイルの先頭には「R」、「I」、「F」、「F」の4文字が必ず存在する。 欧州放送連合が開発したRIFF仕様に基づいた多チャンネルファイル形式としてRF64 マイクロソフトのWindows 3.1の公式文書によると、ファイルの先頭にINFOチャンクを置くべきとしている。これにより、ファイル内容に関するメタデータに素早くアクセスでき、ファイルシステムやマルチメディアアプリケーションがファイルの先頭を参照して、作者情報、サムネイル、プレビュー、ファイル形式情報などを取り出せる。 Windows XPのファイル管理では、RIFF形式のファイルがあると自動的にINFOチャンクを読もうとする。また、ユーザーがファイルサイズや作成日などの属性情報に加えて、RIFFフィールド(作者、コピーライト日付)を指定することもできる。 マイクロソフトは、あらゆるマルチメディアファイルにRIFFを使用するという方針の下、MIDIファイルにもRIFFを使った新たなファイル形式を策定した。これは、既存のStandard MIDI FileをRIFFラッパーで囲んだような形式で、.rmi(英: resource musical instrument に由来)という拡張子であった。このため、Windows上でMIDIファイルを新たな形式に変換してやる必要が生じた。 大きな動画ファイルでは、先頭にあるべきINFOチャンクを拡張・追加するということはファイル全体のずれを生じるため、ディスクI/Oが多数発生する。これを防ぐため、大きなファイルを作成するときにINFOチャンクにダミーデータを使ってパディングしておく必要がある。そうすることでINFOチャンクに新たな情報を追加してもファイル全体にずれが生じない。そのため、プログラマには正しいファイル形式の知識が必要だった。しかし、マイクロソフトのRIFFに関する文書は分散していて把握しきれないことも多く、一部のプログラマはファイルの最後尾にINFOチャンクを追加してもよいと思い込んでしまった。この対処法が広まった結果、非互換が生じ、正しいファイル形式しか認識しないソフトウェアによって最後尾のINFOチャンクが上書きされてしまうなどの問題が出てきた。 このような擬似RIFFファイルは特にMacintoshでよく見られた(Macintoshのプログラマがマイクロソフトの仕様を把握していないことが多かったためと言われている)。一般にMacintosh上のソフトウェアやクロスプラットフォームのソフトウェアの開発者はこの問題に気づいており、間違ったINFOチャンクも扱えるようにしていることが多かった。例えば、2004年ごろのアップルのWindows上でのQuickTimeプレイヤーソフトは間違ったINFOチャンクも扱えていたが、ソニーのWindows専用のソフトはそうではなかった。
概要
4バイト: チャンクのASCII識別子。例えば「fmt」、「data」など。
4バイト: 符号なしでリトルエンディアンの32ビット整数。チャンクの長さを示す(このフィールドと上の識別子を除いた長さ)。
可変長フィールド: チャンクデータ本体。長さは上記フィールドで示されたもの。
パディング: チャンク長が偶数バイトでない場合に1バイト追加される。
4バイト: このチャンクのASCII識別子(フォームタイプと呼ぶ。RIFFチャンクの場合、「AVI」や「WAVE」がある)
サブチャンクの並び
INFOチャンク
問題