crafter
Гость
|
|
« : Июль 13, 2016, 17:45 » |
|
Приветствую!
Собрал на QT5.7 небольшой примерчик для захвата кадров из видео потока камеры, собственно наследовал свой класс от QAbstractVideoSurface, и в методе present(const QVideoFrame &frame) ловлю эти самые кадры. Вывожу кадры в qml через: VideoOutput { anchors.fill: parent; source: videoProducer; } Так вот под виндой все работает замечательно, под android - падает. Прочитал, что под android изображение в метод present приходит не как массив, а в виде текстуры. Теперь, как советуют, пытаюсь получить id текстуры GLuint textureId = copy.handle().toUInt() и в итоге приложение падает с ошибкой - call to OpenGL ES API with no current context (logged once per thread).
Из ошибки понимаю что у этого потока нет OpenGL контекста, так вот собственно вопрос - как этому потоку, в метод bool QAbstractVideoSurface::present(const QVideoFrame &frame) передать этот самый OpenGL контекст? И опять же в каком потоке этот контекст установлен, в том где работает камера ,или может в том где происходит обработка qml VideoOutput?
Кстати у QTых примеров для работы с камерой, тоже какая-то проблема с камерой под android, по крайне мере у меня так нормально и не заработали.
Буду благодарен за любую помощь, второй день мозг ломаю!
|