Posts

GUPnP 0.12.8 released

Changes since 0.12.7 - Don't crash if device descriptions don't contain a root element. - Fix pkg-config paths. - Avoid using asserts. - Use the closest match instead of using the icon that was last checked. - Expect xmlRecoverMemory to fail. - Reject action messages with zero content length. - Change version in action answer. Bug fixes in this release: - bug#1570: gupnp doesn't set the pkgconfig lib dir correctly in 64 bit env. - bug#1574: Avoid using asserts. - bug#1592: gupnp_device_info_get_icon_url() does not return the closest match. - bug#1604: Crash on action without any content. All contributors to this release: Ross Burton Zeeshan Ali (Khattak) Steven Dorigotti Sven Neumann Jens Georg Download at: http://gupnp.org/sources/gupnp/gupnp-0.12.8.tar.gz

Rygel 0.3 (Berlin is cool if it doesn't rain) is out

Image
Rygel 0.3 (Berlin is cool if it doesn't rain) is out! Here are is relase announcement: Brief summary of changes since 0.2.2: - Transcoding from any format (that gstreamer's decodebin2 can handle) to mp3, linear PCM and mpeg transport stream containing mpeg 2 video and mp2 audio. - Plugin API to deal with user preferences. - User preferences UI: rygel-preferences. - New plugins: * Folder: Recursively exports folders specified in the user preferences. * ZDFMediathek: Exports online media from 2nd German TV station. * External: Exports media hierarchies provided by external applications through implementation of this spec: http://live.gnome.org/Rygel/MediaServer. The first application that utilizes this feature is PulseAudio. - Drop xbox support. It didn't work anyway and we better concentrate on implementing standard stuff that it at least worthy of being called "UPnP" ( at least for now). - Tracker and DVB plugins are only loaded if their corre

GUPnP Tools 0.7.1 released

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 < s.neumann@phase-zero.de > Zeeshan Ali (Khattak) < zeeshanak@gnome.org > Download tarball here: http://gupnp.org/sources/ gupnp-tools/gupnp-tools-0.7.1. tar.gz

GUPnP 0.12.7 released

GUPnP 0.12.7 released. Changes in this release: - Chain up dispose and finalize in GUPnPDeviceInfo - Use a dedicated SoupSession for event handling - Fix device icon fallback logic - Fix user agent string - Sanity check UDN while parsing Download source tarball from: http://gupnp.org/sources/gupnp/gupnp-0.12.7.tar.gz Contributors to this release: Sven Neumann Ross Burton Zeeshan Ali

GUPnP on windows

I have been asked several times in the past if gupnp is portable enough. I always told them that I don't know for sure but the only problem i see is the low-level networking bits. Nobody really showed interest in actually trying it out on windows but then came Jens Georg. He managed to make gupnp stack and network-light working on windows within a weekend, despite the fact that some of his hours were wasted due to firewalls being enabled after a reboot and him forgetting about it. He has a small video of network-light running nicely on win32 on his blog .

My first Javascript app

Last night I tried to make a small app/script in javascript (gjs) and it actually worked. :) Here is the code: const GLib = imports.gi.GLib; const GUPnP = imports.gi.GUPnP; const Mainloop = imports.mainloop; // This doesn't start any threads GLib.thread_init (null); let context = new GUPnP.Context ({ main_context: null, host_ip: null, port: 0 }); let cp = new GUPnP.ControlPoint ({ client: context, target: "ssdp:all" }); function onDeviceProxyAvailable (cp, proxy) { log (proxy.get_friendly_name ()); } // Tell us when there is a new device available cp.connect ("device-proxy-available", onDeviceProxyAvailable); // Search and listen for UPnP resources on the network cp.set_active (true); Mainloop.run ("0");

GUPnP AV 0.4 and GUPnP Vala 0.5.4 released

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: http://gupnp.org/sources/ gupnp-av/gupnp-av-0.4.tar.gz -----------------------------

Zakir Naik and evolution

Image
This name must be alien to most of the people reading this blog but he is quite a popular in indo-sub continent. Recently a muslim friend of mine presented his arguments to me when we discussed evolution so I thought of watching one of his videos about the theory of evolution. The following are my notes on this video that I was supposed to send to my friend but then realized that it would be nice to 1. share it with others 2. have these available somewhere in public: He starts his speech with the argument that in no book, it calls evolution a fact but theory. Now this only shows his ignorance about the very definition of a scientific theory and this alone should be enough to simply ignore anything such has to say about science. However I will not do that and listen to rest of his speech and address his arguments. Here is my notes on each of his arguments: 1. Quote from Darwin "I do not believe in natural selection, I do no believe in theory of evolution". First of all, coul

Maemo community - Students Wanted

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 .

We have transcoding!

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 Ryg

