2010年9月27日月曜日

JMェ

そーいえば、UbuntuにはJM reference入れてなかったなー、と思い出し、ビルドすることにした。

wget http://iphome.hhi.de/suehring/tml/download/jm17.2.zip
unzip ./jm17.2.zip
cd ./JM
chmod +x ./unixprep.sh && ./uniexprep.sh
make

/JM/binにldecod.exeとlencod.exeの出来上がり!…って、.exe?

どうやらJMの中の人たちにとって、UNIXとはCygwinのことらしいです。

2010年9月20日月曜日

Spamming Dutchman

x264.nlが配布しているx264.exe(for 32bit Windows)のr1722でmp4出力が出来なかった件について。

#L-SMASH@freenodeにて
2010年9月18日
00:15 (golgol7777) seems GPAC guys commited the patch today.
00:16 (jarod) what patch?
00:16 (jarod) something good?
00:17 (golgol7777) this patch@r2043 https://sourceforge.net/tracker/?func=detail&aid=3058368&group_id=84101&atid=571738
00:18 (golgol7777) but mingw build is still broken...
00:21 (Chikuzen) jarod: GPAC broke completely as it is impossible to compile with mingw after all.
00:21 (Chikuzen) you cannot update GPAC any longer.
00:22 (jarod) ah ok, well thats their problem then
00:22 (jarod) my script will keep using latest working libs it has
00:23 (jarod) and when x264 no longer thinks it should use gpac, we shall move along

2010年9月19日
20:55 (Chikuzen) jarod: https://sourceforge.net/projects/gpac/forums/forum/287547/topic/3857579
23:01 (jarod) Chikuzen
23:01 (jarod) - gpac revision 2053 done
23:02 (jarod) but i heard its making x264 buggy
23:02 (jarod) with .mp4 output
23:03 (Chikuzen) indeed
23:04 (jarod) but it does compile (and create the lib)
23:07 (Chikuzen) realy? I challenged and got failed for about three hours ago.
23:10 (Chikuzen) if you are good in build at r2053 , then use it
23:10 (Chikuzen) r2053 has finished the bug fix
23:11 (Chikuzen) r2053 includes wewk's patch
23:34 (jarod) but cruncher reports x264 failing with .mp4 output
23:44 (Chikuzen) x264_x86_r1722_nl.exe --help
23:45 (Chikuzen) .mp4 -> MP4 if compiled with GPAC support (no)
23:46 (Chikuzen) your binary has not linked libgpac_static.a
23:47 (jarod) lol ok
23:47 (jarod) that explains
23:50 (jarod) but then x264 fails to link but continues compiling
23:50 (jarod) lemme test
23:52 (jarod) Warning: gpac is too old, update to 2007-06-21 UTC or later
23:52 (jarod) gpac: no
23:52 (jarod) hihi
01:05 (jarod) ok
01:05 (jarod) gpac 2039 is now being used
01:05 (jarod) better something then nothing :)

「GPACの更新はしないように」って、ちゃんと釘を刺しといたんだけど…orz
golgol氏曰く「 libgpac_static.a は ar で固めてるだけなんだから、例えビルドに失敗してても.aが生成されるのは当たり前」だそうである。

jarod氏がGPAC公式のsvnを使わずgolgol氏のgitレポを使えばすべては解決する。
golgol氏のレポは色々なバグフィックスが行われていて、最新のmingwでも問題なくビルドできるようになっているから。
しかし、このオランダ人はとにかくplainビルドにこだわり、自分が配布するバイナリには絶対にパッチをあてたりしないのである。
確かにx264自体はplainにこだわる必要があるだろう。彼のバイナリはx264のバグ検出用という重要な側面がある。
でも、バグがあるにもかかわらず半ば放置状態のGPACまでplainにこだわる必要はあるんかいな?

ちなみに、こんな人がビルドしてるx264.nlのバイナリですが、信頼性は(基本的には)高いです。
なんせ周りにいる人たち(主にkemuri_9氏)が面倒見てますから。
どこのビルドのx264を使えばいいのかわからない人は、x264.nlのバイナリを使ってください。

2010年9月10日金曜日

ふわふわさん

某月某日某所にて
19:23 (Chikuzen) "Reminder: only 152 days left"ってなんのことだろうと思ったら
19:23 (JEEB) wwww
19:24 (Chikuzen) 「空の境界」のBD発売までのカウントダウンかよ
19:24 (JEEB) TheFluff氏が予約したしねぇw
19:26 (TheFluff) kara no kyoukai is important ok

Anime makes you stupidってのは、自分のことなのだな…

2010年9月7日火曜日

x264_L-SMASHのビルド

以前書いたlavf/ffmsつきx264のビルドに関する記事を数ヶ月ぶりに読み返してみた。
なんというか冷や汗ものである。
このまま放置しておくのは色々危険そうな気がするので、もう一度書いておく。
でも、普通のx264では面白くないので、今回は現在開発進行中のx264_L-SMASHのビルドにする。

