FourCC(フォーシーシー)
FourCCは、データフォーマットや各種の圧縮形式、あるいは
色空間などを一意に識別するために用いられる、4バイト長の短いコードです。その名称は「four-character code」(4文字のコード)に由来しています。
この4バイトの識別子は、
32ビットの整数値と等しいデータサイズを持ちながら、人間が視覚的に把握しやすいアルファベットや数字といった文字の組み合わせで意味を表すことができます。例えば、動画
コーデックであれば、その種類を端的に示す文字コードが使われます。ただし、バイトが複数集まって構成されるため、データを読み書きするシステムの
エンディアン(バイト順序)の違いによっては、解釈に注意が必要となる場合があります。
FourCCの概念的な起源は、
Apple社のMac OSで使用されていたOSTypeにあります。このアイデアは、
1985年に
エレクトロニック・アーツ社が提唱した汎用的なデータ構造である
Interchange File Format(IFF)に採用され、その仕様書の中でも
Apple社に由来することが明記されました。IFFは、データを「チャンク」と呼ばれる独立したブロックの集まりとして扱う構造を持ち、各チャンクの先頭には、その内容や種類を示すための4バイトの識別子が必ず付与されていました。
IFFの革新的な設計は広く普及し、
Apple社の音声ファイルフォーマット
AIFFや、
マイクロソフト社が提唱したResource
Interchange File Format(RIFF)など、多くの派生フォーマットを生み出しました。特にRIFFは、現在でも標準的に使用されている動画フォーマットAVIや音声フォーマット
WAVの基礎となっています。興味深いことに、同じ4バイト識別子に対して、
Apple社の開発者はOSTypeと呼称していたのに対し、
マイクロソフト社やWindowsプラットフォームの開発者の間ではFourCCという名称が一般的となりました。
マイクロソフト社は、DirectXテクノロジー(特に
DirectShowや
Direct3D)においても、データフォーマットや
コーデックの識別子としてFourCCを広く採用しました。
FourCCが最もよく知られている応用例の一つは、AVIファイルにおけるビデオ
コーデックの識別です。たとえば、MPEG-4系の『DIVX』や『XVID』、
H.264/AVCの『H264』や『AVC1』、
Windows Media Videoの『WMV3』といったコードが、動画データの圧縮方式を示します。しかし、AVIファイルや
WAVファイルにおける音声
コーデックの識別には、通常FourCCではなく、2バイトの数値識別子が使用されます。これらの識別子は、FourCCのような文字列表現ではなく、16進数で表記されるのが一般的です(例:
MP3は`0055`)。一方、
Apple社の
QuickTimeファイルフォーマットでは、これらの2バイト音声識別子の前に『ms』という文字を付加することで、全体として4バイトのFourCC形式の識別子として扱うユニークな手法が取られています。また、RealNetworks社の
RealMediaファイルフォーマットなど、他のマルチメディアフォーマットでもFourCCと同様の4バイト識別子が利用されていますが、その具体的なコード値は他のフォーマットとは異なる場合があります。
マルチメディア分野以外でも、FourCCのような4バイト識別子は様々なファイルフォーマットで見られます。音楽シーケンスデータのMIDIファイル、Webで広く使われる画像フォーマットPNG、3Dグラフィックスデータの3DS、カラーマネジメントシステムで用いられるICCプロファイルフォーマット、さらにはゲームの内部ファイルフォーマットなど、その用途は多岐にわたります。
画像処理の文脈では、Windows Bitmapファイルや
DirectDraw Surface(DDS)ファイルフォーマットにおいて、RGBだけでなく
YUVのような別の
色空間の色データを格納している場合に、その
色空間の種類を識別するためにFourCCが使われることがあります。
FourCCは、短く覚えやすいコードによって、ファイルやデータストリームに含まれる複雑な情報を効率的に識別・分類するための、コンピュータシステムにおける重要な仕組みの一つと言えます。