Monday, January 31, 2011

[MacOSX] x264/x264_L-SMASH binary revision 1884/1884+390 [Snow Leopard]

x264_MacOSX_rev1884
x264 0.113.1884 7313bb5
(libswscale 0.12.0)
(libavformat 52.94.0)
(ffmpegsource 2.14.2.0)
built on Jan 30 2011, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: GPL version 2 or later

x264_L-SMASH_MacOSX_rev1884_390
x264 0.113.1884+390 64defd8
(libswscale 0.12.0)
(libavformat 52.94.0)
(ffmpegsource 2.14.2.0)
built on Jan 31 2011, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: GPL version 2 or later

※今回から7zipで圧縮しています。

Sunday, January 30, 2011

[MacOSX] Gitのビルド

Mac OS XでGitをビルドするのは簡単です。Xcodeさえインストールしてあれば、Gitのサイトからsourceを落としてきて、伸張して、ターミナルでディレクトリに移動(cd)して、以下のようなコマンドを入力していけば済みます。
$ ./configure --prefix=/usr/local && make -j3 && sudo make install

さて。このビルドによって作成されたバイナリがどのライブラリにlinkしているかを調べるには、otoolというコマンドを使います。
$ otool -L git
git:
/opt/local/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.0.0)
/opt/local/lib/libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

はてさて。/opt/localほにゃららにlinkしています。Gitは、/opt/local/libや/sw/libというディレクトリが存在するかをチェックして、もし存在するならそこにあるライブラリにlinkするようにしているのでこういうことになります。以下がMakefileの該当箇所です。
ifeq ($(uname_S),Darwin)
ifndef NO_FINK
ifeq ($(shell test -d /sw/lib && echo y),y)
BASIC_CFLAGS += -I/sw/include
BASIC_LDFLAGS += -L/sw/lib
endif
endif
ifndef NO_DARWIN_PORTS
ifeq ($(shell test -d /opt/local/lib && echo y),y)
BASIC_CFLAGS += -I/opt/local/include
BASIC_LDFLAGS += -L/opt/local/lib
endif
endif
PTHREAD_LIBS =
endif

この/swと/opt/localは、それぞれFinkMacPorts(旧DarwinPorts)によって作成されるものです。これらによってインストールされるライブラリは大抵/usr/lib以下にあるものより新しいものなので、普段はこれでも問題ありません。

ただ、例えばビルドしたバイナリを他の環境で動かしたい時などは問題が出る場合があります。相手の環境にFinkやMacPortsがインストールされているとは限りませんし、またたとえそれらをインストールしていても、自分の環境と同じライブラリがインストールされているとも限りません。そのため、バイナリ配布をする際には必ずotoolコマンドでチェックして、自分の環境にしかインストールされていないライブラリにlinkしていないかを確認する必要があります。