用意するもの
autoconf/libtoolが使えるmsys環境、mingw、pkg-config、wget、subversion、msysgit、nasm、yasm、pthread-w32、zlib、bzip2
あきれるほどマメなMPC-HC開発者XhmikosR氏がこちらで配布しているセットを使えば、msysgit以外すべて揃っているのでとても楽である。 (説明の手間が省けるので)
あとは自分の環境に合わせて/etc/fstabと/etc/profileをいじり、別にインストールしたmsysgitのgit.exeにPATHを通すなりすればよい。

1.x264_L-SMASH_clone.sh
x264_L-SMASHはこちらで公開されているが、そのままgit cloneすると、バイナリのバージョン表記がおかしくなるので、ここにあるx264_L-SMASH_clone.shを使ってcloneする。
DLしたら、この.shを$HOMEに置いておくこと。
もしくは
wget http://up-cat.net/wiki.cgi?action=ATTACH&page=L-SMASH&file=x264_L-SMASH_clone.sh -O $HOME/x264_L-SMASH_clone.sh
を、スクリプトに追加する。

2.ビルド
あとは以下のスクリプトを実行すればおしまい。現状で使用できるaudio用codecを全部リンクしたx264.exeが出来る。
変数の内容は各自で自分の環境にあわせていじるように。
QuickTime SDKをインストールしていない場合や、libfaacをリンクさせたくない場合は、適当にコメントアウトすること。
#!/bin/sh
#Preparation
WORK=$HOME/LSMASH
PREF32=/mingw/i686-pc-mingw32
PREF64=/mingw/x86_64-w64-mingw32
HOST64=x86_64-w64-mingw32
CROSS64=x86_64-w64-mingw32-
QTSDK=/g/quicktime_sdk

cp /bin/pkg-config.exe /bin/${CROSS64}-pkg-config.exe

mkdir $WORK/src

#download src
cd $WORK/src
wget\
    http://downloads.sourceforge.net/project/lame/lame/3.98.4/lame-3.98.4.tar.gz\
    http://downloads.sourceforge.net/faac/faac-1.28.tar.bz2\
    http://downloads.sourceforge.net/project/opencore-amr/opencore-amr/0.1.2/opencore-amr-0.1.2.tar.gz
git clone git://github.com/mstorsjo/vo-aacenc.git
git clone git://github.com/mstorsjo/vo-amrwbenc.git
git clone git://git.libav.org/libav.git libav
svn co http://ffmpegsource.googlecode.com/svn/trunk/ ffms
$HOME/x264_L-SMASH_clone.sh
cp -r . $WORK/x86
cp -r . $WORK/x64

