Wednesday, August 18, 2010

Rygel 0.7.6 (A Kiss is But a Kiss)

Rygel 0.7.6 (A Kiss is But a Kiss) is out!

Another micro release to fix the critical regression in 'Year' hierarchy of
Tracker plugin.

All contributors to this release:

Zeeshan Ali (Khattak) 

Download source tarball from here

Tuesday, August 17, 2010

Rygel 0.7.4 (Look at the Princess)

Rygel 0.7.4 (Look at the Princess) released!

A new release in the current unstable 0.7.x series for upcoming GNOME 2.32.0

- Fix wildcard handling in search request.
- Distribute correct copy of scallable icons.
- Provide icons in DLNA standard sizes.
- Provide icons in JPEG format as well.
- Don't offer transcoding from video to audio and viceversa. This makes sense
  anyway and reduces network traffic.
- Only offer time seeking if duration is known.
- Report correct DLNA profile for MPEG-TS HD and WMV transcoder.
- List DLNA formats first in the list of supported formats.
- Provide correct values for out parameters of GetCurrentConnectionInfo action.
- Correctly handle HTTP 'POST' requests.
- Correct checks for vala bindings.
- Use new 64-bit size property in GUPnP resource API so that we can deal with
  resources bigger than 2GB.
- Fix some (potential) crashes.
- Correctly handle a translated string involving plurals.
- Don't use deprecated libsoup API.
- Correct flaws in code related to search for media object by ID. This combined
  with some changes in Tracker plugin (see below) improves the reliability and
  especially the performance of Tracker plugin a lot.
- Use the mime-type and DLNA profile when provided in item creation requests.
- Advertize byte-seek support for thumbnails.
- Correct algorithm to decide whether to seek or not.
- Set standard header on XML files.
- Prefix service URLs with a "/". This seems like the right way to do it and it
  might actually improve our IOP.
- Make use of new APIs to report all known DLNA profiles in list of supported
  formats (MediaServer only).
- Add support for the "Genre" tag in music items.
- External:
  - Handle AlbumArt property.
  - Fix a few crashes.
  - Remove workaround for bug#602003.
  - Make sure metadata container get unique IDs.
  - Performance improvements to search for media object by ID.
  - Make use of DLNA profile when provided.
  - Don't use Tracker's logo as icon.
  - Ignore duration of '0'.
  - Print debug after item creation in store.
  - Disable plugin when Tracker plugin is/becomes available.
  - Require sqlite3 VAPI only for this plugin.
  - Code clean-up and general speed improvements
  - Extract embedded album art
  - Remove the ability for user-defined virtual folders, providing a set of
    built-in folders similar to that of tracker's.
  - Fix some minor regressions introduced by the switch to gupnp-dlna metadata
  - Move configured files and folders into their own "Files & Folders" container
    to de-clutter root.
- Localization:
  - Add ta translation.
  - Update Galician translations.
  - Update Hebrew translation.
  - Update Spanish translation.
  - Update Romanian translation.
  - Update Slovenian translation.
- DLNA test cases fixed in this release:

Dependency-related changes:
  - Require and adapt to Vala 0.9.5.
  - Require gupnp-av >= 0.5.9.
  - Require gupnp-dlna >= 0.3.0.
  - MediaExport
    - Require gstreamer-tag >= 0.10.28.
    - Require gstreamer-app >= 0.10.28.

All contributors to this release:

Zeeshan Ali (Khattak) 
Jens Georg 
Yaron Shahrabani 
Lucian Adrian Grijincu 
Kjartan Maraas 
Jorge González 
Fran Diéguez 
Claude Paroz 
Andrej Žnidaršič 

Download source tarball from here

GUPnP DLNA 0.3.0 & GUPnP Vala 0.6.11

GUPnP DLNA 0.3.0 released!

Changes since 0.2.1:

- New API and tool (gupnp-dlna-ls-profiles) to list all supported profiles
- Move API to get a profile to the DLNADiscoverer namespace
- Make GUPnPDLNAProfile opaque, add to API documentation
- Add support for several AVC_MP4_MP profiles
- Print stream topology instead of a simple list in gupnp-dlna-info
- Add debug output controlled by an environment variable for eaesier
- Beginnings of an automated testing infrastructure
- Add relaxed/extended mode properties (more details in the next release)
- Use 'bitrate' instead of 'maximum-bitrate' while matching streams
- Various bug fixes

All contributors to this release:

Arun Raghavan 
Parthasarathi Susarla 
Zeeshan Ali (Khattak) 

GUPnP Vala 0.6.11 released!

Changes since 0.6.10:

- Require and adapt to gupnp-av 0.3.0.

All contributors:

