2008-04-12

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

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

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

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

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

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

No comments:

Post a Comment

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.