Tag Archives: Linux

GStreamer 0.11 + JHbuild

If you try to test GStreamer 0.11 there’s this nice gst-uninstalled script; somehow that didn’t work for me as soon as I tried to use more non-gst interdependent libraries so I opted to use jhbuild. Luckily that’s quite easy with the stock gnome jhbuild moduleset.
To do that, I created a new .jhbuildrc-gst-0.11 with the following modifications. skip and modules can of course be adjusted to own needs.

moduleset = 'gnome-world-3.4'
modules = [ 'vala', 'libgee', 'gstreamer', 'gst-plugins-good', 'gst-plugins-bad', 'gst-plugins-ugly', 'gst-ffmpeg', 'gssdp', 'gupnp', 'gupnp-av' ]
skip = ['gtk+', 'atk', 'gcr', 'gtk+-2', 'rarian', 'NetworkManager', 'gnutls', 'polkit', 'p11-kit', 'gnutls', 'cantarell-fonts', 'gtk-engines', 'librsvg', 'gnome-themes-standard', 'libgnome-keyring', 'pango', 'expat', 'libgpg-error', 'libgcrypt', 'glib-networking']
os.environ['JHBUILDPS1'] = '[gst-0.11] '
branches = {
    'gstreamer' : '0.11',
    'gst-plugins-base' : '0.11',
    'gst-plugins-good' : '0.11',
    'gst-plugins-bad' : '0.11',
    'gst-plugins-ugly' : '0.11',
    'gst-ffmpeg' : '0.11'
}

Lately, in Rygel land…

In General

I know I have been quite silent about Rygel in general lately because I was quite busy with my day job. Since Zeeshan left Nokia after the MeeGo turmoil I took over his task of bringing Rygel in good shape to form the basis for Harmattan’s DLNA functionality.

These efforts, started long ago by Zeeshan, are finally coming to a close and entering the wild. With the release of PR1.2 beta for the N950, the alert reader might have spotted the release note entry “Media sharing with DLNA compatible devices”. You can probably guess what that’s powered by 😉

One of the goals that we’d set ourselves has already been reached. The device is UPnP certified. The DLNA compatibility is in really good shape as well.

That is one of the reasons why the upstream Rygel development looks kind of stalled. The other one is that we’ve been focusing on ironing out the rough edges with emphasis on stability. Naturally, all of the patches that resulted here have been upstreamed, either to Rygel, GUPnP or libsoup.

On the device

So what’s on the device? A more or less pristine upstream snapshot taken several commits after 0.11.3 with later patches cherry-picked and some minor adjustments to adapt ourselves to the environment, like different device details and icons.

What can it do?

It implements a M-DMS, a mobile media server, enabling you to share the media content of your phone in your home network.
In addition to the rather useless mandatory media formats defined by DLNA we have decided to include a LPCM transcoder and the necessary profiles to share all the videos and images you’re going to take or already have taken on the device.
The server runs in a strict sharing mode where only media files that conform to one of the supported DLNA profiles are shared. This is configurable and we plan to release a “tweaking app” later to help the average end user to fine-tune and undo some of the limitations that had to be done due to the DLNA guidelines.
So, to all that already can, enjoy Rygel on your mobile phone.

Rygel & pulseaudio

Looks like we have found and fixed the recent issues in the PulseAudio MediaServer2 implementation that led to weird behavior when trying to browse the PA server; it is available in PulseAudio master.
So after applying this, streaming from PA should be possible again if your client natively supports LPCM. If not, then most likely not. There seems to be an issue in setting up the transcoding (this includes the XBox e.g.)

Properties and Probabilities

I just tagged version 0.2 of my tracker browser tool

What’s new?

  • It has a location bar with backward and forward navigation buttons
  • It is also possible to use prefixed names instead of IRIs
  • You can use your keyboard to navigate backward and forward
  • It has a in-page search bar which can be reached by familiar keystrokes like “/” or “Ctrl-f”
  • If you browse a rdf:Property, you will now be shown all resources with the value the property has

Where to get it?

https://github.com/phako/tracker-zilla/tree/0.2

Mandatory screenshots

Tracker and me

While working with tracker I find myself rather often calling “tracker-info” on resources, looking for linked resources, running tracker-info on those, then needing to get back etc. A bit ugly and time-consuming.

Wouldn’t it be cool to just browse through all that info, being able to go back and forth through the links? Yes, it would. That’s why I wrote tracker-zilla:

You can navigate through the resources just like on the interwebs, using the back and forward feature of the context menu. It shows you not only the resources and properties of the object but also resources that link to the one you’re currently browsing:

It’s not that feature-rich and probably never will be. You can either pass a urn to it via command-line or nothing, then it will show you all rdfs:Classes available in the current ontology where you can just click on e.g. nco:PersonContact. What I’m planning to add is a simple in-page search and a breadcrumb navigation.
That said. it’s a pleasure to work with libtracker-sparql (especially from Vala). You need Vala 0.11.6, gtk+-3 and webkitgtk-3.0 to build it. ?The code is available at github.
Update: Due to popular demand, there’s now a –with-gtk=2 option to enable Gtk+-2 UI.

Debunking Rygel myths

Somehow Rygel seems to have gained some interest by users lately, a number of new users show up on mailing list, IRC and Bugzilla. But it seems there are some misinformations flowing around:
Rygel is a UPnP server
Well yes, that’s how it started out. But since then, we’ve evolved to be a UPnP/DLNA framework or even SDK providing easy means of implementing servers and renderer.
Speaking of renderer, we not only have one renderer to offer but actually a multitude. Rygel is a consumer of the MPRIS2 D-Bus specification which means it can turn any player, like Banshee or Rhythmbox, which implements this specification into a UPnP/DLNA media renderer.
Rygel is Gnome-only
While being part of Gnome, using its infrastructure, there’s no reason not to use Rygel as a system service. You might, however, experience some minor drawbacks since some of the plug-ins heavily make use of D-Bus. People already have contributed init scripts to ease this part.
Rygel is badly documented
Hm, yes. That one is actually true. Its documentation is a bit scattered in our wiki at http://live.gnome.org/Rygel and the man-pages. On the other hand we hope that Rygel working out of the box for most people out there.
Hope that sheds some light.
Ps: Hello Planet Gnome! Great to be here finally.

UPnP & C++

I’m currently trying to provide Qt4 bindings for the GUPnP stack. I’m a bit impeded by the issues that I already encountered with the “mm” C++ bindings and other people also experienced. Some classes are not that binding friendly. Additionally GUPnP is – as the name implies – closely tied to GObject and the GType system, imposing some more problems for the Qt 4 port.
I already got a test-browser like example running in Qt 4 running, stay tuned for more updates.