!!!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ライブラリ版の作成方法は書いていないが、やってみたい方に必要な基礎知識は得られるかも。