Wednesday, June 3, 2009

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

Saturday, May 30, 2009

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

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 corresponding services are
available.
- Export of duration for music and video items from Tracker.
- Use HTTP EOF encoding rather the CHUNKED for live streams.
- Ability to build rygel plugins outside it's source tree.
- HTTP proxying only if needed.
- Now that gupnp-av does DLNA profile guessing for us, no need to lie about
DLNA profile anymore.
- Add a summary after configure.
- HTTServer is now internal API.
- Use git-version-gen to generate package version.
- Differentiate between modules and plugins
- Passive, asynchronous plugin loading. A side-effect of which is that modules
can now load more than one plugin.
- Differentiate between name and title of the plugin.
- Plugins can now dynamically change their availability.
- Add API to get/list plugins.
- Re-use existing description from user's home directory. This not only speeds
the start-up but also obsoletes the necessity to keep immutable data (e.g UDN)
in user preferences.
- Provide gconf schemas.
- Lots of other improvements and bug fixes.

Dependency-related changes:

- Explicitly require and link to libsoup-2.4 >= 2.26.0.
- Don't require Vala (and bindings) in distribution tarball.
- Require gupnp-av >= 0.4.
- Require Vala >= 0.7.3.
- Require Gtk+ >= 2.16 if preferences UI is not disabled.

Bugs fixed in this release:

582173 - git-version-gen: generate versions with - instead of .
577000 - gupnp-av-cp does not like & in uris
576998 - Rygel wants to transcode audio files to video/mpeg
575935 - Add support for duration metadata field
574604 – bug connecting to PS3

All contributors to this release:

Zeeshan Ali (Khattak)
Jens Georg
Henrique Ferreiro
Lennart Poettering
Marc-André Lureau
Rob Taylor

Download source tarball at: http://ftp.gnome.org/pub/GNOME/sources/rygel/0.3/

Here is me watching streams from 2nd German TV channel, transcoded to mpeg transport stream through Rygel on my PS3:



Here is the video clip if you are interested or don't believe me. :)

Tuesday, May 12, 2009

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

Monday, April 27, 2009

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.

Friday, April 17, 2009

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");

Sunday, April 12, 2009

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

-------------------------------
GUPnP Vala 0.5.4 released.

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

Download from here: http://gupnp.org/sources/bindings/gupnp-vala-0.5.4.tar.gz