VLC のビルドに挑戦

VLCWindows バイナリが 0.9.4 から更新されない(提供してくれるボランティアがいないから?)ので自分でビルドしてみる。
ソースの INSTALL.win32 を読んだところ Cygwin を使うのが良さそう。
coLinux で mingw32 cross-compiler を使うという手も考えて mingw32, mingw32-binutils, mingw32-runtime はインストールしたけれど、関連するライブラリのビルドが面倒そうだったので Cygwin でうまくいかなかった場合に採用しよう。
一応 Cygwin は入っているので http://wiki.videolan.org/Win32CompileCygwinNew を元に必要なパッケージを追加する。
Contrib は最新の http://people.videolan.org/~jb/Contribs/contrib-20081021-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2 を使用。
解説の通り以下の configure-vlc.sh を作成して実行。

PATH=/usr/win32/bin:$PATH \
PKG_CONFIG_LIBDIR=/usr/win32/lib/pkgconfig \
CPPFLAGS="-I/usr/win32/include -I/usr/win32/include/ebml" \
LDFLAGS=-L/usr/win32/lib \
CC="gcc -mno-cygwin" CXX="g++ -mno-cygwin" \
 ./configure \
     --host=i686-pc-mingw32 \
     --disable-gtk \
     --enable-nls --enable-sdl --with-sdl-config-path=/usr/win32/bin \
     --enable-avcodec --enable-avformat --enable-swscale \
     --enable-faad --enable-flac --enable-theora \
     --with-wx-config-path=/usr/win32/bin \
     --with-freetype-config-path=/usr/win32/bin \
     --with-fribidi-config-path=/usr/win32/bin \
     --enable-live555 --with-live555-tree=/usr/win32/live.com \
     --enable-caca --with-caca-config-path=/usr/win32/bin \
     --with-xml2-config-path=/usr/win32/bin \
     --with-dvdnav-config-path=/usr/win32/bin \
     --disable-cddax --disable-vcdx --enable-goom \
     --enable-twolame --enable-dvdread \
     --enable-debug  --enable-dca \
     --disable-mkv --disable-taglib

以下のオプションは存在しないと怒られた。

  • --disable-gtk
  • --with-wx-config-path
  • --with-freetype-config-path
  • --with-fribidi-config-path

gtk でなくて qt4 になったということかな? 他はどういうことだろう?
まぁ、そのまま make。
QT4 は w32api 3.12 でコンパイルするとまずいみたいなのに disable になってないな。
エラーになるかも。
Contrib が新しくなっているから問題なくなっているということはあるかなぁ?
駄目だったら 3.11 で試してみよう。
Comodo の cfp がやたらと CPU を使う。
ネットワークケーブルを抜いて cfp を停止させた。


make が終わったので make package-win32-zip としたら axvlc.dll がないと怒られた。
activex 関係のライブラリみたい。
ビルドするには Visual Studio が必要らしい。
Linux でビルドするにも Wine が必要のようだ。
activex は使うつもりはないので、あまり気にしないでおこう。
既存の vlc から axvlc.dll を持ってきて projects/activex/, projects/activex/.libs に放り込んだ。
make package-win32-zip で zip が出来上がった。
展開して動画を再生してみたけど映像が出ない。
音声は再生された。
映像の出力先がわからんよということらしい。う〜ん。

 ./configure \
     --host=i686-pc-mingw32 \
     --enable-nls --enable-sdl --with-sdl-config-path=/usr/win32/bin \
     --enable-avcodec --enable-avformat --enable-swscale \
     --enable-faad --enable-flac --enable-theora \
     --enable-live555 --with-live555-tree=/usr/win32/live.com \
     --enable-caca --with-caca-config-path=/usr/win32/bin \
     --with-xml2-config-path=/usr/win32/bin \
     --with-dvdnav-config-path=/usr/win32/bin \
     --disable-cddax --disable-vcdx \
     --enable-twolame --enable-dvdread \
     --enable-debug  --enable-dca \
     --disable-mkv --disable-taglib \
     --disable-activex --disable-visual --disable-upnp \
     --disable-alsa --disable-x11 --disable-xvideo --disable-glx

にしたら /usr/win32/bin/moc が実行できないファイルだと怒られた。
Linux 用のバイナリだったので moc, rcc, uic を削除。
解説にも削除するように書いてあるじゃないか。
引き続いて make して make package-win32-zip。
お、ちゃんと再生できるバイナリが出来上がった。
QT4 も問題ないみたい。


デバッグ情報を除いて -Os と --with-tuning=pentium-m を追加。
必要なさそうな機能も幾つか除外して再ビルド。

CC="gcc -mno-cygwin -Os" CXX="g++ -mno-cygwin -Os" \
 ./configure \
     --host=i686-pc-mingw32 \
     --enable-nls --enable-sdl --with-sdl-config-path=/usr/win32/bin \
     --enable-avcodec --enable-avformat --enable-swscale \
     --enable-faad --enable-flac --enable-theora \
     --enable-live555 --with-live555-tree=/usr/win32/live.com \
     --enable-caca --with-caca-config-path=/usr/win32/bin \
     --with-xml2-config-path=/usr/win32/bin \
     --with-dvdnav-config-path=/usr/win32/bin \
     --disable-cddax --disable-vcdx \
     --enable-twolame --enable-dvdread \
     --enable-dca \
     --disable-mkv --disable-taglib \
     --disable-activex --disable-visual --disable-upnp \
     --disable-alsa --disable-x11 --disable-xvideo --disable-glx \
     --disable-hal --disable-dbus --disable-dbus-control --disable-telepathy \
     --disable-httpd --disable-libproxy --disable-pulse --disable-skins2 \
     --with-tuning=pentium-m

H.264 の再生がかくつく。
CPU には余裕があるみたいなので他に原因がある様子。
とりあえず CC, CXX に -march=pentium-m を追加してみようか。
意味はなさそうだけど。
vlm 他、いらなそうな機能を探して削るのも良いけど再生には関係ないだろうな。