Planet maemo: category "feed:ffa4f082707419ac67937f24053d9dcd"

Zeeshan Ali

GUPnP Tools 0.7.1 released

2009-05-12 13:40 UTC  by  Zeeshan Ali
Changes in this release:

- Use g_printerr() instead of g_critical() in case of problems.
- Initialize the GError to NULL at declaration.
- Declare variables as const to setisfy the compiler.
- Add missing casts.
- Use g_content_type_is_a() to compare mimetypes.
- Correct the order of mimetype check.
- Iterate over item resources rather than renderer protocols.
- Port all UIs to use GtkBuilder.
- Bump-up Gtk+ requirement to 2.16.

Removed dependency in this release: libglade.

Contributors to this release:

Sven Neumann
Zeeshan Ali (Khattak)

Download tarball here:
Categories: Tools
Zeeshan Ali

GUPnP AV 0.4 and GUPnP Vala 0.5.4 released

2009-04-12 14:05 UTC  by  Zeeshan Ali
GUPnP AV 0.4 released.

New in this release:

- Watch for empty DIDL-Lite nodes.
- Escape the URIs before putting them into DIDL-Lite XML.
- The '.' must be omitted from duration if fraction part is not included.
- Be more lenient when parsing DIDL-Lite XML fragments.
- Don't require the DLNA profile string.
- Try to guess the DLNA Profile if not provided and put "*" in the whole 4th
field of protocolInfo if our guess work fails.
- Make sure 4th field of protocolInfo is completely in compliance with DLNA
guidelines. This only implies one change in the API: enum dlna_play_speed is
replaced by play_speeds, a GList of allowed play speeds as strings.
- Use '1' and '0' to express boolean properties in DIDL-Lite XML.
- Other minor fixes.

All contributors to this release:

Henrique Ferreiro García
Peter Christensen
Sven Neumann
Zeeshan Ali (Khattak)

Download from here:

GUPnP Vala 0.5.4 released.

A new minor release mainly to update the gupnp-av bindings.

Download from here:
Categories: Vala
Zeeshan Ali

Maemo community - Students Wanted

2009-03-24 09:13 UTC  by  Zeeshan Ali
Just copy&paste from Valerio's blog to get this on planet GNOME:

The Maemo community is looking for talented students to join us in the Google Summer of Code initiative.

We already have a good pool of ideas, but we are also looking for students ideas in the mobile/embedded field, especially in the following areas:

* Location based apps;
* Context aware apps;
* Linux kernel advances, related to mobile/embedded;
* Social apps clients;
* Mobile/embedded apps in general that can benefit a wide range of platforms (maemo, openmoko, beagleboard, etc…).

More informations about Maemo @ GSoC can be found here.

Categories: GNOME
Zeeshan Ali

We have transcoding!

2009-03-22 05:06 UTC  by  Zeeshan Ali
Since transcoding is one of the hottest feature almost every user expects from a decent modern MediaServer, I finally manged to put some time into implementing it. After two weeks of hacking, I finally have transcoding implemented in Rygel. Yay! The source format/codec could be anything that gstreamer's decodebin2 can handle. The target format/codec had to be specific and I currently support mp3, PCM and mp2 video + mp2 audio encapsulated in mpeg transport stream.

Before you ask, no! none of the above transcoding classes work against PS3 but PCM. So you can listen to your OGG vorbis file on your PS3, yes but no videos that are in format alien to PS3. With transcoding working with PCM, I don't think any PS3 user will miss transcoding to mp3 (especially keeping in mind the inevitable loss in quality because of transcoding from one lossy codec to another) but transcoding of videos is something users would want/need so I will look into why PS3 refuses the mpeg ts stream from Rygel, however I have a feeling that the problem is most probably not in my code but mpegtsmux gstreamer element. If that is the case, I might not be able to get to dig into this issue any time soon myself. However, anyone willing to contribute is welcome to look into this matter.
Categories: Transcoding
Zeeshan Ali

Multiple networks and GUPnP

2009-03-07 03:01 UTC  by  Zeeshan Ali
When GUPnP was first used at Maemo software, one of the first questions I was asked was: Can't GUPnP handle multiple network interfaces just like ClinkC (the now deprecated UPnP framework in Maemo)? The answer to that question was "yes but you have to take care of creating GUPnPContext objects for each network interface yourself" and that wasn't very convenient. This issue, accompanied by the fact that applications had to know when the interfaces go up and down to create and destroy the associated GUPnPContext object themselves, made the lives of application developers not so easy.
Click to read 854 more words
Categories: Maemo
Zeeshan Ali

Rygel 0.2.2 is out

2009-02-23 15:29 UTC  by  Zeeshan Ali
Changes since 0.2:

- Use the new (0.6.9) Tracker API.
- Priority of gio-based streams are based on requested DLNA transfer mode.
- GIO-based/like asynchronous plugin API.
- Adapt to latest changes in gupnp-vala API.
- Serialization of media objects isn't done by media objects themselves anymore, but by a new separate class, Rygel.DIDLLiteWriter.
- Internal API is marked 'internal' so it doesn't get to our (Vala) API.
- MediaObject now derives from GLib.Object.
- Generic AsyncResult implementation, SimpleAsyncResult.
- StateMachine interface that all state machines classes implement.
- Visible performance improvements in Tracker plugin by proper use of Tracker APIs.
- Use Filename.to_string() and therefore make Bastien happy.
- Require lastest version (0.1.5) of libgee to use List.slice().
- Don't limit the number of objects returned to a client, let it decide that on it's own.
- Proper handling of update notification to the client by use of a very simple bubble-up mechanism for containers to signal updates.
- Decrease needed gconf version to 2.16.
- Set application name and therefore make Lennart happy.
- Require latest version of vala (0.5.7) and gupnp-vala (0.5.3).
- Allow multiple URIs for each media items.
- Response for seekable media request is now sent buffer by buffer so the whole file is not put into memory.
- Some improvements to build system.
- Lots of other improvements and bugfixes.