Arun Raghavan 
Parthasarathi Susarla 
Zeeshan Ali (Khattak) 

Download source tarballs from here

Tuesday, August 3, 2010

Rygel 0.7.3 (Out of Their Minds)

Rygel 0.7.3 (Out of Their Minds) is out!

A new release in the current unstable 0.7.x series for upcoming GNOME 2.31.6

- Add Album-art support.
- Add support for sorted Browse/Search.
- Don't push data after HTTP response is cancelled.
- Advertise support for search by "createClass".
- Revive accidently removed XBox hacks.
- Fix icon export for uninstalled case.
- Simplify plugin APIs to further abstract plugin developers from UPnP details.
- Add convenient MediaRenderer APIs for plugins. This involved moving most of
  the GstRenderer code to core.
- Fix seeking once again.
- Improve error handling in HTTP request handling code.
- Port to new DIDL-Lite contributor APIs.
- Port to Vala 0.9.3 and 0.9.4.
- Clean-up README and specify build and run-time dependencies.
- More debug output.
- MediaExport:
  - Make use of gupnp-dlna for faster, more complete and reliable metadata
  - Print a debug message if extraction fails for a file.
  - Add windows formats to positive list of file extensions to include in the
    metadata extraction.
  - Don't share anyt folder by default.
  - Fix url-escaped folder names on PS3.
  - Fix issue of empty title of top-level virtual folders on PS3.
  - Process 256 children at a time. This improves performance of harvesting of
    large folders.
- GstRenderer:
  - Rename to Playbin.
  - Advertize support for 'video/mp4'
  - Advertize support for RTSP
  - Handle error from playbin.
  - Don't claim support for unsupported UPnP actions and state variables.
- External:
  - Fix a crasher bug.
- Localization:
  - Add French translation.
  - Update Simplified Chinese translations.
  - Update German translation.
  - Update Galician translation.
  - Update Swedish translation.
  - Update Slovenian translation.
- Lots of other non-functional and/or minor improvements and fixes.

Dependency-related changes:

- Require Vala >= 0.9.3
- Require gupnp >= 0.13.4
- Require gupnp-av >= 0.5.8
- Require gupnp-dlna >= 0.2.1 (new dependency)
- Require libgee >= 0.5.2
- Use gtk+-2.0 (>= 2.21.5) if available rather than gtk+-3.0

Bugs fixed in this release:

607411 - Need to mention non-compile time deps.
624445 - Samsung can't FF/REW/PAUSE when playing video/avi from Rygel.
625556 - New configure flag to switch GTK+ version.

All contributors to this release:

Aron Xu 
Arun Raghavan 
Claude Paroz 
Eleanor Chen 
Frédéric Péters 
Javier Jardón 
Jens Georg 
Mario Blättermann 
Zeeshan Ali (Khattak) 

Download source tarball here

GUPnP A/V 0.5.8 released!

Changes since 0.5.7:

- Fix crashes in DIDLLiteContributor API.
- Remove incomplete and broken DLNA guessing code. Applications should use
  gupnp-dlna now for all their DLNA needs.
