5

我正计划编写一个应用程序,在该应用程序中,我需要能够对来自 FBO 附加纹理的给定图像序列的视频进行编码。我想利用 GPU 并行性的优势,并最大限度地做到“服务器端”。所以我发现 NVidia 有一个使用 CUDA 编码视频的SDK,但是在阅读了 SDK白皮书之后,我仍然不清楚是否可以在不离开 GPU 的情况下发送 FBO 纹理作为 NVCUVENC(编码器)的图像帧源。我相信从 CPU 上传图像给编码过程增加了巨大的开销,因为如果我不能直接在 GPU 端获取 FBO 纹理,这意味着我必须将其像素读取到 CPU,然后再将它们发送到 GPU 进行编码。所以我基本上有两个问题:

  1. NVIDIA CODEC 库是否允许做我想做的事?

  2. 如果没有,是否可以使用其他 GPGPU SDK(如 OpenCL 甚至 OpenGL 4.3 计算着色器)来完成?

任何与 DirectX 或其他与 Windows 相关的东西都不能考虑,因为我需要它用于 Linux。我也只使用 NVidia 硬件。

4

1 回答 1

3

是的,您绝对可以将 OpenGL 生成的图像传输到 CUDA 编解​​码器库中。查看 CUDA API 参考。您最感兴趣的是纹理参考管理图形互操作性。基本思想是,CUDA 允许您获取纹理对象的设备端内存映射,您可以将其作为图像源传递给编码器。

于 2012-12-13T10:13:48.803 回答