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_4603c...
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:
- Where can I download all the source code for the above workshop?
- 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?
- 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.
- 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".
- How do I make a program output graphics to a particular frame buffer (assuming I can do everything from #2 above):
- gstreamer video decoding process render to fb0. The sink filter is using EGL/OpenGL ES.
- 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