- Do set the 'dlna:profileID' property of 'albumArtURI' node and treat it as
  mandatory as per DLNA guidelines (
- Prefer non-transcoded resources over transcoded ones when choosing compatible
  resources for a particular MediaRenderer.
- Minor correction to DIDL filtering code.
- Some other minor improvements/fixes.

Bug fixed in this release:

2187 - GUPnPDIDLLiteContributor class doesn't work

All contributors to this release:

Zeeshan Ali (Khattak) 

Download source tarball from here

Monday, July 12, 2010

Rygel 0.7.2 (Dream A Little Dream)

Rygel 0.7.2 (Dream A Little Dream) is out!

A new release in the current unstable 0.7.x series for upcoming GNOME 2.31.5

* MediaExport:
  * Support DLNA's 'AnyContainer' upload extenstion.
  * Only harvest media files. We use a positive list for file extensions to
    include in the metadata extraction.
  * Implement fallback to the default (slow) search implementation.
  * Lower severity for some of the console messages.
  * Update code according to latest GStreamer Vala API fixes.
* Tracker:
  * Improve Sparql query builder to achieve much better performance and reduced
    D-Bus traffic.
* GstRenderer:
  * Relicense from GPL to LGPL.
  * More descriptive default title.
- Localization:
  - Add Simplified Chinese translation.
  - Add Traditional Chinese translation (Hong Kong and Taiwan).
  - Updated Spanish translation.
- Various non-functional improvements to core and plugins.

All contributors to this release:

Aron Xu 
Chao-Hsiung Liao 
Jens Georg 
Jorge González 
Zeeshan Ali (Khattak) 

Download source tarball from here

Thursday, June 24, 2010

Rygel 0.7.1 (Home on the Remains)

Rygel 0.7.1 (Home on the Remains) is out!

A new release in the current unstable 0.7.x series for upcoming GNOME 2.31.4

- Implement DLNA's 'AnyContainer' upload extenstion. This allows clients to
  upload items without having to specify target container. Currently it only
  works for the Tracker backend.
- Report types of items that could be created/uploaded in a container and allow
  clients to search containers by this property.
- Port last bits of C code to Vala. Now Rygel is completely written in Vala.
- Make Rygel build/work against both current stable and unstable Vala releases.
- Offer SD transcoding in EU profile. Seems certain Sony Bravia TVs only
  support EU profiles. With this change, they should at least be able to use the
  SD transcoding.
- Two more unit tests.
- Provide default configuration for WMV transcoding.
- Correctly handle boolean commandline option for disabling WMV transcoder.
- External:
  - Port the external plugin to use the new D-Bus MediaServer specification: The new specification is meant
    to be very generic and scale well to large media hierarchies.
  - Make use of search API when implemented by the external application.
  - Various other performance improvements.
- Preferences UI:
  - Improve resize behavior.
  - Add missing bevel to URI tree view.
  - Replace GtkVBox by GtkVButtonBox where appropriate.
- Localization:
  - Added Punjabi Translation.
  - Updated Norwegian bokmål translation.
  - Updated Galician translations.
  - Updated Spanish translation.
  - Updated Hebrew translation.
- Various non-functional improvements.

Dependency-related changes:

- Require gtk+-3.0 >= 2.90.3.
- Require gupnp-av >= 0.5.7.
- Require gupnp-vala >= 0.6.7.

Bugs fixed in this release:

593628 - mp2ts transcoder not working with certain Bravia TV models.
596214 - URI table is missing bevel.

All contributors to this release:

Zeeshan Ali (Khattak) 
Eric Anderson 
A S Alam 
Fran Diéguez 
Jorge González 
Kjartan Maraas 
Yaron Shahrabani 

Download source tarball from here

Thursday, June 17, 2010

Bridging UPnP Networks

As part of this years Google Summer of Code, Sunil Ghai (a student from India) has taken-up the task of securely bridging multiple UPnP networks across the internet. You can follow the progress of the project through Sunil's blog.

Before you say it, yes! I did get the idea from my "competitors" but unlike them, we are going to do it the (UPnP) standard and efficient (as usual) way.

Tuesday, June 15, 2010

GUPnP 0.13.4 & GUPnP AV 0.5.6 released!

GUPnP 0.13.4 released!

Changes since 0.13.3:

- GUPnPService should remove all handlers installed on the shared SoupServer
  instance when it is disposed.
- Fixate subscription timeout to be 300s as per DLNA requirement (
- Correct type of action argument of GUPnPService::action-invoked.
- Remove redundant copying of GValue content in a few places.
- Handle multiple variables inside property node in event notifications to be
  compatible with server-side implementations using older GUPnP
- Fix syntax of event notifications with multiple properties.
- Add/fix gobject-introspection annotations for various functions.
- Some non-functional improvements.

Bugs fixed in this release:

2084 - Add scope annotations to various functions
2131 - GUPnPServiceAction is a boxed, not a pointer
2086 - Fix gtk-doc format on all functions in public GUPnP API

All contributors:

Sven Neumann 
Zeeshan Ali (Khattak) 
Zach Goldberg 

Download source tarball from here

GUPnP AV 0.5.6 released!

Changes since 0.5.5:

- Optimize namespace handling in DIDL-Lite handling code.
- Hide internal function gupnp_didl_lite_object_new_from_xml().
- Remove new redundant gupnp_didl_lite_container_new_from_xml(). 
- Free the array allocated by xmlGetNsList().

All contributors to this release:
Sven Neumann 
Zeeshan Ali (Khattak) 

Download source tarball from here

Friday, June 11, 2010

Roommate for GUADEC

I am looking for someone to share a room with in a hostel/hotel in Hague during GUADEC. If you are interested, please send me a mail.

Monday, June 7, 2010

Rygel 0.7.0 (Picture if You Will) is out!

Rygel 0.7.0 (Picture if You Will) is out!

This release marks the start of the new unstable release-cycle. This is also the
release cycle that will be integrated into GNOME 2.31 (and 3.0 eventually).
Changes since 0.6.0:

- Exit on failure to load any plugins in 5 seconds.
- Add icon to preferences UI's desktop file.
- Correct error on missing 'Elements' node in 'CreateObject' action from client.
- Advertize upload features in 'X_DLNACAP' in device description.
- Remove comments from description files as per DLNA requirement (
- Don't allow comments in DIDL-Lite from client either. This is to satisfy the
  DLNA Confirmation Test Tool rather than DLNA itself.
- Don't advertize unimplemented actions.
- should create m4 directory if it doesn't exist already.
- Correct Icon path in preferences UI for uninstalled case.
- Specify on debug log where rygel is currently looking for plugins.
- Localization:
  - Don't translate all strings in media-export plugin.
  - No need to translate Mediathek plugin.
  - Add Hebrew translation.
  - Add Swedish translation.
  - Add Czech translation.
  - More Spanish translations.
  - More Slovenian translations.
  - More German translations.
- MediaExport:
  - Fix search result. Search was returning the the result for the current
    limits, not the overall result count. This lead to strange behaviour on
    e.g. XBox 360.
  - Optimize searches. Noticable speed improvements on XBox music browsing.
  - Fix broken SQL query to get object by path.
  - Remove redundant custom tag for duration.
  - Make harvesting of metadata optional.
  - Re-enable simple mode which means we exporting media on the UPnP network
    even if no meta-data extractor is available.
  - Remove redundant URI table from database.
  - Work around a problem in GStreamer element playbin2.
  - Explain the term 'harvest' for translators.
  - Many non-functional improvements.

All contributors to this release:

Zeeshan Ali (Khattak) 
Jens Georg 
Andrej Žnidaršič 
Daniel Nylander 
Fran Diéguez 
Jorge González 
Mario Blättermann 
Petr Kovar 
Yaron Shahrabani 

Download source tarball here.

Tuesday, June 1, 2010

Part of GNOME 3.0

The decision for inclusion of modules into GNOME (3.0) just came-in and proposal for Rygel was approved. \o/ Now I better get it working. :)


So last saturday I got married to this amazing woman I've been in love with for the last 3 years of my life. Except for the start of the wedding (when I was extremely nervous) I enjoyed the whole event a lot. That includes the bachelor's party that my awesome friends threw me 2 days before the wedding. Here are some pictures worth sharing, the first one being from Bachelor's party, as you can guess:

Although many people helped in different ways, three people that deserve the most appreciation are Timo (my best man) who arranged the Bachelor's party, Anna Haukka who was the main official photographer and Tiina Taxell (Bride's maid). Also special Thanks to Edward to arrange some important things before the wedding and Christian (also my best man) for bringing Edward so early in the morning and the rings. :)

