Как преобразовать буфер ueyesrc в текстуру opengl?
Я пытаюсь заставить камеру UI-3370CP-C-HQ R2 работать на Coral DevBoard с gstreamer.
Поскольку камера не является стандартной камерой v4l2, я загрузил и скомпилировал ueyesrc
плагин gst (https://github.com/atdgroup/gst-plugin-ueye) на панели разработки.
В моем приложении мне нужен фрейм в виде текстур opengl, и я застрял на создании рабочего конвейера.
Пока что единственный способ получить что-то с камеры - это сохранить кадр в формате jpeg:
gst-launch-1.0 tee ueyesrc num-buffers=10 ! jpegenc ! filesinklocation=ueyesrc-frame.jpg
Пример конвейера, предоставленный ueyesrc gst-launch-1.0 ueyesrc ! videoconvert ! xvimagesink
не работает в моем случае, потому что на устройстве нет X-сервера (но Wayland)
gst-launch-1.0 ueyesrc ! videoconvert ! glimagesink
возвращает следующую ошибку:
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayWayland\)\ gldisplaywayland0";
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink: Failed to convert multiview video buffer
Additional debug info:
gstglimagesink.c(1741): gst_glimage_sink_prepare (): /GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink
Execution ended after 0:00:00.486558117
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
Со стандартной веб-камерой USB (Logitech HD Pro Webcam C920), gst-launch-1.0 v4l2src ! videoconvert ! glimagesink
работает отлично.
Я действительно не понимаю, что происходит не так или как найти больше подсказок по этому поводу, я полагаю, что мне не хватает промежуточного этапа преобразования, но я не знаю, как это исправить. Есть у кого-нибудь идея?
изменить 1: это действительно проблема преобразования. Я заставил его работать, указав формат вvideoconvert
шапки: gst-launch-1.0 ueyesrc exposure=2 ! videoconvert ! video/x-raw,format=YUY2 ! glimagesink sync=False
Хотя загрузка ЦП очень высока (>90% на всех 4 ядрах iMx8), а максимальная частота кадров достигает 6,5 кадров в секунду.