1

ビデオを作成するためにキャプチャして画面にレンダリングしている一連のjpg画像があります。

JpegBitmapDecoderを使用してMemoryStreamから画像を解凍し、ImageコントロールでSourceを設定してレンダリングしています。これは問題なく機能しているようですが、プロセッサのオーバーヘッドはかなり高くなっています。画像は1280x720で、30 fpsで実行されており、コンピューター(Dual Core 2.8Ghz)についていくことはほとんどできません。より高い解像度で実行すると、フレームが破棄されます。CPU使用率を下げてみたいと思います。

費やされた時間のほとんどはデコードに費やされているようです(私のマシンでのデコードだけの単純なベンチマークは、約40fpsをデコードできることを示しています)。より高速なデコーダーが利用可能かどうか誰かが知っていますか(DirectX?DirectShow?ビデオカードにオフロードできるものはありますか?)

レンダリングに関しては、Imageコントロールがこのタイプの使用のために設計されているようには見えません(実際には、それがまったく機能することに驚きました。簡単だったので試してみました)。より高速な個々のフレームをレンダリングする別の方法はありますか?

4

1 に答える 1

1

jpegのデコードとサイズ変更を同時に行っているようです。サイズ変更も高額になる可能性があります。jpegのデコードとサイズ変更を(利用可能な最も安価なアルゴリズムを使用して)分離してみてください。解凍するには「JPEG_FAST」、サイズ変更するには「FILTER_BOX」を使用したFreeImageなどを使用します。

表示に関しては、TinyPTCはシンプルで高速です。(DirectDrawのラッパー)Cですが、参照可能なdllのラッパーを作成してコンパイルするのは非常に簡単です。

于 2009-07-11T14:38:19.507 に答える