One of the weird things about my wedding was that it brought many hackers from all around Europe to Helsinki for a few days. :)

Saturday, May 15, 2010

Rygel 0.6.0 (The Way We Weren't) is out!

Rygel 0.6.0 (The Way We Weren't) is out!

This release marks the start of the new stable release-cycle. Changes since

- Localization:
  - Fix translation framework.
  - Mark all (possibly) user-visible string for translation.
  - Use more translator-friendly language.
  - Provide comments for translators.
  - Correctly case abbreviations.
  - Translations:
    - German (de) 100%
    - Slovenian (sl): 100%
    - Spanish (es): 57%
- Fix time-seeking.
- Fix a potential race-condition in aborted HTTP requests.
- Don't stream if request is for subtitles.
- Use bigger (64Ki) buffers when streaming from gstreamer source  element.
- Remux only if transcoding is not needed.
- Configuration option for specifying plugin load path.
- Add configuration from Environment.
- Fix port specification through commandline.
- Add and expose Rygel logo.
- Pause streaming pipeline when/if client isn't reading fast enough.
- Add more unit tests.
- Use
- Add missing libuuid to build and linker flags for all plugins.
- Plugins are now able to provide a model description.
- MediaExport:
  - File size change suggests file change.
  - Move media DB and metadata harvesting code from core to module as  this is
    the only module that is using it.
- External plugin now sets model description.
- Lots of non-functional improvements and fixes.

Dependency-related changes:

- Sqlite now only needed for media-export plugin.

Bugs fixed in this release:

617762 Wrong file size exported to PS3
590649 LiveResponse does not rate limit the GStreamer pipeline
615834 Uses ALL_LINGUAS in
616189 Translation issues
617750 Only re-encode audio and video when necessary

All contributors to this release:

Zeeshan Ali (Khattak) 
Jens Georg 
Mario Blättermann 
Jorge González 
Andrej Žnidaršič 

Download source tarball here.

More info on the project on Rygel home page.

Wednesday, April 21, 2010

Rygel logo v2

So based on comments received on the Rygel logo in the last blog entry, Klaus did some adjustments and came-up with even more improved version:



Tuesday, April 20, 2010

Future of Rygel

While you can follow the progress of Rygel through the release announcements on my blog, mailing-lists and even git log, I feel that I am not providing enough information about the future plans. Also there are some things that are not (or so far have not been) in a shape to be part of a release so here is some of what is coming:


I've been looking for an artist to make me a nice logo ever since the start of the project. A few artists gave it a try but they didn't succeed in creating anything worth showing to anyone. I couldn't possibly blame them since:

  • Its not very clear to everyone what Rygel is and I suck at explaining things.
  • Its hard to represent it even when you learn what it is.

So what happened was that I told Sebastian that I was so jealous of his new logo, he asked Klaus to attempt to do the same for Rygel. He did and after a bit of talking and him trying different ideas, we finally agreed on this:




Some people like it, some people don't but I like it. I think Klaus did a pretty good job, keeping in mind this wasn't an easy one. If you are one of those who don't like it, feel free to provide better alternatives or suggestions for Klaus.

Tracker or no Tracker

About an year ago, we (mostly Jens Georg) wrote a plugin (media-export) for Rygel that exposes folders on filesystem on the UPnP network. Although that meant us re-implementing some wheels and getting hated (no i know Ivan still loves me :)) for not being active member of Tracker revolution, I think this was still the right decision because:

  • The stable tracker version (0.6) we were using sucked big time in many ways, a fact admitted by every Tracker developer I've talked to regarding this.
  • AFAIK most GNOME developer (not involved with Tracker project) and distribution packagers didn't feel very positive about the project. Rygel was getting part of the heat for depending on it and that wasn't helping in gaining popularity for a new project.
  • It wasn't really very difficult to implement media-export in Vala, I didn't need to spend a lot of time on it myself and I didn't feel like standing in the way of a new plugin that I'll get almost for free and will satisfy a lot of people.

So now its mid'ish 2010, the world has changed and so has Tracker:

  • Tracker is now a blessed GNOME dependency. That means no one can say 'boo' at me anymore for depending on Tracker, while I walk the streets. More than enough people are now positive about the project.
  • New Tracker APIs are very different from that of 0.6, richer easier, dynamic, complete and future proof. Not to mention its based on existing and proven technologies/concepts: RDF and Sparql.
  • Most of the performance issues that tracker 0.6 was known for, has been addressed appropriately.
  • Tracker is now nicely divided in different components so an application can easily depend only on the parts that it really need. For example, Rygel won't have to depend on evolution since it doesn't need any email-related stuff.
  • I made sure 'nmm' ontology of Tracker has the needed UPnP properties that I will need in Rygel.

Some people still just don't like the very idea of Tracker and for those lost souls, I quote Owen Taylor:

I think it will definitely be hard to implement our ideas without something that looks a lot like Tracker, and since we have Tracker something that looks a lot like Tracker is most likely Tracker :-)

