Sunday, March 19, 2017

Experimenting with Pi3 optimisations - POT 5.6.0-beta1 with Qt 5.8.0 built for armv8 with GCC 4.9.4

At the moment I still don't want to test custom firmwares or 64 bit arch builds, but I started to test a couple of new features: a new compiler from Linaro (the one provided by the foundation keeps giving me headaches), version 4.9.4 instead of 4.8, and optimised compiler flags for the Rapsberry Pi 3, which is an armv8.
In this build, Qt, ffmpeg and POT are all built with 4.9.4 Linaro toolchain and optimised compiler flags for Pi3. This will only work on Pi3.
You won't probably see much difference in GPU intensive apps, but it is a step on the road of optimisation!

Have fun! Bye! ;-)

Download the toolchain here.
Download POT 5.6.0-beta1 for Raspbian Jessie Lite Pi3 here (md5: 0eec41ef02e9369fc7e569030b8ff868).


  1. Great Job!!!

    Do you think that a cleat Qt build with last versions of gstreamer with IMX pluin (debian testing 2017 packages) can be good enought to implement a video software using Qt QML LGPL ?

    Have you a comercial license (non GPL) for POT?


    1. Not sure what IMX plugin is.
      POT is GPL, but I think you can use it in commercial products, just do not distribute. The user must install after first boot.

  2. Qt multimedia is based on gstreamer
    This is IMX plugin:
    I will try last versions ...may be video suppoort is good enought for raspberry pi 3.

    POT is a fantastic work...but is GPL, so we can't use in comercial products (closed source)...

    QT/QML is LGPL, less restrictive

    1. i.MX 6? This article is related to Raspberry Pi, not i.MX 6.

  3. sorry for my mistake, Luca...
    gstreamer OMX plugin, not imx :-)

  4. Dear Luca,
    thank you very much for your great effort bringing HW accelerated Qt to the Raspberry!

    Unfortunatly I have 2 problems right now:

    1) Camera Module seems to not be present: defaultServiceProvider::requestService(): no service found for - ""

    2) When using QtWebEngine, the website (any) loads as expected, but I can not click on any link (mouseover also doesn't change to handshaped cursor)

    Both bugs do not appear in my application if I compile regular Qt following the Qt Raspi EGLFS guide. (But then of course QtMultimedia performance is really bad)

    Am I missing something?

    Thank you very much,

    1. Hello,
      camera requires the proper plugin. You can build it. Also, look into the plugins directory, sometimes I build that as well.
      No idea for 2, sorry.

    2. Ok, I will try to build it.
      Is this guide still valid?

      Seems a bit old, but I can not find another one.

      Do I understand it right, I first have to build Qt according to a crosscompile guide (
      And then I apply your steps?

      Thank you very much!

    3. That is the latest guide I wrote. You need to build a regular Qt project depending on ffmpeg.

    4. This comment has been removed by the author.

    5. Dear Luca,

      I was following your project and helped me to get everything compiled for 5.8.
      However regarding qtwebengine I experience exactly the same behavior as André: I can load a page and navigate using SPACE, TAB and ENTER and even start youtube videos. But clicks and mouseover are not working in the web area.
      Did it work for you?

    6. Not sure sorry. I'm not sure I ever used mouse interaction.

  5. Luca, hi.
    How can i turn off warnings (not all - only video warnings)? Like: "One frame couldn't be shown.".
    And what does it means? My video is broken?

    1. It means the UI did not have the time to show one frame.
      You need to build the plugin disabling the macro for the warnings. You can find it in the logging header.

  6. Hey, I don't know where to ask this, so I will try here: How can I programatically force the audio output (to local 3.5mm port) when using QML MediaPlayer with piOMXTextures backend ?

    1. Hello, there is an env variable you can use for that. Search that in old articles.