Я пытаюсь захватить выходной кадр камеры и обработать его дальше в контуре GPU. По этой причине наилучшим вариантом является сохранение кадра в качестве текстуры графического процессора. После наследования от QVideoFilterRunnable класс, полученный методом run, QVideoFrame имеет тип, который не равен QAbstractVideoBuffer::GLTextureHandle. Он равен NoHandle
, и мне нужно сделать карту/размонтировать и загрузить текстуру вручную на glTexImage
, что не очень удобно для производительности. Существуют ли какие-либо параметры управления, которые можно использовать для возврата имени текстуры?Qt iOS: как вернуть QVideoFrame с типом GLTextureHandle из QVideoFilterRunnable
Некоторые примечания:
Выглядит хорошо на Android. Возвращается кадр текстуры так это работает как шарм:
QVideoFrame* input = ...; GLuint texture = input->handle().toUInt(); f->glBindTexture(GL_TEXTURE_2D, texture);
Это возможно в общем, есть IOS функция кэша текстур:
CVPixelBufferRef pixelBuffer = ...; CVOpenGLESTextureCacheCreateTextureFromImage(..., pixelBuffer, ..., &textureRef); texture = CVOpenGLESTextureGetName(textureRef);