We have moved to a new Sailfish OS Forum. Please start new discussions there.

upgrade gstreamer to support OPUS codec

Tracked by Jolla (In release)

asked 2013-12-29 11:26:13 +0300

kael gravatar image

updated 2016-12-18 15:33:06 +0300

please, upgrade gstreamer to version >= 1.0.6 in order to have OPUS audio decoder

Information about Opus: http://www.opus-codec.org/

update: 1 year later: still no gstreamer update -> no opus support in v1.1.2.16

update: still no opus in v1.1.4.29

update: still no opus in v1.1.9.28 (even though gstreamer has been updated)

update: opus files can now be read. Metadata handling needs Tracker update

edit retag flag offensive close delete



Well, it would be great to have an opus encoder (recording voice, calls, XMPP,...) too. I guess it would be added at the same time, anyway.

R. ( 2014-01-16 02:04:59 +0300 )edit

Opus works just fine with gst-0.10 in Sailfish, you just need to install a missing codec. As this is an official Jolla site I better not link to anything here but you don't need to look that far to find it.

xerxes2 ( 2014-01-21 00:57:13 +0300 )edit

With my opus testing (ie. not working) I also noticed another small bug. Media Indexer happily indexes .opus files as media, but the media player simply stops when trying to play one. So it doesn't even jump to next file on playlist, it just stops. That of course is annoying because you need to press next on the player to proceed. So it would probably be a good idea to have some kind of error handling in the media player in case file (opus or otherwise) can't be played.

DeeGee ( 2015-05-11 11:25:11 +0300 )edit

everything seems to work on my phone except some OPUS files are not indexed correctly. tracker-extract reports :

Tracker - Could not save '/path/to/file.opus'" into failsafe persistent store: Error making symbolic link: No such file or directory [ogg @ 0x200e00] 725 bytes of comment header remain Tracker - Could not delete '/path/to/file.opus'" from failsafe persistent store

I tried to use tracker-extract myself :

MIME type guessed as 'audio/x-opus+ogg' (from GIO)

Using /usr/lib/tracker-1.0/extract-modules/libextract-libav.so...

[ogg @ 0x1ea9a60] 698 bytes of comment header remain

[ogg @ 0x1ea9a60] max_analyze_duration 5000000 reached

Done (8 objects added)

The difference between my files seems to be the picture block in metadata

kael ( 2016-12-18 15:51:25 +0300 )edit

5 Answers

Sort by » oldest newest most voted

answered 2014-01-20 23:20:40 +0300

MSameer gravatar image

updated 2014-01-22 14:08:38 +0300

Opus can work with GStreamer 0.10 too but old libav prevents us from taking it into use ;-)

But anyway: GStreamer 1.x is indeed in the roadmap.

What needs to be done:

  • package GStreamer 1.x, plugins base, good, bad and ugly (ugly if needed) (open)
  • get HW decoders and encoders working with gstreamer. Curretly we use a heaavily patched version of gst-omx. We either continue with that or write our own wrapper (gst-omx is open but I cannot tell about any custom element yet)
  • droidcamsrc needs porting (closed)
  • droideglsink needs to be ported too (closed)
  • package an updated libav and port all of its reverse dependencies (Not sure what is closed and what is not)
  • package gst-libav (open)
  • port xulrunner (open)
  • port QtMultimedia (open)

What we have currently is a bit messy and I have been thinking of following an approach similar to gst vaapi but I have no concrete plans yet.

edit flag offensive delete publish link more



If it's easy to add only opus, could you consider it for a next update ? Would love to have my music in Opus in Media player !

R. ( 2014-01-22 01:36:40 +0300 )edit

I did some more investigations and the short answer is: I am sorry, it has to wait to gstreamer 1.0

Long answer: We use libav for media indexing. opus was added in libav 9.0 while we use libav 0.8.x. We need to either backport opus support which is not easy or upgrade libav which is a major task.

MSameer ( 2014-01-22 03:21:06 +0300 )edit

At present many h.264 encoded videos simply don't play, which I think may be because gstreamer didn't support Hi10p until somewhere in the 0.11.x series. Am I correct to think that with gstreamer 1.x we should thus also gain Hi10p support?

Daniël ( 2014-02-03 09:35:51 +0300 )edit

As is now based on gstreamer 1.x, is there any ETA on opus support? I used the unofficial gstreamer 0.10.x plugin from OpenRepos to subscribe to some podcasts in opus, now I'm not able to listen to them anymore.

schmittlauch ( 2015-09-14 19:28:39 +0300 )edit

I already answered that here.

The ETA is the update after the next one. That's not a final promise though and I do not know when it will be out.