Multiple networks and GUPnP

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. Recently when this issue was raised on the mailing-list and bugzilla by two different people, I started to think about how to solve this issue. Keeping in view Ross ' advice I came-up with the following solution A GUPnPContextManager class that basically just have two signals: "context-available" and "context-unavailable", that it uses to create/destroy and report

First time skied

Image
So after 4 years in Finland, I finally got to ski for the first time ever in my life. It was so much fun but unfortunately also extremely tiring at least for a first timer like me who hadn't developed the needed muscles for it. Ansku took some pictures:

Rygel 0.2.2 is out

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-

GSSDP 0.6.4, GUPnP 0.12.6 and GUPnP Vala 0.5.3

GSSDP 0.6.4 released New in this release: - Send ssdp:byebye before sending the first ssdp:alive. [Jussi Kukkonen] - Moderate the outbound SSDP messages. [Jussi Kukkonen] - Documentation fixes. [Jussi Kukkonen] - Send byebyes in dispose without sleep. [Jussi Kukkonen] - Use g_set_error_literal(). [Jorn Baayen] - Depend on glib 2.18. [Jorn Baayen] - Do not byebye unavailable resources. [Jorn Baayen] - All resources must respond to "ssdp:all" messages. [Hugo Calleja, Jorn Baayen] Download from here: http://gupnp.org/sources/ gssdp/gssdp-0.6.4.tar.gz --------------------------------- GUPnP 0.12.6 released: New in this release: - Port to FreeBSD. [Romain Tartière] - Ship the XML files needed for example app. [Romain Tartière] - Keep a reference on the control-point during signal emission. [Sven Neumann] - Allow passing NULL to ControlPoint constructor, for default resource factory. [Sven Neumann] - Remove debug output that accidentally went in with the last commit. [Sven Neumann]

Writing Rygel plugins

While I had been trying my best to make sure writing Rygel plugins is easier than frying eggs before my FOSDEM presentation, I was quite disappointed about how the presentation actually went. I thought I simply lost everyone in there by the end of th presentation and didn't get to make a very good impression. But seems the ease of writing Rygel plugins didn't go unnoticed in that presentation after all since I happen to catch the attention of at least one developer, Jens Georg who is working on two plugins for Rygel and you can follow the progress on his blog .

Geek Humor

Image
I was poked by a Salvatore Iovene, a very good friend and colleague from time to time to have a look at his comic series . I always thought I should have a look at it as it might be good but then I used to forget about it. Today he poked me again (this time when i was sitting in front of a computer) and I did have a look at it. Oh boy! this is some really great stuff. If you like Geek Humor, I strongly recommend it. Some trailor:

XChat Guile 0.3

Changes in this release: - Move/port to Guile-1.8. - Get rid of all locking and thread stuff and in turn dep on gthread. - Guile console. [Lionel Elie Mamane] - Use alist instead of list where appropriate. - Use XCHAT_EAT_* instead of hardcoded 0/1. [Lionel Elie Mamane] - Fix memory leak in xchat_write. [Lionel Elie Mamane] - We maintain this NEWS file from now on. :) - Some other minor fixes. Download release tarball from here: http://static.fi/~zeenix/xchat-guile/xchat-guile-0.3.tar.gz What is it? =========== XChat-Guile is a plugin for XChat that enables XChat plugin writers to write their plugins in Scheme language. Requirements: ============= * XChat >= 2.4.1 * Guile >= 1.6.4 API Documentation: http://static.fi/~zeenix/xchat-guile/xchat-guile.txt

Regarding Mono project

Jeff explained to me on IRC how the mention of Mono in my last blog entry the way I put it, gives people the impression that I implied mono has anything to do with the issue. I really didn't mean to imply that so I am very sorry for causing this confusion. Now that I am writing this , I will make it very clear for the record that I do not have anything against the mono project. Quite on the contrary, I am extremely impressed by this great project and the service it has done for the Free Software world. Microsoft supporting the development of a Free Software project , never thought we'll ever achieve this but Miguel and his great team of hackers have made that possible.

Give Lennart a break

Even though Lennart has been working hard to make people lives easier, it seems some people are working hard to make his life harder by making discouraging comments not just about his ideas but the great work he has been putting up. First of all, if you don't know why a sound server is needed on a modern desktop environment, you need to research about it (asking Lennart or anyone who knows *politely* might be a good start). Making a big fuzz of your ignorance and being proud of it won't help anyone, especially yourself. If you had asked this question from Lennart and he didn't give you a nice satisfactory answer at that time, it must have been because he must be getting really tired of answering this same exact question so many times, over and over again. That doesn't mean a sound server is not needed. No need to rush to conclusions. Ask someone else and/or research more. God is in the details. Secondly, if Lennart's software breaks some proprietry shit , it's

FOSDEM2009

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.