#32bit
cd $WORK/x86
for i in ./*.gz ; do tar zxvf $i ;done
for i in ./*.bz2 ; do tar jxvf $i ; done
rm ./*.gz ./*.bz2

cd ./lame*
./configure\
    --prefix=$PREF32\
    --disable-shared\
    --enable-nasm
make clean && make && make install-strip

cd ../faac*
./configure\
    --prefix=$PREF32\
    --disable-shared\
    --without-mp4v2
make clean &% make && make install-strip

cd ../opencore*
./configure\
    --prefix=$PREF32\
    --disable-shared
make clean && make && make install-strip

cd ../vo-aacenc
autoreconf
./configure\
    --prefix=$PREF32\
    --disable-shared
make clean && make && make install-strip

cd ../vo-amrwbenc
autoreconf
./configure\
    --prefix=$PREF32\
    --disable-shared
make clean && make && make install-strip

cd ../libav
./configure\
    --prefix=$PREF32\
    --cpu=i686\
    --disable-doc\
    --disable-ffprobe\
    --enable-gpl\
    --enable-version3\
    --enable-postproc\
    --disable-network\
    --enable-w32threads\
    --enable-runtime-cpudetect\
    --enable-memalign-hack\
    --enable-libopencore-amrnb\
    --enable-libopencore-amrwb\
    --enable-libvo-aacenc\
    --enable-libvo-amrwbenc\
    --disable-encoders\
    --enable-encoder=aac,ac3,alac,vorbis,libopencore_amrnb,libvo_aacenc,libvo_amrwbenc\
    --disable-muxers\
    --disable-hwaccels\
    --disable-devices\
    --disable-protocols\
    --enable-protocol=concat,file,pipe,md5\
    --disable-debug\
    --extra-cflags=-fno-strict-aliasing
make clean && make && make install

cd ../ffms
PKG_CONFIG_PATH=${PREF32}/lib/pkgconfig/ \
./configure\
    --prefix=$PREF32
make clean && make && make install-strip

cd ../x264_L-SMASH
PKG_CONFIG_PATH=${PREF32}/lib/pkgconfig/ \
./configure\
    --qtsdk=$QTSDK\
    --enable-win32thread\
    --enable-nonfree
make clean && make
cp ./x264.exe /usr/local/bin/x264ls_x86_\
`x264 --version|grep "x264"|awk '{print $2}'|awk -F . '{print $3}'`.exe

#64bit
cd $WORK/x64
for i in ./*.gz ; do tar zxvf $i ;done
for i in ./*.bz2 ; do tar jxvf $i ; done
rm ./*.gz ./*.bz2

cd ./lame*
./configure\
    --host=$HOST64\
    --prefix=$PREF64\
    --disable-shared\
    --enable-nasm
make clean && make && make install-strip

cd ../faac*
./configure\
    --host=$HOST64\
    --prefix=$PREF64\
    --disable-shared\
    --without-mp4v2
make clean && make && make install-strip

cd ../opencore*
./configure\
    --host=$HOST64\
    --prefix=$PREF64\
    --disable-shared
make clean && make && make install-strip

cd ../vo-aacenc
autoreconf
./configure\
    --host=$HOST64\
    --prefix=$PREF64\
    --disable-shared
make clean && make && make install-strip

cd ../vo-amrwbenc
autoreconf
./configure\
    --host=$HOST64\
    --prefix=$PREF64\
    --disable-shared
make clean && make && make install-strip

cd ../libav
./configure\
    --prefix=$PREF64\
    --target-os=mingw32\
    --cross-prefix=$CROSS64\
    --cpu=x86_64\
    --arch=x86_64\
    --disable-doc\
    --disable-ffprobe\
    --enable-gpl\
    --enable-version3\
    --enable-postproc\
    --disable-network\
    --enable-w32threads\
    --enable-runtime-cpudetect\
    --enable-memalign-hack\
    --enable-libopencore-amrnb\
    --enable-libopencore-amrwb\
    --enable-libvo-aacenc\
    --enable-libvo-amrwbenc\
    --disable-encoders\
    --enable-encoder=aac,ac3,alac,vorbis,libopencore_amrnb,libvo_aacenc,libvo_amrwbenc\
    --disable-muxers\
    --disable-hwaccels\
    --disable-devices\
    --disable-protocols\
    --enable-protocol=concat,file,pipe,md5\
    --disable-debug\
    --extra-cflags=-fno-strict-aliasing
make clean && make && make install

cd ../ffms
PKG_CONFIG_PATH=${PREF64}/lib/pkgconfig/ \
./configure\
    --host=$HOST64\
    --prefix=$PREF64
make clean && make && make install-strip

cd ../x264_L-SMASH
PKG_CONFIG_PATH=${PREF64}/lib/pkgconfig/ \
./configure\
    --host=$HOST64\
    --cross-prefix=$CROSS64\
    --enable-win32thread\
    --enable-nonfree
make clean && make
cp ./x264.exe /usr/local/bin/x264ls_x64_\
`x264 --version|grep "x264"|awk '{print $2}'|awk -F . '{print $3}'`.exe

L-SMASH

最近、x264のビルダーやってる人たちの多くが採用しているパッチにmp4muxer.diffなるものがある。
このパッチ、オリジナルはVFR_maniac氏によるもので、内容はlibgpacなしでもx264でmp4出力出来る様にするというものであるが、実はそれだけではなく他にも色々と追加機能(音声やchapterのmuxとか)が盛り込まれていたりする。
色々と盛りだくさんなので、たしかに使わないよりは使ったほうがいいかもしれないが、ときどき不思議に思うのである。
「みんなよくこんなわけのわからんものを平気でホイホイ使うよなぁ…しかも自分で使うだけではなく他人にまで配布するなんて」
自分の知る限りでは、このパッチの内容(なにが出来るかとか)を把握できているビルダーは、VFR_maniac氏本人を除けば、あとはHenry氏wipple氏しかいない。JEEB氏も知っているだろうと思う人もいるかもしれないが、彼は基本的にmkv大好きな人なので、これに関しては先の2名ほど熱心ではないと思う。彼らは全てL-SMASH projectのメンバーではあるが、そこにはやはり、それなりの温度差というものが存在するのではなかろうか。

それにしても、注目されているのかいないのかよくわからないプロジェクトである。
#x264における評判は悪くないんだけどフォーラムにもIRCチャンネルにも質問しに来る人間が一人もいない。
やっぱりmkvではなくmp4だからかな?

2010年9月2日木曜日

Ubuntu奮戦記 その7

長いことご無沙汰してました。
もはや当時なんで苦労していたのかさっぱり覚えていません。
たしかパッケージに関することだったと思うんだけど…なんだっけなぁ。
checkinstallを使ってあれこれやってたはずなんだが。

忘れてしまったものは仕方がないので、このテーマはこれで終了にします。