« Theora と MPEG I | メイン | Theora のデコードをもっと速く その1 »

2007年10月27日

吉里吉里2/KAG3ムービー拡張日誌:: 独自エンジンとその有用性

    

動画再生エンジン開発日誌で独自エンジンを作っているけれども、マルチスレッド化していくとデッドロックに注意しないといけなくて、結局 DirectShow と同じようにわずらわしいと思い始めた。
まあ、ソースがすべて見えるのと、自分が作っているので少しわかりやすいと言えばいいのだが、DirectShow のように初めからフレームワークが決まっているわけではないので、そこが少し辛い。
これは、シーケンス図などのドキュメントを整備しないと、DirectShow で作るのと大差ないな。

まあ、それはいいとして、独自エンジンのアドバンテージについて。
上述のエンジンでは、MPEG I のデコードが出来るようにしていっているが、これは輝度のみをデコードし、色差のデコードをある程度飛ばす設定が出来るようにしている ( 元々モノクロディザ用に用意してあったものをディザをなくして、スキップフラグにしただけなんだけど ) 。
で、なぜ輝度のみのデコードを残したかと言うと、アルファチャンネルのため。
つまり、色のチャンネルとアルファチャンネルのムービーを MPEG I で多重化し、アルファチャンネル側のムービーは色差のデコードを端折って少し軽くなるようにするため。
この二つのストリームを同時にデコードして、レンダラー側で合成。アルファ付きムービーの完成。としたいなぁと思っている ( Theora が意外に軽くて楽しくて完成が少し遠のいてきた感あり ) 。

もうひとつは、瞬間的なビデオストリームの切り替え。
DirectShow の MPEG ムービーでも複数のビデオストリームを持っているファイルを再生する時、ストリームを切り替えられるのだが、数秒タイムラグがある。
このタイムラグは結構大きいので、ストリーム切り替えはあんまり使えない。
でも、独自にすると負荷は高くなるけど、ある程度までデコードを同時に進めておくことが出来、瞬時の切り替えが実現できる。
瞬時の切り替えが出来ると、マルチアングルムービーとか作って、任意のタイミングで視点を切り替えたり出来る。
これは、アルファ付きムービーよりも用途が限定されるが、マルチアングルムービーは時々欲しい。

とまあ、思い付くアドバンテージは、この2つぐらい。
後は、作りたい機能を実現するために内部構造を自由にコントロールできることぐらいか。



投稿者 Takenori : 2007年10月27日 01:44




comments powered by Disqus
Total : Today : Yesterday : なかのひと