OggVorbisライブラリをVS2013で使う

OggVorbisはパテントフリーの音声圧縮形式です。
オープンソースである上、MP3よりも一般に音質が良いことで定評があります。

ライブラリの導入も比較的簡単です。
MP3のパテントが切れる頃にはOggVorbisが主流になっているのではないか・・・と勝手に予想しております。

今回はOggVorbisライブラリをVisualStudio2013に導入して使ってみました。

■環境構築

1.ライブラリのダウンロード
OggVorbisのライブラリのダウンロードは以下サイトより行います。

http://www.xiph.org/downloads/

上記サイト内のlibogglibvorbisがOggVorbisを使う上で必要になります。
最新バージョンをダウンロードしてください。

ダウンロードしたら、適当な場所に解凍します。

2.liboggのビルド
ライブラリをVS2013でビルドします。
以下ファイルをVS2013で開きます。

 (展開先フォルダ)libogg-1.3.1win32VS2010libogg_static.sln
 (展開先フォルダ)libogg-1.3.1win32VS2010libogg_dynamic.sln

開いたらソリューション全体をビルドします。
初期状態ではDebugビルドとなっているためDebug版のバイナリがビルドされます。
必要ならReleaseビルドも行います。

ビルドされたバイナリは(展開先フォルダ)libogg-1.3.1win32VS2010Win32以下に生成されます。

3.libvorbisのビルド
liboggと同じようにlibvorbisもビルドを行います。

まず、以下ファイルをVS2013で開きます。

 (展開先フォルダ)libvorbis-1.3.4win32VS2010vorbis_static.sln

開くとソリューションの下に4つプロジェクトがあることが確認できます。
これらのプロジェクトすべてをビルドします。

しかし、このままビルドすると「liboggのパスが無いよ!」と怒られてしまうため、
liboggのパスを設定する必要があります。

プロジェクト各々に対し、「プロパティ」→「構成プロパティ」→「VC++ ディレクトリ」画面を開き、以下パスを設定します。

インクルード ディレクトリ:
 (展開先フォルダ)libogg-1.3.1include

ライブラリ ディレクトリ(Debug版の場合):
 (展開先フォルダ)libogg-1.3.1win32VS2010Win32Debug
ライブラリ ディレクトリ(Release版の場合):
 (展開先フォルダ)libogg-1.3.1win32VS2010Win32Release

上記設定の後、ビルドします。
Debug/Release版両方をビルドする場合は合計8回の設定を行う必要がありますが、根気で頑張って下さい(笑)

3.プロジェクトの設定
ここからは実際にOggVorbisライブラリを使用するための設定になります。
ライブラリを使用するプロジェクトの準備が出来たら、プロジェクトの「プロパティ」→「構成プロパティ」→「VC++ ディレクトリ」を開き、以下パスを設定します。

インクルード ディレクトリ:
 (展開先フォルダ)libogg-1.3.1include
 (展開先フォルダ)libvorbis-1.3.4include

ライブラリ ディレクトリ(Debug版の場合):
 (展開先フォルダ)libogg-1.3.1win32VS2010Win32Debug
 (展開先フォルダ)libvorbis-1.3.4win32VS2010Win32Debug
ライブラリ ディレクトリ(Release版の場合):
 (展開先フォルダ)libogg-1.3.1win32VS2010Win32Release
 (展開先フォルダ)libvorbis-1.3.4win32VS2010Win32Release

また、libcmt.libを除外するために、プロジェクトの「プロパティ」→「構成プロパティ」→「C/C++」→「リンカー」→「コマンド ライン」を選択し、
「追加のオプション(D)」に以下を追加します。

 /NODEFAULTLIB:libcmt.lib

これでビルド時に競合エラーが発生しなくなります。

■OggVorbisを使ってみる
準備が出来たため、簡単なOggVorbisファイルをデコードするプログラムをテストしてみます。
今回はスタティックリンクで使ってみます。

Windowsアプリケーションのプロジェクトを作成し、
以下ソースを丸ごとコピペしてビルドが通れば成功です。

ソリューションディレクトリにtest.oggファイルを置くとファイルを開いてデコードし、デコードに成功すればその旨のメッセージが表示されます。

ライブラリのリファレンスは以下サイトにまとめられています。

http://www.xiph.org/doc/

すべて英語ですが、ここを見て理解できればもうバッチリでしょう。
使い方はワンパターンなので、クラス化して使うのが良いと思います。