[Nepomuk] Nepomuk - Moving away from Strigi
Kevin Kofler
kevin.kofler at chello.at
Mon Oct 8 21:38:40 UTC 2012
On Monday 08 October 2012 at 22:26:30, Martin Gräßlin wrote:
> Neither Kevin (Fedora), Scott (Kubuntu) nor Adrian (SUSE) came up with the
> rules, they are just pointing out the policies. While I do not agree with
> their policies I can kind of understand it.
>
> What everybody can do is to bring the question back to the distributions
> that they might reconsider the situation and bringing back the feedback
> that Upstream really wants to have working multimedia in the downstream.
>
> Though especially for the distributions situated in the USA I have little
> hope that they might change anything. The patent system there is extremely
> broken and there is quite a difference between knowing that the software
> breaks patents or some bogous IP claims like SCO.
>
> We all know that situation and we won't change it here on kde-devel. I'd
> love to do so, but it won't happen :-(
>
> So let's all calm down and work on good solutions :-)
The best solution I can offer is: if at all possible, please (pretty please) DO
NOT use FFmpeg (directly), use GStreamer.
There are 4 APIs you can use to use GStreamer in your application:
* Phonon (with Phonon-GStreamer, which is the default in most distributions).
The highest-level API, suitable for simple playback, not so much for other
tasks.
* QtMobility Multimedia. Listed for completeness, probably not ideal for KDE
applications. Also high-level.
* QtGStreamer. Lower-level Qt bindings for GStreamer. More flexible.
* GStreamer directly. C/GObject API. Lowest-level, but not as low-level as
FFmpeg. ;-) If even QtGStreamer does not do what you want, try this one.
Now I don't know whether GStreamer is suitable for the Nepomuk indexing task
which started this thread, but e.g. for the Amarok transcoding and
fingerprinting, it could definitely be used instead of the FFmpeg-based code we
have now (see sound-converter (the GNOME one, not soundKonverter) for an
example of how to use GStreamer for transcoding, transcoding is actually one
of the things it can do well). Thumbnailing is also something which could and
should be done using GStreamer rather than FFmpeg as ffmpegthumbnailer does.
GStreamer helps us in several ways:
* GStreamer is modular, so distros can ship only the codecs they feel safe and
others can be added as plugins. (FFmpeg, on the other hand, links all the
codecs into a single monolithic shared library.)
* GStreamer supports system decoding libraries for many formats. In
particular, most unencumbered codecs can be decoded without depending on the
monolithic FFmpeg. This approach also encourages code sharing rather than
reinventing the wheel as FFmpeg loves to do.
* GStreamer supports FFmpeg (or actually Libav these days) codecs as one of
the many plugins.
* GStreamer upstream actually cares about the legal issues and already
classifies the stable codecs into "good" and "ugly". (The less-proven "bad"
ones, on the other hand, are not classified by upstream and are split into 3
pieces in Fedora and RPM Fusion: free and patent-free, free but patent-
encumbered and outright non-free. But that's just a matter of auditing the
plugins and splitting them, interested third parties can look at our split.)
* If everything uses GStreamer, the user only has to add the "evil" codecs
once for all apps. (And there's even a codec auto-installation feature, though
admittedly that will only work if the repository containing the codec is
already configured, so it's not a magic bullet.) If, on the other hand, we go
with the alternative solution of having FFmpeg-based plugins for everything,
sure, that also solves our problem (as long as they're really plugins, not
compile-time options like Amarok's fingerprinting!), but it means the user has
to install a lot of *-ffmpeg packages to get everything working.
So in short, if you want multimedia to "just work" in your software, use
GStreamer!
Kevin Kofler
More information about the Nepomuk
mailing list