MSameer ( 2015-09-14 19:56:08 +0300 )edit

answered 2013-12-29 13:36:28 +0300

stezz gravatar image

Thanks @kael, upgrading to Gstreamer 1.x has been in our plans, however is not a trivial nor short task to do and, while in our roadmap, it might take up to 6 months to make it functional and stable. Of course we try to make it faster if possible.

edit flag offensive delete publish link more



can the community help you in this task ?

kael ( 2013-12-29 14:54:13 +0300 )edit

TBH I have no idea to what extent Gstreamer is tangled with HW drivers. However @MSameer is the guy that can answer you. I will ping him.

stezz ( 2013-12-29 15:40:14 +0300 )edit

Should you end up needing community testing for that, count me in!

Direc ( 2014-01-03 00:23:55 +0300 )edit

Four months out.... How is this effort going?

mikelima ( 2014-04-03 13:35:53 +0300 )edit

now 8 month ago... hope it will come in Update 9... but i dont think so

cvp ( 2014-08-25 15:06:46 +0300 )edit

answered 2015-09-07 18:32:26 +0300

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

updated 2015-09-08 19:17:18 +0300

MSameer gravatar image

opus has been pushed to mer. Next would be upgrading libav and enabling the GStreamer decoder. Unfortunately this will not be in the next update or the one after it. Maybe the update following it will contain this functionality. I will try to keep this thread updated.

GStreamer opus support has been enabled.

It is possible to obtain preliminary opus support on top of 1.1.9 by building and installing gst-plugins-bad from mer. I cannot do it myself due to lack of time but I am sure someone will do it ;-)

And now libav has been updated. There are still some minor issues but most of the work has been done.

I will stop monitoring and updating this post. There is a JB assigned to the task so monitor its status from now on.

edit flag offensive delete publish link more


(Just a quick user update, if you want to know the current state) I tested last week (after the update) some opus files. They are found and playable by Jolla mediaplayer, but the tags are not retrieved, so they are put to 'Unknow Artist' section and their duration is '0:00'.

R. ( 2015-09-07 21:00:49 +0300 )edit

That does not make sense because opus is not part of 1.1.9 (Not even part of the update after 1.1.9). Not sure where you got the opus decoder from.

MSameer ( 2015-09-07 21:44:51 +0300 )edit

Yeah, I forgot I got it from openrepos. Anyway, with it, it is close to work flawlessly in media player.

R. ( 2015-09-07 21:52:58 +0300 )edit

Which Sailfish OS version are you running?

MSameer ( 2015-09-07 23:30:41 +0300 )edit

I'm running

R. ( 2015-09-08 00:21:26 +0300 )edit

answered 2014-11-09 21:08:42 +0300

MSameer gravatar image

If someone adds opus to mer then I can enable the gstreamer 1.x opus decoder plugin.

Otherwise I will do it at some point when time permits

edit flag offensive delete publish link more

answered 2015-11-05 17:53:44 +0300

MSameer gravatar image

I think we can mark this as done now that we have everything in (Unless I have forgotten something)

edit flag offensive delete publish link more


It finally plays! metadata does not seem to work though. The song is indexed as unknown artist. I verified the metadata with Quod libet and encoded the file with opusenc 1.flac 1.opus

Mikael ( 2015-11-06 10:41:19 +0300 )edit

Could you try resetting the tracker database? If it has been indexed previously then I don't think it will be re-indexed again.

If you reset the tracker database either via tracker-control -rs or better via sailfish utilities and reboot then it can be re-indexed.

MSameer ( 2015-11-06 14:38:25 +0300 )edit

It wasn't indexed before the upgrade. I tried the tracker-control -rs anyway, but it didn't help. This is the file I have been testing with: http://h45h.com/fnjNoEjuVAtFnjCO1k5Xne6y8CovSv6YW-iefUsyQ44=

The corresponding .flac file is still on the phone though if that makes any difference.

Mikael ( 2015-11-06 14:55:14 +0300 )edit

OK. I am extremely sorry. The indexing fixes for tracker did not make it to this update :(

It will be released with the next update hopefully. It's your choice now to either: 1) unmark this post as correct 2) wait for the next update 3) rebuild tracker with the needed fixes.

I can help you with #3 if you decide to do it.

MSameer ( 2015-11-06 14:59:32 +0300 )edit

I reopened the question as there is only preliminary support at the moment.

vasavr ( 2015-11-10 19:02:31 +0300 )edit
Login/Signup to Answer

Question tools



Asked: 2013-12-29 11:26:13 +0300

Seen: 3,751 times

Last updated: Dec 18 '16