2015-11-16 26 views
7

現在、私はcudaを使ってビデオをデコードしようとしています。私はcudaDecodeD3D9と呼ばれるサンプルを持っています。このサンプルでは、​​cuvidCreateVideoSourceというメソッドを使用しています。このメソッドは、ソースビデオへのファイルポインタを受け取ります。 Cudaにメモリ/ソケット/ストリームからビデオを読み込ませる方法はありますか?ファイルの代わりにソケット/メモリを使用してCudaのビデオをデコード

答えて

8

私はcuvidCreateVideoSourceメソッドを使用することはできませんが、代わりにcuvidParseVideoDataを呼び出して、データの各フレームを直接cudaビデオパーサーに送ることができます。ここで

は、ファイルから1つのフレームを読み取り、CUDAパーサにそれを供給する例を示します。このファイルは、各フレームのサイズをファイルに書き込んだ後、フレームデータを書き込んで作成しました。ファイルはソケットから読み取ることで簡単に置き換えることができます。

unsigned int size = 0u; 
fread(&size, sizeof(unsigned char), sizeof(unsigned int), _file); 

unsigned char *buf = new unsigned char[size]; 
fread(buf, sizeof(unsigned char), size, _file); 

CUVIDSOURCEDATAPACKET packet = {}; 
packet.payload_size = size; 
packet.payload = buf; 
cuvidParseVideoData(pCudaParser, &packet); 

delete [] buf; 
+0

ソケットストリームからフレームとフレームサイズをどのように抽出しますか? –

+0

ソケットデータの送受信に使用しているAPIを参照してください。 Cuda Videoとはまったく関係がありません。ソケットを使ってデータを送受信するだけです。 – pauld

関連する問題