Ogg の一番メジャーな応用として Vorbis という音声圧縮方式が提供されている。Vorbis 自体は Ogg に依存しない独立した方式だと書いてあるのだが、ドキュメントがイマイチで純粋に Vorbis だけを使う方法がよく分からないので、サンプルコードを読んで分かる範囲で Ogg Vorbis と libvorbis プログラミングの方法を書く。
Ogg と Vorbis の関係
Ogg ファイルの内容は、物理的には適当なサイズの沢山のページの集合になっている。また、論理的には何本かの論理ストリームを入れる事が出来て、その論理ストリームは細かい沢山のパケットの集合という事になっている。Vorbis はそのパケットを順に処理して音声を解凍してゆく。つまり、Vorbis 自体は物理的なファイルやページの切れ目の事は(あまり)考えない。
Vorbis ヘッダ
Vorbis ファイルの最初の三つのパケットはヘッダで、残りが音声情報だ。() の数字は Vorbis_I_spec.html の章番号。
- 確認ヘッダ (Identification header) : ざっとこのファイルの内容を表す。(4.2.2)。
- コメントヘッダ (Comment header) : 文字情報 (4.2.3)
- フィールド名=内容 の列。フィールドには TITLE, VERSION, ALBUM, TRACKNUMBER 等がある。
- フィールドはアルファベットのみ、内容は utf-8(5.2.2.2)
- 設定ヘッダ (Setup header) : 色々解凍に必要な情報 (4.2.4)