Я выполняю задачу, которая визуализирует что-то в каждом кадре видеопотока в реальном времени.текущий конвейер:
- demux h264
- копировать в gpu и декодировать в буфер cuda
- конвертировать в RGBA
- копировать в текстуру
- привязать текстуру к fbo
- визуализировать в fbo (текст, изображение, строки ...)
- преобразовать обратно в yuv
- кодировать в h264
Интересно, есть ли способ избежать шага 3 и шага 7.
Например, скопировать данные кадра YUV в текстуру одного канала размером (ш x 1,5 ч), связать эту текстуру с fbo.При некотором процессе рендеринга (фрагментный шейдер?) Используйте шейдер, считывающий координаты и цвет пикселя, конвертируйте RGBA в YUV, пишите YUV, разделенный на 3 различных координаты на текстуре NV12.
Чтобы мы могли направлять рендеринг в данные фрейма YUV, избегайте преобразования большинства неизмененных данных фрейма в процессе рендеринга из YUV в RGBA, а затем конвертируйте их обратно в YUV.
И для рендеринга текста,линии, текстуры для создания кадра с помощью nvidia gpu, если я не использую OpenGL, что я могу использовать для эффективного использования графического процессора.