本書は、Vorbis のライブラリを導入した時の作業メモとなります。
前提条件は、以下の通りとなります。
導入前の検討として、以下の観点で調査と検討を行いました。
まずは、libVorbis-1.3.2.zip をダウンロードしました。
READMEに目を通したところ、ライセンスファイルらしき物は見当たらず。
公式のウェブページ(www.vorbis.com)にあるFAQ には、ライブラリとSDK のみBSD-style ライセンスと説明されていた。
これ以外のユーティリティは、全て「GPL」であると説明されている。 このライセンス形態は大きな違いなので注意が必要です。
GPL と BSD-style の大きな違いは、GPL だと元にしたソースコードに変更を加えた場合に「ソースを公開すること」「誰でもアクセスが可能な状態にすること」が義務付けられます。
因ってユーティリティは、使わない方針とします。
しかし、ライセンスを宣言したファイルが配布物の中に見当たらないな…。
…。 あった。 COPYING がライセンスを説明するファイルみたいです。 以下にVorbisの方を引用します。 違いは、一行目の年数のみでした。
Copyright (c) 2002-2008 Xiph.org Foundation
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of the Xiph.org Foundation nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
…よく分からん。 ソースコードの再配布、バイナリ形式での再配布を行う場合は、このCOPYING を添付して免責事項とライセンス条件を明記しろ、ということだけは分かりました。
尚、真面目に製品に取り込む事を検討している場合は、必ず、企業の法務部門、法律家(司法書士、弁理士、弁護士など)に相談してください。
聞きかじり程度の知識で付け加えるなら、日本の法律だとソースコードに対する著作権は認められていない筈です。
但し、コンパイルとリンクが終わった実行可能な形式のファイルについては、著作権が認められている筈です。
どちらにしろ、バイナリ形式で配布する必要があるので、十分注意して検討しましょう。
win32/VS2005 の下にあるREADMEを読むと、libOggに依存しているから、それを先にコンパイルしてください、と書いてありました。
libogg 1.2.1 をダウンロードしました。 READMEを読むとwin32 サブディレクトリにプロジェクトファイルがあるとのことです。
丁寧にも Visual Studio 6 から Visual Studio 2010 までのプロジェクトが用意されているようです。 今回は、Visual Studio 2005 を使います。
ディレクトリには、スタティックリンク用とダイナミックリンク用のプロジェクトファイルがありました。
ここは微妙でスタティックリンクを使う場合、それが利用するCランタイムライブラリもスタティックライブラリなのか、それともダイナミックリンクなのかがポイントになると考えます。
図2-1. リンクするランタイムライブラリ(デバッグ)
図2-2. ワーニングを抑止する設定箇所(リリース)
杞憂でした。 libogg自体をスタティックリンクした上で、ランタイムライブラリはダイナミックリンクする設定となっておりました。
流石、使い込まれているライブラリは、この辺りも配慮されていました。
コンパイルすると一瞬で終わります。 ソースファイルは、二つしかありませんでした。
コンパイルが終わると、プロジェクトの直下にwin32/debugディレクトリが作成され、そこにスタティックリンクライブラリが作成されていました。
さて、ライブラリを利用するに当たって、何が必要なのか?が次の課題になると考えます。
自然に考えれば、ヘッダファイルとライブラリファイルだけがあれば問題無いはずです。
配布ファイルを眺めると、include サブディレクトリがあります。 README には、コンパイル方法だけが記述されていました。
直下のディレクトリは、UnixのconfigureスクリプトとREADMEやCOPYING のファイルだけです。
あまり難しく考えても仕方がないので、配布物の一式はホームディレクトリに配置して、include とスタティックライブラリだけを専用のディレクトリにコピーすることにしました。
(include/oggの下にconfigure.inスクリプトがあり、そこでint32やint64のデータ型変換を行っている点だけが気になりますが、このまま続けます。)
スタティックライブラリを利用し、Visual Studio 2005 でコンパイルしました。
コンパイルすると大量のワーニングが出力されます。 警告は、大きく以下のような物でした。
気になる警告は、C4244、C4305、C4706とC4996ですが、最初の二つは信用する事にして放置とします。
C4706は、問題無し。 C4996は、ソースコードに責任がある警告ではないので、取り敢えず放置としました。
ここも2-5と同じ方針で、include/vorbisとスタティックライブラリをコピーしました。
include/ogg、include/vorbis、libogg_static.lib、libvorbis_static.lib、libvorbisfile_static.lib を利用しています。
この話題は、次のページで整理します。 インストール作業はひとまず終わりとしました。
お疲れ様でした。
作成日:2010/11/12