[Development] QtMultimedia FM radio and plugin support in Qt6

Alberto Mardegan mardy at users.sourceforge.net
Mon Dec 13 20:30:49 CET 2021


Hi Lars,

On 13/12/21 11:14, Lars Knoll wrote:
>>  When the new QtMultimedia was announced [1], there was a mention that
>> the Radio API was being removed (by the way, there is no mention of this
>> removal in the migration document [2]). Did it happen because of a lack
>> of time, or were there other reasons? Is it going to come back?
> 
> It wasn’t mentioned because the API was not implemented in any of the backends we provided, ie. it was non-functional for regular Qt packages.

Ah, indeed I was a bit surprised looking at the v4l radio plugin code,
because it looks like it does not implement all of the the pure virtual
functions declared in the QRadioTunerControl interface, so I was
wondering how it could possibly work. :-)

> We could consider having one plugin for all of Qt MM. But I certainly do not want to go back to what we had in Qt 5, namely one plugin per functionality group, as that makes things extremely messy to implement.

I see, and that would also fit our use case.

> I would be fine with an additional backend maintained inside Qt MM, but it also depends a bit on what you prefer. Btw, how is your backend different from what we have in Qt 5.15?

We delegate audio/video playback to a separate D-Bus service. In this
way the playback can continue even when the application is moved to the
background (background applications get stopped in Ubuntu Touch after a
couple of seconds). There are also a few other benefits to this approach
(resource management, delivering the playback state via a global MPRIS
interface, etc.), but this is by far the most pressing reason.

> One thing I can say already now is that I do not want to go back to Qt 5 times and make the backend API public. We will need the freedom to change the API between versions where required. 

That's also fine.

> It is already available as private API, and there’s a hook to load a different backend in 6.2. Have a look at
> QPlatformMediaIntegration::setIntegration(). We’re using it to test the frontend API with a dummy backend. 
> 
> So you should be able to do most things today, but you’d need a global constructor functions that sets up the integration somewhere.

Right. So if we don't want to patch Qt, we should either get our
platform integration upstreamed, or introduce a plugin loading mechanism
that instantiates a QPlatformMediaIntegration subclass, possibly using
an environment variable for the selection.

Anyway, the situation doesn't look as gloomy as I initially thought. And
we are not talking about the immediate future, so it may be that by the
time we move to Qt6 things will have already changed. :-)

Ciao,
  Alberto


-- 
http://www.mardy.it - Geek in un lingua international


More information about the Development mailing list