So keeping these facts in mind I've decided to:

  • Strip down almost all the functionalities of media-export so it only exposes the file-system hierarchies on UPnP network without any metadata. Actually this is exactly what Lennart wanted in the first place when he asked for this plugin. With metadata extraction in place, we are no better than tracker 0.6 anyway.
  • Remove media-export from preferences UI. Keeping in mind what kind of users will still use media-export in its new form, its quite enough that they can configure the directories to export by manually editing the configuration file.
  • Provide an easy way for the user to specify which media from tracker-store to expose on UPnP network. Since user chooses the files to harvest for metadata and keep in tracker-store using tracker's preferences UI, I think it's better if this option is also provided in there but I need to discuss with Ivan yet regarding this. If that is not feasible, I'll do this in rygel-preferences.

Other features

  • Unit tests: In the last release we introduced a few unit tests. This is just the beginning and we intend to write units for at least all core modules.
  • MediaServer v2: Iago and Juan talked about this in their blog and announced that they already have implemented v2 so now I have to do my part and implement the consumer part in Rygel: i-e Port v1 code to v2 and I am already on it.
  • DLNA compliance: Looking at the results of DLNA CTT session we had last time, we've a lot of work to do here. Hopefully mostly small fixes here and there.
  • Getting married on 29.05.2010. This is the hardest one but I'm sure I can do it. :)


Some facts that I forgot to mention/explain when I posted the blog entry and to reply to some comments I received here and on IRC:

  • media-export is not being dropped. Please read carefully before making such assumptions and then saying 'Boo' to me for that. :)
  • I still don't plan to have a hard dependency on Tracker at all. It will still be one of the plugins. If you want something like Tracker that is not tracker, you are more than welcome to take the existing media-export code and maintain it as separate or part of your project/process.
  • Once gst-convenience library that Edward and Arun are working on, is in a stable state and delivers to it's promises of speeds (so far it has), we'll re-add export of metadata in media-export but this time around, we'll do it on the fly and won't need to deal with databases and stuff.
  • Tracker has always (even in the 0.6 days) provided easy ways for specifying which directories you want it to index so once we've a way to tell it which of the indexed media to expose on UPnP, we've all the features the media-export currently provides.

I'll leave the comments about the Logo for Klaus to reply. :)


OK OK, I get it that I am making a lot more people unhappy than I am making happy with the 'media-export' plan. So based on that and the fact that Jens is willing to keep maintaining media-export for me, I'll leave this as is. I'll just move code in the core that only media-export uses into media-export plugin. I myself will embrace the future and concentrate on Tracker integration. :)

Wednesday, April 14, 2010

Rygel 0.5.2 released!

Rygel 0.5.2 (Crackers Don't Matter) is out!

Another release in the unstable 0.5.x series. Changes since 0.5.0:

- Add support for Xbox 360 and Window Media Player 11.
- Add support for subtitles. Currently only useful for certain Samsung DLNA TVs.
- Add Windows Media Video (WMV) transcoder.
- Add unit tests for a few modules.
- Fix some (potential) crashes.
- Make database operations cancellable.
- Throw error on database creation failure.
- Simpler (hopefully) build rules.
- Fix race-condition in streaming code so we don't terminate the connection
  before all the bytes are sent to the client.
- Fix leaking of HTTP messages of live streams on termination.
- Fix 'Content-Length' header values for partial requests.
- Fix parsing of search expression containing characters not within the original
  latin1 range.
- Use bigger (64Ki) buffers when streaming media to reduce cpu usage and
  therefore improve battery life.
- Include spec version in description document.
- Remove now unneeded work-around for vala bug#568972.
- Advertize photos with their specific class, i-e 'photo' rather than 'image'.
- MediaExport:
  - Implement search by URIs.
  - Implement search by album.
  - Error-out on invalid search expression.
  - Add support for virtual containers. This allows creation of metadata-based
    hierarchies in the user-config.
  - Fix deletion of containers.
  - URI-escape meta-data fields.
  - Catch previously uncaught exceptions.
  - Fix upgrade of database from older schemas.
- Lots of code clean-ups and documentation fixes. 
Dependency-related changes:

- Require gupnp >= 0.13.3.
- Require gupnp-av >= 0.5.5. 
- Require gupnp-vala >= 0.6.5.
- Require valac >= 0.8.0.

Bugs fixed in this release:

608886 - media export plugin corrupts its database when you change directories
609944 - Files not harvested on update
606305 - Samsung subtitles

All contributors to this release:

Jens Georg 
Zeeshan Ali (Khattak) 
Cyrille Chepelov 

Download source tarball from here

Friday, April 9, 2010

GSSDP 0.7.2, GUPnP 0.13.3, GUPnP AV 0.5.5 & GUPnP Vala 0.6.5

GSSDP 0.7.2 released!

Changes since 0.7.1:

- Provide gobject-introspection GIR and typelib.
- Use silent build rules.
- Fix issues with version-independence magic in SSDP code.
- Fix build issues in jhbuild environment.

Bugs fixed in this release:

2025 - fails to find autoconf macros when they're installed in a
           non-standard location
1927 - gssdp fails to answer M-SEARCH sometimes
1921 - GObject Introspection Makefile for GSSDP

All Contributors:

Zeeshan Ali (Khattak) 
Zach Goldberg 
Jens Georg 
Neil Roberts 
Ross Burton 

Download source tarball from here

GUPnP 0.13.3 released!

Changes since 0.13.2:

- Include the Content-Type header in the HTTP messages. This satisfies DLNA
 CTT test cases and
- Use g_message instead of g_warning if we can't connect to DBus.
- Make the HTTP server listen on the context's interface only.
- Fix some potential crashes in GUPnPServiceProxy and GUPnPContextManager code.
- Fix build issues in jhbuild environment.
- Fix some gcc warnings.
- Add new API to host path for specific user-agent(s).
- Add gobject-introspection support:
 - Provide gobject-introspection GIR and typelib.
 - Add needed annotations to doc comments.
 - Add GList variants of action-related functions to satisfy PyGI.
- A few non-functional improvments.

Dependency related changes:

- gssdp >= 0.7.1

Bugs fixed in this release:

2054 - Xbox hacks
1965 - gcc warning fixes
2039 - GUPnP is hard to use with jhbuild
1948 - Signal handler are not disconnected when ContextManager is disposed
2030 - gupnp context listens on instead of the context's ip
1924 - Content-Type header must contain charset="utf-8" in all HTTP transactions
2006 - Implement 3 new functions for language bindings (begin_action_list,
           end_action_list, gupnp_service_action_get_value_type)
1919 - Add GObject Introspection Annotations and Makefile
1979 - g_warning make gupnp-igd test fails
1906 - Tests failed with gupnp 0.13

All contributors:

Zeeshan Ali (Khattak) 
Zach Goldberg 
Ross Burton 
Olivier Crête 
Neil Roberts 
Sven Neumann 
Jens Georg 
Yakup Akbay 

Download source tarball from here

GUPnP AV 0.5.5 released!

Changes since 0.5.4:

- Provide gobject-introspection GIR and typelib.
- Provide microseconds in 'duration' to satisfy XBox.
- Fix data type of GUPnPDIDLLiteContainer:child-count
- Fix build issues in jhbuild environment.
- Enable silent build rules if they are available.

All contributors to this release:

Zeeshan Ali (Khattak) 
Zach Goldberg 
Neil Roberts 
Ross Burton 

Download source tarball from here

GUPnP Vala 0.6.5 released!

Changes since 0.6.4:

- Require & adapt to:
 - gssdp 0.7.2
 - gupnp 0.13.3
 - gupnp-av 0.5.5
 - vala 0.8.0
- Don't hide gupnp_root_device_get_relative_location

All contributors:

Zeeshan Ali (Khattak) 

Download source tarball from here

Saturday, April 3, 2010

Introducing Zhaan

I mentioned this cool guy Zachary Goldberg in my blog and in my talk before. While I mentioned his name in regards to his efforts to making sure GUPnP glues nicely with gobject-introspection and is usable from Python, he went much further than I expected and made a cool new UPnP control-point for N900 based on GUPnP in Python. He named it Zhaan (another character from Farscape in the spirit of Rygel).

Some mandatory screenshots:

You can check out more screenshots/specs of the project and follow its status here.

There are many people out there making cool UIs but they end-up using wrong tools and/or re-inventing the wheel so its nice to see someone doing cool stuff but the right way. :)