Download source tarball from here:

Rygel is an implementation of the UPnP MediaServer V 2.0 specification
that is specifically designed for GNOME (Mobile). It is based on
GUPnP and is written (mostly) in Vala language. Project was
previously known as gupnp-media-server.

More info at:

Categories: DLNA
Zeeshan Ali


2009-01-22 15:31 UTC  by  Zeeshan Ali
Like many other Hacker fellows, I'll also be attending FOSDEM this year. I even have a talk at the GNOME devroom just like last year but this time I'll be mostly talking about Rygel rather than GUPnP. If you are coming to FOSDEM and happen to have any interest in Rygel, especially in how to write plugins for it don't forget to attend it.
Categories: GNOME
Zeeshan Ali

Rygel 0.2 is out

2009-01-19 15:09 UTC  by  Zeeshan Ali
Rygel 0.2 is out. Here is the release announcement:

The major change after last release (as gupnp-media-server) is the introduction
of a simple yet powerful plugin-based architecture/api: Everyone plugin:
- is loaded into a separate MediaServer instance.
- can implement any kind and number of resources (currently only services).
- can export an icon file.
- inherit it's ContentDirectory implementation from a base class that does most
of the UPnP-related work. More improvements on this planned for next release.
- use an intuitive API to easily export media from URIs and live GStreamer
source elements over HTTP.

Other changes:

- Relicense under LGPL to allow proprietary plugins and ease of moving code
from/to gupnp libraries.
- DVB Daemon integration though a plugin. Now you can watch live channels from
your PC on your PS3 for example.
- Test plugin that exports one audio and video item, streaming contents from
GStreamer's audiotestsrc and videotestsrc elements respectively.
- Better interoperability with Sony playstation 3.
- Announce unavailability to UPnP world on exit.
- Loads of other improvements.

Download source tarball from here:
Categories: Maemo
Zeeshan Ali

Rygel now part of maemo plan

2008-12-09 04:57 UTC  by  Zeeshan Ali
So it is no secret anymore that Rygel will be part of maemo platform. If you are interested in contributing to maemo, here is yet another chance. I have a big pile of TODO for Rygel so if you are interested, do contact me. In case you prefer IRC like I do, I am always on #gupnp on
Categories: GNOME
Zeeshan Ali

GUPnP: achievements and way forward

2008-10-09 14:21 UTC  by  Zeeshan Ali
As most of you probably know already, GUPnP is now officially part of Maemo and therefore future internet tablets. This is a major milestone and gives a big boost to my motivation to continue my UPnP adventure. Although I try to put as much of the bits and peaces of spare time i get from my job into UPnP work and I am pretty sure the Intel (former OH) will continue their work as well, we could certainly use more hands to accelerate the development.

If you want to help, here is a short list of TODOs that you might want to have a look at and decide if you could help on any of these:

  • Bindings: Although the more bindings we have the more worlds we can conquer but what we definitely need is bindings for most popular languages in GNOME/Maemo world, namely C#/mono, Java and Python. If you are interested in helping with this, I strongly suggest you take the g-i-r route. Also if you are only interested in C# bindings, I suggest you talk to Jerome Halton who already have a half-baked solution.

  • Integration: GUPnP can't possibly become the standard UPnP framework of the GNOME world until we have:

    • plugins for Totem, Rhythmbox and Banshee enabling these apps to browse and search contents on UPnP MediaServer (MS), export playback control on the UPnP network by implementing a MediaRenderer (MR) and to redirect playback of contents to other MRs.

      You might notice that I didn't mention sharing of contents on the network, the reason for which is that I believe (and Jorn agrees) that that should be the responsibility of a dedicated MS (gupnp-media-server) as part of the desktop session. Having a dedicated MR OTOH hardly makes any sense.

    • GVFS backend for UPnP, allowing the GIO world to browse, copy and move contents to/from UPnP MS as if it was just a local filesystem.

    • PulseAudio integration: Wouldn't it be nice if I could redirect all audio output of my laptop/internet tablet to my cool UPnP-enabled speakers or my desktop machine running Totem, Rhythmbox, Banshee or better yet PulseAudio itself (which would mean p-a implements both an MR and an MR control point (CP)? This is actually part of Lennart's great plan to conquer the world so I thought I mention it here in case someone does it before Lennart gets the time to do it himself.

UPDATE: Forgot to mention a very imporant task: Porting to platforms other than Linux. We mostly use glib, libxml2 and libsoup so this shouldn't be a huge task. The only platform-specific code in the whole stack that I know of is the networking bits.
Categories: GNOME
Zeeshan Ali

Fire in the hole!

2008-09-30 11:46 UTC  by  Zeeshan Ali
Many thanks to Olivier Crête, we now have a nice small library for firing holes through firewalls using a part of UPnP IGD API. This library also provides a convenient way to do all that without having to use a gmainloop. While Olivier will most probably use it in his farsight2, I am sure this will be useful for other projects (I did not say Ekiga :)) as well.
Categories: GNOME