Для закадрового рендера, возможно ли записать в NV12 текстуру (как GL_R) в фрагментном шейдере с помощью nvidia gpu? - PullRequest
0 голосов
/ 03 декабря 2018

Я выполняю задачу, которая визуализирует что-то в каждом кадре видеопотока в реальном времени.текущий конвейер:

  1. demux h264
  2. копировать в gpu и декодировать в буфер cuda
  3. конвертировать в RGBA
  4. копировать в текстуру
  5. привязать текстуру к fbo
  6. визуализировать в fbo (текст, изображение, строки ...)
  7. преобразовать обратно в yuv
  8. кодировать в h264

Интересно, есть ли способ избежать шага 3 и шага 7.

Например, скопировать данные кадра YUV в текстуру одного канала размером (ш x 1,5 ч), связать эту текстуру с fbo.При некотором процессе рендеринга (фрагментный шейдер?) Используйте шейдер, считывающий координаты и цвет пикселя, конвертируйте RGBA в YUV, пишите YUV, разделенный на 3 различных координаты на текстуре NV12.

Чтобы мы могли направлять рендеринг в данные фрейма YUV, избегайте преобразования большинства неизмененных данных фрейма в процессе рендеринга из YUV в RGBA, а затем конвертируйте их обратно в YUV.

И для рендеринга текста,линии, текстуры для создания кадра с помощью nvidia gpu, если я не использую OpenGL, что я могу использовать для эффективного использования графического процессора.

...