2008-04-12

x264のスレッドをWindowsネイティブに書き換えることについて

x264のソースコードを読んだが、pthreadからWindowsネイティブに書き換えても、それほど早くならないだろうと思われる。原理にはこうだ。

フレームごとにスレッドをつくる。スレッドは、そのフレームのみをエンコードして終了する。スレッド数の上限に達したら、一番古いスレッドが終了するまで待つ。

メインはpthread_createと、pthread_joinだし、Condition Variableなども使っているのだが、これをVistaでサポートされたAPIに置き換えても、劇的に速度が上がったりはしないだろう。ユーザモードで実装されているからだ。OSのサポートがあれば早くなる代物でもない。

マルチスレッドのエンコード速度をこれ以上上げるためには、スレッドプールを使わなければならない。これなら、WindowsのAPIを使うことで、ネイティブで実装する利点があるかもしれない。

とはいっても、どんどんスレッドプールにポストできないので、あまりWindowsの提供しているスレッドプールAPIを使う利点が見当たらないというか。

No comments: