質問

いくつかのフル PAL ビデオ (720x576@25) を YUV 4:2:2 から RGB にリアルタイムで変換し、おそらくそれぞれカスタム サイズ変更する必要があります。これを行う例をいくつか見たので、GPUを使用することを考えました(4:4:4であるため、ソースとデスティネーションのbppが同じであることを除いて)-- http://www.fourcc.org/source/YUV420P-OpenGL-GLSLang.c

ただし、GPU を使用した経験がなく、何ができるかわかりません。私が理解している例では、ビデオ フレームを YUV に変換して画面に表示するだけです。

加工済みのフレームを代わりに入手することは可能ですか?それを GPU に送信し、変換してからメイン メモリに再度送信することに労力を費やす価値はあるでしょうか。それとも、パフォーマンスが低下するでしょうか?

少しプラットフォーム固有ですが、Windows で作業していると仮定すると、GPU が直接描画できるように、ウィンドウから OpenGL または DirectDraw サーフェスを取得することは可能ですか?

役に立ちましたか?

解決

本当の質問は、このことから何を得ることを期待しているかということです。

ビデオを受信して​​いるフレーム レートで、インテル パフォーマンス プリミティブのようなものを使用して、必要ないくつかの操作を実行し、ストリームに簡単に追いつくことができます。

GPU プログラミングの方法を学びたい場合、これは実装できる素晴らしい簡単な問題です。

GPU からメモリへのリードバックを実行することで、処理されたフレームを取得できます。実際の仕組みは、使用する API (OpenGL、DirectX、CUDA、OpenCL) によって異なります。私ははるかに高い解像度のビデオでこれを実行しましたが、それでも 25fps ストリームを維持できました。ただし、これはすべて、使用するハードウェアによって異なります。

DirectX と OpenGL には、Windows サーフェスをレンダー ターゲットとして使用するための優れたチュートリアルがあります。

他のヒント

私は実際にCでCUDAのためにこれをプログラムし、とpthread Cの1を(ちょうど楽しみのために、あなたを気にしても。)そして、私はGPUがとても速く、あなたの時間の50から80パーセントを費やすことに働くことを発見しましたあなたは完全にGPUのメモリを毎回いっぱいあっても、前後にデータを送信します。このため、CPUはかなり同じくらい速いGPUは、できる限りこの仕事をしました。あなたはとても近代的なハードウェアと、メモリ帯域幅が最大の問題である、考え出したことなど。

この問題は非常に友好スレッドです

私は、CPUなどのコアi7プロセッサーでこれをテストし、グラフィックスカードとしてのGeForce 8800GT / GTX 285。これに関係なく、あなたが何を選ぶか、1920x1080のビデオの1500fps私の知る限りで処理されていないGTX285は、物事は驚くほど速くなります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top