では本題。Gitでビルドする際に、/opt/local/libや/sw/libのライブラリにlinkしないようにするにはどうすればいいのか。

  1. FinkやMacPortsをアンインストール———そしてビルダーデビュー(笑)

  2. /opt/localや/swを一時的に別の場所に退避———デスクトップとか。ゴミ箱オススメ(ぉぃ

  3. Makefileの該当箇所を弄る———削除しちゃえ(爆

  4. 'NO_FINK'や'NO_DARWIN_PORTS'を定義———これが一番マシです


4の'NO_FINK'や'NO_DARWIN_PORTS'は、さっきのMakefileの抜粋の2行目と8行目にも出てきました。configureにコメントで解説が書いてあります。
# Define NO_FINK if you are building on Darwin/Mac OS X, have Fink
# installed in /sw, but don't want GIT to link against any libraries
# installed there. If defined you may specify your own (or Fink's)
# include directories and library directories by defining CFLAGS
# and LDFLAGS appropriately.
#
# Define NO_DARWIN_PORTS if you are building on Darwin/Mac OS X,
# have DarwinPorts installed in /opt/local, but don't want GIT to
# link against any libraries installed there. If defined you may
# specify your own (or DarwinPort's) include directories and
# library directories by defining CFLAGS and LDFLAGS appropriately.

手順としては、

  1. ./configureを走らせる

  2. config.mak.autogenというファイルを開く

  3. 適当な行に'NO_FINK=YesPlease'や'NO_DARWIN_PORTS=YesPlease'などと追加する

  4. makeする


とやっていきます。するとこんな感じになります。
$ otool -L git
git:
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
/usr/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

めでたしめでたしです。これで安心して/opt/localと/swをゴミ箱に捨てられます(ぉ

Friday, January 28, 2011

[MacOSX] x264/x264_L-SMASH binary revision 1882/1882+385 [Snow Leopard]

x264_MacOSX_rev1882
x264 0.113.1882 f6d0c95
(libswscale 0.12.0)
(libavformat 52.94.0)
(ffmpegsource 2.14.2.0)
built on Jan 28 2011, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: GPL version 2 or later

x264_L-SMASH_MacOSX_rev1882_385
x264 0.113.1882+385 22830e3
(libswscale 0.12.0)
(libavformat 52.94.0)
(ffmpegsource 2.14.2.0)
built on Jan 28 2011, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: GPL version 2 or later

FFmpeg Git

一昨日くらいに、x264のバイナリを新しいのにしなきゃと思って、ffmpegのgit pullをしたら「libswscaleが云々」と怒られて更新ができなくなった…。原因がよくわからなくて、一度ディレクトリを消してから再度cloneしたら直った…。そして昨日またx264の更新が来たので今朝git pullをしてみたら、今度は「Already up-to-date.」と言われた…。

え…あのFFmpegが2日も更新がないとか…。なにそれ天変地異でも起きるんですか…?(滝汗)

どうも怪しいと思ってサイト(Get FFmpeg)を覗いてみたら、とうとうsvnからgitに完全移行していました。んで、clone URLが git://git.ffmpeg.org/ffmpeg/ から git://git.ffmpeg.org/ffmpeg.git に変わっていました。これがgit pullがうまくいかなかった原因か…。

FFmpegSourceもgitに移行しないかなー。ただ単にplainのまま使うならsvnでもgitでもどっちでもいいんですが、パッチ当てたりちょっとコード弄ったり、開発面で考えるとgitの方が断然効率がいいんですよね。本当に管理がしやすい。でもGoogle Codeがgit採用していないんですよねえ…。うーん…(笑)

再度のお引越し

livedoor BlogからBloggerに引越し、更に今回また引越しをすることに。なんか尻が軽い奴だと思われるかもしれませんが、それぞれきちんと理由があります。面倒だから書きませんが…(笑)

今回はレンタルサーバを借りて、WordPressを設置しています。最近SorceForgeJPがブログ機能を追加して、それを機会に WordPressに初めて触ったのですが、惚れ込んでしまって…。外観テーマやプラグインなど、カスタマイズもしやすいし、エディタも使いやすい。実際 にブログを設置して引越しの準備まで始める有様。でも実際に記事を書いて公開してみたら、サイドバーにデカデカとSorceForgeの広告が(笑)まあ そんな虫のいい話があるわけでもなし。こりゃ駄目だと思い、それからはずっとレンタルサーバを探す旅に…(笑)

無料のレンタルサーバもたくさんあって、審査制のものには広告がつかないものまであるのでかなり悩みました。ただ、サイトのアピールとかが面倒で…。電話番号の入力とか、住所の入力とか、もうイロイロ面倒で…。おまけに追加したい機能があったら申請の連絡して許可をとるのも面倒で…。「細かいことは気にしない、でも金は払え」という方針の方が自分には合っているんだと今回実感。自分、お金ないんですけど…(笑)

結局今はCORESERVERを借りています。1日に大してアクセスがあるわけでもないし、バイナリのダウンロード数も少ないので、CORE-MINIプランです。月額200円強です。安いですね。安いってことはそれなりに不便なところもあるのでしょうけど、しばらくこれで様子見してみます。支払いは、余っているウェブマネーを使うつもり。これもCORESERVERに決めた理由。

これで知人とのファイルのやりとりで、ストレスの多いアップローダを使うこともなくなります。10MBまでならWordPressの機能でアップロードできるので、バイナリの配布も簡単。他にも色々な活用法を妄想しているけど、割愛。

そして今回引越しする際に、Blogger時代の記事もいくつか持ってきました。どうでもいい記事は消していますが。今後も参照しそうなものとか。ついでにアプリケーション備忘録とかはちょっとだけ加筆修正してあったり。livedoor Blogはエクスポートが有料なので諦めました。

記事の書き方とか、ページの設定とか、まだまだ試行錯誤中ですが、今後はこちらでよろしくお願いします。一年分お金払うつもりだから、今回は最短でも一年は引越ししません(笑)

お引越し

"wipple's room" moved to CORESERVER.JP.

http://wipple.m25.coreserver.jp/?p=177

Wednesday, January 26, 2011

[x264] Revision 1878

久々にパッチを提出して採用されたのでブログのネタに。
しばらくx264を弄るのはやめると言ったにも関わらず…。
でも、今やってることと関係があるしってことで…(笑)

今回はlavf inputです。
なんか…今後もweightpとlavf/ffms関係しか弄らない気がしてきました(笑)
コードはこれ

このパッチのきっかけはDoom10のこのスレッド

ふと気になって、ffmpegでソースを作ってlavfで試してみたら、あら?lavfがファイルを開けない。
うちだけかなと色々試行錯誤していると、質問者の環境でも開けないとエラーが出たというポスト。
やっぱり何か原因があるらしい。

ffmpegで開けるのにlavfで駄目ならlavf側の問題だろうと推測してコードを覗いてみることに。
input/lavf.cのそれらしき箇所を覗いて、適当に弄って試行錯誤して動かすことに成功。
どうやら拡張子の問題らしい。
と、ここまで整理してからスレッドに書き込もうとしたら、J_Darnley氏が既に書き込んでいました…orz
さすがです…。

でも改善できるならこれはこれで有用かなーと思い、--input-fmtオプションとして#x264devに提出することに。
動作としては、lavf inputを使用する際に、ファイルフォーマットを指定できるようになります。

ffmpegで入力ファイルフォーマットを指定するには、`-i INPUTFILE`より前に`-f FILEFORMAT`で指定します。
例えば `ffmpeg -f rawvideo -i input.yuv`と入力すれば、input.yuvをrawvideoとしてopenします。
この`-f`に相当するのが今回の--input-fmt。
先の例と同等のことをx264でしたければ、`x264 --demuxer lavf --input-fmt rawvideo input.yuv`となります。

今回のパッチ提出では、コード面で猫さんに、英語面でJEEB氏に、テスト面でChikuzen氏に頼りました。
みんな大好き。
ペロペロ。

それにしても#x264devは相変わらず緊張する…。
特にラスボスが強敵すぐる。
今回もペンギン様のドリル嘴くらいましたorz
めっちゃ怖い…。
まあ今回はコードの修正ではなくて、コメントの修正だったので気が楽でしたが…。
それでも怖い…orz
1年分の緊張をした…。

[x264] Revision 1878

久々にパッチを提出して採用されたのでブログのネタに。
しばらくx264を弄るのはやめると言ったにも関わらず…。
でも、今やってることと関係があるしってことで…(笑)

今回はlavf inputです。
なんか…今後もweightpとlavf/ffms関係しか弄らない気がしてきました(笑)
コードはこれ

このパッチのきっかけはDoom10のこのスレッド

ふと気になって、ffmpegでソースを作ってlavfで試してみたら、あら?lavfがファイルを開けない。
うちだけかなと色々試行錯誤していると、質問者の環境でも開けないとエラーが出たというポスト。
やっぱり何か原因があるらしい。

ffmpegで開けるのにlavfで駄目ならlavf側の問題だろうと推測してコードを覗いてみることに。
input/lavf.cのそれらしき箇所を覗いて、適当に弄って試行錯誤して動かすことに成功。
どうやら拡張子の問題らしい。
と、ここまで整理してからスレッドに書き込もうとしたら、J_Darnley氏が既に書き込んでいました…orz
さすがです…。

でも改善できるならこれはこれで有用かなーと思い、--input-fmtオプションとして#x264devに提出することに。
動作としては、lavf inputを使用する際に、ファイルフォーマットを指定できるようになります。

ffmpegで入力ファイルフォーマットを指定するには、`-i INPUTFILE`より前に`-f FILEFORMAT`で指定します。
例えば `ffmpeg -f rawvideo -i input.yuv`と入力すれば、input.yuvをrawvideoとしてopenします。
この`-f`に相当するのが今回の--input-fmt。
先の例と同等のことをx264でしたければ、`x264 --demuxer lavf --input-fmt rawvideo input.yuv`となります。

今回のパッチ提出では、コード面で猫さんに、英語面でJEEB氏に、テスト面でChikuzen氏に頼りました。
みんな大好き。
ペロペロ。

それにしても#x264devは相変わらず緊張する…。
特にラスボスが強敵すぐる。
今回もペンギン様のドリル嘴くらいましたorz
めっちゃ怖い…。
まあ今回はコードの修正ではなくて、コメントの修正だったので気が楽でしたが…。
それでも怖い…orz
1年分の緊張をした…。

Sunday, January 23, 2011

JMのバージョン

今朝IRCの#x264devのログをなんとなく眺めていたら、horlicks氏がregression testがうまくいかないと話しているのが目についた。以前の記事でも書きましたけど、JMにはバグがあって、もしかしてそれ関連かなーと思って更に読み進めていったら、どうやらそうではないらしい。まあ実際には原因は些細なことだったみたいで、うまくいかない問題は解決したらしい。めでたしめでたしです。


…。


え?解決した?なんだと!?

もう一度ログに目を通してみたら、horlicks氏もkomisar氏もJMのバージョンは16.0を使っているみたい。僕がテストしたのは 17.2。というわけで16.0をダウンロードしてXcodeでビルドして現在のldecodを置き替えてregression testをしてみたら…無事passed…。念の為にもう一度17.2の方もビルドしてtestを通してみたらやっぱり失敗する…。キーーーーーーーーー!!

そんなわけで今後は16.0を使うことにしました。

Saturday, January 22, 2011

JMのバージョン

今朝IRCの#x264devのログをなんとなく眺めていたら、horlicks氏がregression testがうまくいかないと話しているのが目についた。以前の記事でも書きましたけど、JMにはバグがあって、もしかしてそれ関連かなーと思って更に読み進めていったら、どうやらそうではないらしい。まあ実際には原因は些細なことだったみたいで、うまくいかない問題は解決したらしい。めでたしめでたしです。

 

…。

 

え?解決した?なんだと!?

 

もう一度ログに目を通してみたら、horlicks氏もkomisar氏もJMのバージョンは16.0を使っているみたい。僕がテストしたのは17.2。というわけで16.0をダウンロードしてXcodeでビルドして現在のldecodを置き替えてregression testをしてみたら…無事passed…。念の為にもう一度17.2の方もビルドしてtestを通してみたらやっぱり失敗する…。キーーーーーーーーー!!

 

そんなわけで今後は16.0を使うことにしました。

 

[追記]
Bloggerのエディタを使いたくなくなったので、Google ドキュメントを使って書いたんですけどうまくいかず、
投稿しては消し、また投稿しては消し…の繰り返し(笑)
今度はPetrus Bloggerを使って書いてみたんですけど、AquaSKKと相性がよくないです…(笑)
もうちょっと色々調べてみよう…。

 

[再追記]
改行が全部無視された…(笑)
きちんとしたブログエディタを探そう…orz

Thursday, January 13, 2011

[MacOSX] x264/x264_L-SMASH binary revision 1867/1867+382 [Snow Leopard]

x264_MacOSX_rev1867.zip
x264 0.112.1867 22bfd31
(libswscale 0.12.0)
(libavformat 52.92.0)
(ffmpegsource 2.14.1.1)
built on Jan 11 2011, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: LGPL version 2.1 or later

x264_L-SMASH_MacOSX_rev1867+382.zip
x264 0.112.1867+382 c5c98b8
(libswscale 0.12.0)
(libavformat 52.92.0)
(ffmpegsource 2.14.1.1)
built on Jan 12 2011, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: LGPL version 2.1 or later

x264_L-SMASHの方にはfgoパッチを当てています

※おまけ
FFmpegSource r411

wipple625(笑)
Gmailのアカウント名のまんまコミットログに載ってしまいました…。
はい…6月25日が誕生日です…(笑)

Wednesday, January 12, 2011

[MacOSX] x264/x264_L-SMASH binary revision 1867/1867+382 [64bit]

x264_MacOSX_rev1867.zip
x264 0.112.1867 22bfd31
(libswscale 0.12.0)
(libavformat 52.92.0)
(ffmpegsource 2.14.1.1)
built on Jan 11 2011, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: LGPL version 2.1 or later

x264_L-SMASH_MacOSX_rev1867+382.zip
x264 0.112.1867+382 c5c98b8
(libswscale 0.12.0)
(libavformat 52.92.0)
(ffmpegsource 2.14.1.1)
built on Jan 12 2011, gcc: 4.2.1 (Apple Inc. build 5664)
configuration: --bit-depth=8
x264 license: GPL version 2 or later
libswscale/libavformat/ffmpegsource license: LGPL version 2.1 or later

x264_L-SMASHの方にはfgoパッチを当てています


※おまけ
FFmpegSource r411

wipple625(笑)
Gmailのアカウント名のまんまコミットログに載ってしまいました…。
はい…6月25日が誕生日です…(笑)