2011-02-09 17 views
2

クワなしでGPUにメモリを割り当てることはできますか?ビデオ用のGPUメモリ割り当て

さらに詳しい情報を追加しています... VLCからデコードされたビデオフレームを取得し、ビデオにいくつかの合成機能が必要です。新しいSDLレンダリング機能を使用しています。 デコードされたデータをsdlのテクスチャに送る必要があるまでは、すべて正常に動作します...そのコードの部分は、ビデオ操作のために遅い標準のmallocによって処理されます。

は、今私は、GPUのビデオを使用すると、実際に私が

+0

私はいくつかの詳細を追加しました – koda

+1

それはすべてを変えます。 – karlphillip

答えて

2

リアルタイムビデオ処理を達成しようとしていますか?最新のアップデートで問題が大幅に変更されたので、別の回答を追加しています。

slowness」は、いくつかの理由が考えられます。 "リアルタイム"の効果(知覚的意味で)を得るには、フレームを処理して33msで表示する必要があります(約30fpsビデオの場合)。つまり、フレームをデコードし、そのフレーム上で合成機能を実行し、この時間枠内で画面に表示する必要があります。

合成機能のCPU使用量が多すぎる場合は、この作業を高速化するためにGPUプログラムを作成することを検討してください。しかし最初のものは、アプリケーションのボトルネックがどこにあるかを正確に判断します。アプリケーションを一時的に取り除いて、フレームをデコードして画面に表示させる(合成機能を実行しない)ことができます。その速度が遅い場合、デコード処理でCPU/RAMリソースが多すぎる可能性があります(おそらくあなた側のバグでしょうか?)。

私は同じプロジェクトにFFMPEGとSDLを一度使用しました。私はその結果に非常に満足しています。 This tutorialは、両方のライブラリを使用して、ビデオプレーヤーを行うことを示しています。基本的には、ビデオファイルを開き、フレームをデコードし、表示するためにサーフェス上にレンダリングします。

3

あなたはDirect3D 11 Compute ShadersまたはOpenCL経由でこれを行うことができます助けることさえわかりません。これらはCUDAと似ています。

3

はい、そうです。 OpenGLテクスチャを使用してGPUにメモリを割り当てることができます。

1

グラフィックスフレームワークを介してのみ間接的に。 事実上すべてのコンピュータでサポートされているOpenGLを使用できます。

頂点バッファを使用してデータを格納することができます。頂点バッファは通常レンダリングのための点を格納するために使われますが、それを使ってあらゆる種類の配列を簡単に格納することができます。テクスチャとは異なり、その容量は使用可能なグラフィックメモリの量によってのみ制限されます。

http://www.songho.ca/opengl/gl_vbo.htmlには、データを読み込んで頂点バッファに書き込む方法に関するチュートリアルがありますが、頂点バッファを描画することについてはすべて無視できます。