Кодировать текстуру OpenGL, используя GStreamer & NVENC? - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть приложение openGL, которое рендерит данные в текстуру rgba.Я хочу кодировать и передавать его с помощью gstreamer framework (используя плагин nvenc для кодирования h264).

Я просматривал документацию для решения этих проблем:

  1. Как экспортировать существующийКонтекст openGL приложения для элемента nvenc.
  2. Как передать идентификатор текстуры из источника?
  3. Как будет работать синхронизация.то есть nvenc должен дождаться окончания рендеринга, и приложение должно дождаться окончания чтения nvenc из текстуры.Я предполагаю, что это будет связано с использованием заборов синхронизации или glMemoryBarriers.

Любой пример кода будет действительно полезным.

Я действительно хочу избегать любых копий текстур в память процессора.NVENC SDK от Nvidia упоминает, что для выполнения вызовов используется контекст CUDA, а текстуру openGL можно импортировать в контекст CUDA с помощью вызова cudaGraphicsGLRegisterImage.Так что я ожидаю, что от приложения к видео кодированный кадр можно сделать без каких-либо копий.

...