« LIBを使わないように | メイン | レンダーレスモード »

2005年12月23日

吉里吉里 ムービー拡張日誌2:: YV12からRGB32への変換

    

バッファレンダーでYV12を受けつけるようにして、YV12からRGB32への変換を自前で実装してみた。
素で書いたら余計に遅くなった。
テーブルを使ったものにすると同じぐらいになり、MMXを使ったものにすると少し軽くなったような変わらないような。
やはり、そんなには変わらないようだ。

SSE2を使えば倍速になるかもと思ったが、調べるとPentium 4 で 7/10 程度だそうだ。
しかも、SSE2はMMX実行ユニットを2回呼び出すだけらしい。
メモリアクセス周りをもう少し改善できるかもしれないが、SSE2が使える環境では普通に再生できると思うのであんまり意味はないかも。


この結果から考えるとYV12からRGB32への変換を使う場合、Theoraはかなり辛そう。
ビデオとレイヤーを重ね合わせる時はDirectXを使わないと苦しい気がする。
DirectXを使ってもYUV系のフォーマットがサポートされていないビデオカードだとあまり意味ないが。
それよりも気になったのはMPEG Iデコーダー。
MPEG IデコーダーはRGB32で出力してくるが、MPEGもYUVで出て来るはず。
と言うことは、AhtlonXP 1600で50%ぐらいで再生されているけど、これをYUVのまま出したとするともしかして20%ぐらいになる?
そしたら、640*480 MPEG Iムービーを500 MHzでも普通に再生できるようになるかも。
なんか、こっちの方が魅力的な気がする。



投稿者 Takenori : 2005年12月23日 08:34




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