2015-11-16 11 views

Trả lời

8

Tắt, tôi không thể sử dụng phương thức cuvidCreateVideoSource, nhưng thay vào đó, tôi có thể cấp từng khung dữ liệu trực tiếp cho trình phân tích cú pháp video cuda bằng cách gọi cuvidParseVideoData.

Dưới đây là ví dụ về việc đọc một khung hình từ một tệp và cho nó vào trình phân tích cú pháp cuda. Các tập tin được tạo ra bởi tôi bằng cách viết kích thước của mỗi khung vào tập tin, tiếp theo là dữ liệu khung. Tệp có thể dễ dàng được thay thế bằng cách đọc từ ổ cắm:

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

Làm cách nào để bạn trích xuất khung và kích thước khung hình từ luồng ổ cắm? –

+0

bạn nên tham khảo API bạn đang sử dụng để gửi và nhận dữ liệu socket. Nó không có gì để làm với Cuda Video, chỉ gửi và nhận dữ liệu cơ bản bằng cách sử dụng ổ cắm. – pauld

Các vấn đề liên quan