POSIX Threads for Win32(pthread-w32)
pthread-w32はWindows上でPOSIX(簡単に言えばUNIX世界の規格)に準拠したスレッド機能を実現するライブラリだ。x264のマルチスレッド機能はこのpthreadを通して動作するため、UNIXやLinux上なら単純にビルド可能だが、Windows上ではpthread-w32を使用することになる。
バイナリでも配布されているが、ここではソースからビルドする。他のライブラリ等と異なり、bootstrapやconfigureはない。いきなりmakeだ。
$ make clean GC $ cp pthread.h /mingw/include/ $ cp sched.h /mingw/include/ $ cp libpthreadGC2.a /mingw/lib/
pthreadを使うアプリケーションの動作時にはpthreadGC2.dllが必要になる。つまり、本特集では最終的に出来上がるffmpeg.exeと同じディレクトリに置こう。
staticライブラリ版(DLL不要)ではない理由は以下を参照。
staticライブラリ版に関して
筆者は苦渋の決断でDLL版を選択したが、static版が提供されていないわけではない。pthread-w32はコンパイラと目的により多種多様なバイナリを生み出すが、その選択はmakeで行う。READMEのごく一部を抜粋&和訳してみる。
make clean GC (GNU-CのCクリーンアップコード付きDLLのビルド)
make clean GCE (GNU-CのC++例外処理付きDLLのビルド)
make clean GC-static (GNU-CのCクリーンアップコード付きインライン化staticライブラリのビルド)
本特集の本来の目的からは当然GC-staticが選択されるべきであるが、上記ではGCを選択した。結果として、pthread-w32のDLLが実行時に必要になるが、これは最終的にffmpegのビルドにコード修正をなくし、その動作に不安要因をなくすためだ。
GC-staticを選択する場合には、ffmpegのソースを幾分修正し、様々な注意点をクリアしなければならない。筆者は試行錯誤と迷走の結果、pthread-w32だけはDLL版を選択することにした。おそらくpthread-w32の扱い方で困っている人は他にも沢山いるだろう…。
詳細はMinGW+ffmpeg(A)pthreadは複雑を参照。staticライブラリ版の作成方法は書いていないが、やってみたい方に必要な基礎知識は得られるかも。
最終更新時間:2008年04月10日 01時39分10秒