我正计划编写一个应用程序,在该应用程序中,我需要能够对来自 FBO 附加纹理的给定图像序列的视频进行编码。我想利用 GPU 并行性的优势,并最大限度地做到“服务器端”。所以我发现 NVidia 有一个使用 CUDA 编码视频的SDK,但是在阅读了 SDK白皮书之后,我仍然不清楚是否可以在不离开 GPU 的情况下发送 FBO 纹理作为 NVCUVENC(编码器)的图像帧源。我相信从 CPU 上传图像给编码过程增加了巨大的开销,因为如果我不能直接在 GPU 端获取 FBO 纹理,这意味着我必须将其像素读取到 CPU,然后再将它们发送到 GPU 进行编码。所以我基本上有两个问题:
NVIDIA CODEC 库是否允许做我想做的事?
如果没有,是否可以使用其他 GPGPU SDK(如 OpenCL 甚至 OpenGL 4.3 计算着色器)来完成?
任何与 DirectX 或其他与 Windows 相关的东西都不能考虑,因为我需要它用于 Linux。我也只使用 NVidia 硬件。