[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