OggVorbisファイルの再生
VC2005で。
まずここで "FOR DEVELOPERS" から libogg と libvorbis を落とす。
libogg\include と libvorbis\include をVCのインクルードパスに設定。
あとは、
- libogg をビルド
- libogg.lib をリンクして libvorbis をビルド
- libogg.lib libvorbis.lib をリンクして libvorbisfile をビルド
すればいい。
問題が一つ。
自分のプロジェクトでランタイムライブラリをDLLにしている場合は、 vorbis の方もそれで統一しなければならない。全部のプロジェクトのプロパティで「C/C++」->「コード生成」->「ランタイム ライブラリ」を「マルチスレッド (デバッグ) DLL」に。
あとデバッグ版を使うときは名前がややこしいので変えておくといいかも。プロパティの「リンカ」->「全般」->「出力ファイル」と、「リンカ」->「詳細」->「インポート ライブラリ」で変更。libvorbisfile だけは、「リンカ」->「入力」->「モジュール定義ファイル」の名前も変えておいて、元からある libvorbisfile.def をその名前でコピーして、1行目の "libvorbisfile" のところをデバッグ版の名前に変える。
これでビルドして完了。あとは普通に3つの .lib をリンクして3つの .DLL を置いて、
#include <vorbis/codec.h> #include <vorbis/vorbisfile.h>
すれば使える。
fopen() と ov_open() で開いて、ov_info() で調べた情報を WAVEFORMATEX 構造体に突っ込んでバッファ作って、 ov_read() でバッファに流し込むだけ。
Windowsでは ov_open_callbacks() を使うべしとあるんだが、何でなのかよくわからないしめんどいから ov_open() でやってる。よくわかったら書くかも。
参考文献
やね本1
http://drednote.blog92.fc2.com/blog-entry-28.html