Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Switch to GStreamer 1.0 and PyGI #225

Open
jodal opened this Issue · 10 comments

6 participants

Stein Magnus Jodal Thomas Adamcik Javier Domingo Kristian Klausen Liam Wickins Nick Steel
Stein Magnus Jodal
Owner

GStreamer 1.0 was released a couple of months ago. As far as I know, it doesn't bring any new features that are important for Mopidy.

Though, in GStreamer 1.0 the GStreamer Python bindings have been replaced by PyGI, which is generic Python bindings for any library supporting GObject Introspection.

Switching to PyGI will remove our dependency on the Python bindings for GStreamer, GObject, and libindicate, and maybe even the DBus bindings. Replacing this pile of manually maintained Python 2.x bindings with PyGI, which works under both Python 2 and 3, is a huge step towards bringing Mopidy to Python 3, and is thus something we should do.

A spike for porting to PyGI using GStreamer 0.10 was done in #147. I wasn't that much work, but we hit some problems that will not be resolved in GStreamer 0.10, so we can't move to PyGI without moving to GStreamer 1.0 at the same time. https://wiki.ubuntu.com/Novacut/GStreamer1.0 is a great resource which explains most of what needs to be changed in the migration.

The question isn't if we should port to PyGI, but when.

The current status of GStreamer 1.0 is:

My current guess is that we don't want to port before some time in 2013.

Thomas Adamcik
Owner

http://lazka.github.io/pgi-docs/ for a very useful pgi reference doc.

Javier Domingo
Collaborator

When you said 2013, you mean 2014? or later this year?

Stein Magnus Jodal
Owner

That was written a year ago.

I think the distro support is good enough now, so I'd port anytime if I wasn't in the middle of other stuff like pyspotify2.

Kristian Klausen

Any update?

Stein Magnus Jodal
Owner

Porting to PyGI and GStreamer 1.x is still a high priority on our technical roadmap.

Things that need to happen before porting:

  • Reintroduce volume mixers as something independent of GStreamer, like it was in Mopidy a long long time ago. GStreamer 1.x does no longer support hardware volume mixing, as in ALSA or similar, only software volume mixing.
  • Extract/reimplement our playlist format support to not depend on GStreamer. There's some issues with reimplementing this on top of PyGI/GStreamer 1.x. @adamcik has details for those interested.

Modules to port to PyGI:

  • mopidy.audio use GStreamer and GObject
  • mopidy.__main__ use GLib
  • mopidy.commands use GLib and GObject
  • mopidy.listener use GObject
  • mopidy.utils.network use GObject
  • mopidy.utils.path use GLib

After porting Mopidy proper, we should have a look at Mopidy-MPRIS:

  • python-indicate bindings to libindicate can be replaced with PyGI
  • python-dbus can maybe be replaced by GDBus through PyGI

@adamcik Is there anything I've forgotten?

Liam Wickins

A question...can pygi and pygobject happily co-exist in the same way as gstreamer-1.0 and gstreamer-0.10?

Stein Magnus Jodal
Owner
Nick Steel
Collaborator

Can you tick off 'Reintroducing volume mixers'?

Stein Magnus Jodal
Owner

@kingosticks Done :-)

Stein Magnus Jodal
Owner

Blocked by #961.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.