我有一个openGL应用程序,它将数据呈现为rgba纹理。我想用gstreamer框架(使用nvenc插件进行h264编码)对其进行编码和流。
为了解决这些问题,我仔细阅读了文档:
任何示例代码都会非常有用。
我确实想避免任何纹理拷贝到cpu内存。Nvidia的NVENC提到它使用CUDA上下文进行调用,openGL纹理可以通过cudaGraphicsGLRegisterImage调用导入到CUDA上下文中。因此,我的期望是,从应用程序到视频编码帧可以做到没有任何副本。
发布于 2020-09-23 02:44:59
我知道这是个老问题,但万一别人碰到这个问题.
OpenGL和CUDA编码装置的样本代码可以在NVENC的样本中找到。
编辑:
NvEncMapInputResource的同步保证似乎只适用于单线程情况(还是在同一个GL上下文中?)。如果呈现和编码发生在不同的线程和上下文中,则必须在映射之前添加同步对象。
https://stackoverflow.com/questions/58084387
复制相似问题