AnsweredAssumed Answered

How to render graphical UI on top of video

Question asked by Mike Janzen on May 11, 2015
Latest reply on May 19, 2015 by Bio_TICFSL

Goal:

 

We want to use Qt to put user interface elements (e.g. menus, icons) on top of the video output along the lines of what is discussed here in the FTF workshop "Simplify Graphical User Interface and Video Integration for i.MX 6":

 

https://cache.freescale.com/secured/training/doc/ftf/2014/FTF-CON-F0223.pdf?__gda__=1431384278_4603c4e8e13b711dbf64d6537…

 

Background:

 

We (www.aimetis.com) developed a ThinClient product that renders video efficiently from multiple gstreamer pipelines concurrently without X11 (we are using EGL/OpenGL directly).  We currently have a separate process per video panel being rendered.  We are using the following environment:

i.MX6 Dual

Yocto 1.7

Linux 3.10.17

gstreamer 1.2.3

gstreamer-imx (GPU accelerated gstreamer sink)

 

Questions:

 

  1. Where can I download all the source code for the above workshop?
  2. The approach referenced in the workshop depends on being able to render video to a background linux framebuffer (/dev/fb0) and UI to a different linux fb (/dev/fb1).  How do I configure the linux framebuffers?
    1. How do I set resolution and bit depth of a framebuffer?  I know there is an fbset command, but it seems to be limited.  I also know there are kernel params  (e.g. video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 gpu_memory=256M).  My 4 framebuffer settings are listed below.  Note that there is only one framebuffer set to 1080p.  I will need both the fg and bg framebuffers set to 1080p.
    2. How to link the Linux framebuffers so that Vivante composites them as a foreground and background buffer?  fbset doesn't tell me the foreground/background info (or let me set it), but
      cat /sys/class/graphics/fb0/name
      somehow gives further detail "DISP3 BG".
  3. How do I make a program output graphics to a particular frame buffer (assuming I can do everything from #2 above):
    1. gstreamer video decoding process render to fb0.  The sink filter is using EGL/OpenGL ES.
    2. Qt UI process render to fb1.  We will be using the eglfs platform.

 

My framebuffer settings:

 

root@imx6qsabresd:~# fbset -s -fb /dev/fb0

 

 

mode "1920x1080-60"

    # D: 148.500 MHz, H: 67.500 kHz, V: 60.000 Hz

    geometry 1920 1080 1920 1080 16

    timings 6734 148 88 36 4 44 5

    hsync high

    vsync high

    rgba 5/11,6/5,5/0,0/0

endmode

 

 

root@imx6qsabresd:~# fbset -s -fb /dev/fb1

 

 

mode "240x320-60"

    # D: 4.608 MHz, H: 19.200 kHz, V: 60.000 Hz

    geometry 240 320 240 960 16

    timings 217013 0 0 0 0 0 0

    rgba 5/11,6/5,5/0,0/0

endmode

 

 

root@imx6qsabresd:~# fbset -s -fb /dev/fb2

 

 

mode "1024x768-60"

    # D: 65.003 MHz, H: 48.365 kHz, V: 60.006 Hz

    geometry 1024 768 1024 768 16

    timings 15384 220 40 21 7 60 10

    rgba 5/11,6/5,5/0,0/0

endmode

 

 

root@imx6qsabresd:~# fbset -s -fb /dev/fb3

 

 

mode "240x320-60"

    # D: 4.608 MHz, H: 19.200 kHz, V: 60.000 Hz

    geometry 240 320 240 960 16

    timings 217013 0 0 0 0 0 0

    rgba 5/11,6/5,5/0,0/0

endmode

Outcomes