Qt Overlay поверх GStreamer

У меня есть вопрос, учитывая текущую настройку:

  • Yocto Linux on iMX6
  • Ни оконный, ни дисплей-менеджер
  • Полнофункциональное приложение Qt, протестировано на Debian 9

Приложение состоит из 2 основных элементов:

  • GStreamer часть, с imxg2dvideosink
  • Полупрозрачный Qt Overlay, который должен отображаться поверх потока

Вопрос:

Как выполнить отображение оверлея над потоком, когда обе части отображаются на весь экран (на весь экран)? Возможные решения:

  • /dev/fb1 в качестве наложения на /dev/fb0 (Как разделить одно приложение на два fbх?)
  • Использовать дисплей-менеджер?
  • Использовать оконный менеджер?
  • linuxfb вместо eglfs?

Мое текущее (не рабочее) решение:

  • С помощью -platform eglfs
  • Приложение сначала запустится GStreamer, а затем показать наложение

1 ответ

Решение

Я нашел решение сам. Поделиться ниже:

1) Запустите приложение Qt на /dev/fb1 :

  • export QT_QPA_EGLFS_FB=/dev/fb1 (Уточнить /dev/fb1 как eglfs кадровый буфер)
  • echo 0 > /sys/class/graphics/fb1/blank (Разблокировать фреймбуфер)
  • fbset -fb /dev/fb1 --geometry <your geometry here> (Установить геометрию кадрового буфера)
  • ./YourApplication -platform eglfs (Запустить приложение)

Используйте цветовой ключ, если вы хотите полную непрозрачность при наличии полностью прозрачных частей наложения.

2) Запустите GStreamer на /dev/fb0 :

  • gst-launch-1.0 videotestsrc ! imxg2dvideosink framebuffer=/dev/fb0

Это решение для eglfs, Другие возможности linuxfb,

Другие вопросы по тегам