Russian Qt Forum

Qt => Мультимедиа => Тема начата: crafter от Июль 13, 2016, 17:45



Название: QT и камера под android
Отправлено: 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, по крайне мере у меня так нормально и не заработали.

Буду благодарен за любую помощь, второй день мозг ломаю!