5

FBOに接続されたテクスチャからの特定の画像シーケンスからビデオをエンコードする機能が必要なアプリを作成することを計画しています。GPU並列処理の強みを活用して、すべてを最大限の「サーバー側」で実行したいと考えています。 NVidiaにはCUDAを使用してビデオをエンコードするSDKがありますが、SDKホワイトペーパーを読んだ後でも、GPUを離れずにNVCUVENC(エンコーダー)の画像フレームソースとしてFBOテクスチャを送信できるかどうかはわかりません。 CPUから画像をアップロードすると、エンコードプロセスに大きなオーバーヘッドが追加されます。これは、GPU側でFBOテクスチャを直接フェッチできない場合、そのピクセルをCPUに読み取ってから、エンコードのためにGPUに再度送信する必要があるためです。だから私は基本的に2つの質問があります:

  1. NVIDIA CODECライブラリは、私がやりたいことを実行できますか?

  2. そうでない場合は、OpenCLやOpenGL 4.3計算シェーダーなどの他のGPGPUSDKで実行できますか?

Linuxで必要なため、DirectXやその他のWindows関連のものに関連するものはすべて考慮に入れることができません。また、NVidiaハードウェアのみを使用しています。

4

1 に答える 1

3

はい、OpenGLで生成された画像をCUDAコーデックライブラリに確実に転送できます。CUDAAPIリファレンスをご覧ください。あなたにとって最も興味深いのは、テクスチャ参照管理グラフィックスの相互運用性です。基本的な考え方は、CUDAを使用すると、テクスチャオブジェクトのデバイス側のメモリマッピングを取得できるということです。これを画像ソースとしてエンコーダに渡すことができます。

于 2012-12-13T10:13:48.803 に答える