Tuesday, February 23, 2010

Rygel 0.5.0 (Mind the Baby) is out!

The first release in the unstable 0.5.x series. Changes since 0.4.6 that were
not provided by any subsequent 0.4.x releases:

- New URI generation scheme that avoids problematic characters which makes some
  crappy renderers choke.
- Allow creation of new media items and tranfering data into existing ones (
  upload). This is relavent to, and works for both MediaExport and Tracker.
- Implement GetTransferProgress and StopTransferResource actions.
- Advertise:
  - support for connection stalling.
  - live response to be sender-paced.
- Rewrite SearchCriteria parser to make it more reliable.
- Tracker:
  - Port to the Tracker 0.7 APIs.
  - Provide richer & more intuitive media hierarchy.
  - Signal container update on changes to subjects.
  - Act on config options allowing user to define which categories to share.
  - Support for search by URI.
  - Descriptive IDs for containers.
- MediaExport
  - Implement custom search that translates to an SQLite query and therefore
    performs much faster than before.
  - Print message on console when harvesting is done.
  - Don't modify DB if harvester was cancelled.
  - Cancel harvester before starting new one.
- Lots of non-functional improvements and fixes.

All contributors to this release:

Zeeshan Ali (Khattak) 
Jens Georg 

Download source tarball from here

Rygel 0.4.12 (Through the Looking Glass) is out!

Another release in the stable 0.4.x series. Changes since 0.4.10:

- Fix desktop file.
- A few fixes to satisfy latest valac (0.7.10).
- Adapt to new libxml Vala API.

All contributors to this release:

Zeeshan Ali (Khattak) 
Andreas Henriksson 
Philip Withnall 

Download source tarball here

Thursday, February 18, 2010

Regarding meaning of life

Back in the days when we were losing a lot of good souls to "World of Warcraft", I used to say to myself "Losers, there's so much in life to enjoy and so much to do to bring Free SW on every machine out there.." and promised myself that I'll never even try any MMORPG.

About a month back, Rene came over to me carrying a German game magazine and showed me a comparison of the upcoming MMORPGs based on Star Trek and Star Wars. Now I can resist all games but a chance to live the life of a Star-fleet officer? No way!

So I started playing Star Trek Online last month when it was still in beta and got into it. Soon I pre-ordered the game for and life-time subscription (that also allowed me to play a freed Borg character).

Now when I say "I got into it", I don't mean I am playing for hours and hours everyday. It means I play maximum 5 days a week and for 1-3 hours only. Anyway, here is a nice picture taken by Ekaterina while I'm fighting off a Gorn ship:

UPDATE: Forgot to mention that I have a key that should allow a month of playtime and I am willing give it out for free to a friend. :) So let me know if you want to try it out.

Tuesday, February 9, 2010


