8

GigE YUV ビデオ ストリームを読み取り、画面に表示するアプリケーションがあります。プロファイリングにより、各フレームを YUV (UYVY) から RGB24 に変換する関数が、カメラからスクリーンへのパイプラインの他のどの部分よりも少なくとも 1 桁多くの時間と CPU を消費していることがわかりました。

私たちが使用している変換関数は、GigE ソフトウェア ベンダー ( Pleora ) によって提供されており、独自の「単純な」(最適化されていない) 実装よりもわずかに高速です。残りのパイプラインには DirectShow を使用しています。「タスク マネージャー ベンチマーク」は、1080p 30fps ストリームの場合、変換をスキップすると (もちろん画像が文字化けします) 4 ~ 5% の CPU 使用率を示し、変換関数を呼び出すと 15 ~ 19% の CPU 使用率を示します。

質問は次のとおりです。

  1. サードパーティの SDK や独自の (CPU ベースのシリアル) 変換関数に頼るのではなく、できればよりパフォーマンスの高い方法で、この変換を行う DirectShow フィルターはありますか?
  2. この変換は CPU で行う必要がありますか、それとも並列処理のために何らかの方法で GPU にオフロードできますか?

ありがとう!エリック。

4

1 に答える 1

4

変換はおそらく GPU 処理の良い候補ですが、変換されたデータをどうするつもりですか? ソフトウェアでさらに処理するために必要な場合、ビデオ アダプターから読み返すと、処理を GPU にオフロードすることで得られたすべての利点が台無しになる可能性があります。プレゼンテーション目的でのみ必要な場合は、変換する必要はありません。YUV 画像をビデオ アダプターに直接配信し、この方法で表示させることができます (パイプラインの理想的な構成です。任意の変換)。

ソフトウェア変換について言えば、現在使用している変換の品質についてはわかりませんが、高度に最適化された (SIMD 対応の) 変換が利用可能です。

  1. 標準 Windows Vista+ DMO
  2. FFmpeg の libswscale
  3. インテル® IPP プリミティブ

3 つすべてが、多かれ少なかれ DirectShow パイプラインに簡単にプラグインできます。さらに、高解像度の画像は、並列ソフトウェア処理にも適しています。

于 2012-10-18T18:37:29.760 に答える