« DirectShow 実験プログラム第1段階 - 3 | メイン | シーケンス図が書きたい »

2004年08月03日

吉里吉里2/KAG3ムービー拡張日誌:: Texture3D(改)の最適化

    

Texture3D(改)は重い。
MPEG Video Decoderから得たIMediaSampleをテクスチャにコピーし、それをまたバックバッファーにコピーしているので、かなり重いだろう。
でも、吉里吉里でも似たようなことになる。

まずは、テクスチャへのコピー処理を小手先で最適化する。少し軽くなった。でも、それほど軽くない。と言うか、重い。
MPEG Video DecoderからRGB24で受け取り、それをX8R8G8B8にコピーしている。
はじめから、MPEG Video DecoderにX8R8G8B8で吐いてもらえば、もっと処理を軽くできるのではないだろうか?
ヘルプのMPEG-1 ビデオ デコーダ フィルタ項を読む。
MEDIASUBTYPE_RGB32がサポートされている。
と言うことは、何とかなりそうだ。
さらに次のような記載がある。
このフィルタは、DirectDraw サーフェスへのデコードも可能である。
DirectDraw サーフェスが使えれば、このコピー処理の固まりは全部すっ飛ばせるのか・・・でも、今回は出来ない。ささっと諦める。

さらによく考えると、MPEG Video Decoderに途中のバッファに書いてもらえばよいのではないだろうか?
そうすれば1回コピーがなくなる。つまり、コピー処理が2/3になる。これはいい。
MPEG Video DecoderにRGB32で中間バッファに書き込んでもらえれば、ほとんどの処理はしなくていい。
吉里吉里ではこの中間バッファがレイヤーに当たるだろうから、かなり手間いらずだ。
でも、拡縮する場合は・・・ぐぉ、中間バッファに書き込んでもらう部分は複雑になりそうだ。
しかし、コピー回数を1回増やすのは避けたい。
まずはMPEG Video Decoderに直接書き込んでもらう方法を調査だ。
軽く調べるがこれはちょっと本腰を入れてヘルプを読まねばならなそうだ。
がんばって読むか。



投稿者 Takenori : 2004年08月03日 08:45




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