Just like the last 2 years, I joined the FOSDEM fun. Just like every year there were lots of awesome beers, chocolates, waffles and of course conference full of awesome hackers from all over the world & their awesome talks. In short, the same old 'awesome' experience. Also I finally got to meet Jens George (phako) in person. Another thing that went it a totally unusual (and unexpected) direction was my home directory. Here is how it went:

Early Sunday morning (8:00) my alarm goes off to wake me up in time for my 10:15 am talk. I manage to get up after half an hour of snoozing the alarm, get ready (including getting a shower out of almost non-functional shower), back-up my slides on USB stick and manage to get to the conference room 10 minutes before the talk along with my room-mates, Marc-Andre and Juerg. Failed to get anything to eat or even a cup of coffee before that.

I open-up the lid of my laptop to find out that it won't be able to wake-up from suspend. No problems, happens all the time even since I moved to Ubuntu so I apply the usual solution: Forced reboot. When the system boots I get into another issues that I had been having ever since I moved to Ubuntu: Soon after I provide the password for my encrypted partition (home and swap), I am told that home partition could not be mounted. No problems, I again apply the usual solution: Hit escape key to get to a root shell, where I do this:

# cryptsetup remove home
# cryptsetup create home /dev/sda6
Enter passphrase:
# mount /home

Normally, at this point I just hit CTRL+d and normal boot sequence resumes and everyone on the laptop lives happily ever after. However, this time thats not what happens. `mount` says:

mount: wrong fs type, bad option, bad superblock on /dev/mapper/home,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

This has also happened before but usually this means I mistyped the password and I just have to repeat the above procedure. However, after trying several times, I keep getting the same message. I give-up and lend Marc-Andre's laptop for the slides show. After the presentation, I tried everything and asked everyone I knew who might have any clues but no help came.

Since I get the same questions each time I tell this story to anyone, I thought I append this blog entry by an FAQ:

Q: Why on earth are you encrypting your partitions:
A: Nokia security policy.

Q: What makes you so sure that you haven't just forgotten the password.
A: Because I keep the exact same password for both the partitions and I am able to successfully decrypt one of them.

Q: Have you tried looking at `dmesg | tail`?
A: Yes, nothing in there.

Q: Have you tried fsck?
A: Yes, that can't make any sense out of the "unencrypted" block device either. Because of this, I suspect something is wrong on the actual (encrypted) device, which fsck can not help with.

Thursday, February 4, 2010

GUPnP AV & GUPnP Vala releases

GUPnP AV 0.5.4 released

Changes since 0.5.2:

- Gracefully handle empty or no 'res' node.
- Function to get the list of descriptors from DIDL-Lite objects.
- More complete comparison for LPCM mime types.
- Fix incorrect type conversion of DLNA flags.
- DLNA flags should not default to a specific DLNA version.
- New APIs to deal with contributor-related properties in DIDL-Lite objects.
- Remove redundant construction methods.
- Add forgotten header to the meta-header file.
- Add and fix gobject-introspection annotations.
- Lots of documentation fixes.
- Many minor non-functional fixes/improvements.

Bug fixes in this release:

1935 - Incorrect conversion while parsing primary DLNA Flags
1934 - DLNA Flags should not default to a specific DLNA version.
1933 - Content type matching fails when additional parameters exist in LPCM
1814 - Add "artists" property to GUPnPDIDLLiteObject

All contributors to this release:

Zeeshan Ali (Khattak) 
Yakup Akbay 
Zachary Goldberg 

Download source tarballs from here

GUPnP Vala bindings 0.6.4 released!

Changes since 0.6.2:

- Require and adapt to gupnp-av 0.5.3.

All contributors:

Zeeshan Ali (Khattak) 

Download source tarballs from here

Thursday, January 28, 2010

Sunday, January 24, 2010

Rygel 0.4.10 (A Human Reaction)

Rygel 0.4.10 (A Human Reaction) is out!

Another release in the stable 0.4.x series. Changes since 0.4.8:

- Restart application on SIGHUP.
- Fix cancellation of HTTP streams and in turn a critical leak.
- Correct condition for byte-seeking.
- Correctly handle boolean commandline options.
- Enable check for Vala if any stamp file is absent.
- Fix condition for partial content transfer.
- Correct linker argument order. This should fix the build issue on Gentoo.
- Work-around for an automake bug.
- Limit search slice to result size.
- Fix a spelling mistake in error message.
- Tell valac to put debugging symbols to generated code so gdb can refer to
  lines in the Vala source code.

Bug fixes in this release:

601395 - restart on SIGHUP

All contributors to this release:

Zeeshan Ali (Khattak) 
Jens Georg 

Download source tarball here.