Sunday, September 27, 2009

Rygel 0.4.1 (Even more fascinating!)

Soon after Rygel 0.4 was released, Peter Robinson pushed it for F12 and our good friend Bastien Nocera started testing it immediately. He found many issues and some of them were so critical that we immediately had to make a another release with fixes for those issues. Thanks Bastien!

Wednesday, September 23, 2009

Rygel 0.4 (Fascinating!) is out!

Rygel 0.4 (Fascinating!) is out!

As usual, the release announcement:

Brief summary of changes since 0.3:

- Rygel is no more just a MediaServer but rather a collection of DLNA (UPnP AV)
  services (devices in UPnP speak).
- Port to new GUPnP APIs. The biggest advantage of that is that we now have
  dynamic network support, i-e Rygel can attach/detach to/from a network
  interface as it goes up/down.
- Support for time-based seeking in transcoded streams.
- Random tweaks to transcoding pipelines.
- Provide a DBus service providing two functionalities:
   * Ability to tell Rygel to shutdown. Starting of Rygel is automatically
     handled by D-Bus since a .service file is provided by Rygel.
   * Ability to tell Rygel (MediaExport plugin actually) to (un)export URIs on
     the fly.
- Implement enabling/disabling of UPnP in the preferences.
- Configuration through command-line options.
- Use a .ini configuration file rather than gconf.
- Special default configuration for Maemo.
- Don't spam the user's config directory and instead keep the description files
  into a separate subdirectory.
- `make clean` doesn't clean the generated C files anymore.
- Remove "all rights reserved" part from all copyright headers.
- Remove integrated DVB plugin as DVBDaemon now implements the external plugin
  interface and hence dynamically glues to Rygel, just like PulseAudio.
- New classes to further ease the plugin implementation.
- (Un)pause the SoupMessage at the right time. This was causing a lot of delays
  when playing media on Sony PS3.
- Bitrate is supposed to be in bytes/second. Not really but tell that to writers
  of UPnP specification.
- Expose transcode formats in the GetProtocolInfo's source argument. This should
  make Sony Bravia TVs happy.
- Transcoder URIs are now sorted according to their distance from the original
  format.
- Provide "contentFeatures.dlna.org" header in the HTTP responses.
- Provide DLNA transferMode header in the HTTP responses.
- Only advertise internal URIs on local loopback interface.
- Replace 'ip' config by 'interface' so users can bind Rygel to interfaces
  rather than IP.
- Allow plugins to provide thumbnails.
- Add thumbnails (if available) for each item if none provided by plugins. This
  works both on the desktop and Maemo.
- Suppress all C compiler warnings by default. These warnings are mostly useless
  for us since almost all C code is generated.
- Preference dialog is now more like a GNOME preferences dialog.
- Provide .desktop file for preferences dialog.
- Shave the build output.
- GstLaunch: New plugin that exposes gstreamer pipelines described using
  familiar gst-launch syntax in the user configuration.
- Tracker plugin:
  - Nicer default title.
  - Better detection of Tracker availability. Apparently ubuntu folks think that
    providing a .service file is wrong.
  - Better titles for top-level folders.
  - More usable hierarchy: Browsing by artists, albums and tags.
- Folder plugin:
  - Rename to MediaExport.
  - Nicer default title.
  - Use the new Rygel classes to extract, export and save media metadata.
  - notify about updates to containers.
  - Skip files/folders starting with '.'.
  - Avoid crash if unknown file is found.
  - Delete gone directories on new start.
  - React on deletion of files.
  - Add recursive file monitoring.
  - Provide simple and easy options to add and remove files and folders from the
    preferences UI.
- External plugin:
  - actually use 'DLNAProfile' property.
  - Don't load the plugin more than once.
  - Utilise optional MediaItem properties.
  - Fetch items on demand.
  - Fix critical warnings.
- Mediathek plugin:
  - Fix crash if no config is available.

Dependency-related changes:

- Require gupnp >= 0.13
- Require gupnp-av >= 0.5
- Require GStreamer >= 0.10.23
- Require libgee >= 0.3.0

Bugs fixed in this release:

584649 - Folder plugin should not export dot files and directories
586108 - ID3 information not exported on mp3 files
588034 - Bad durations for audio video files with media export plugin
585986 - Some copyright headers claim "all rights reserved"
585989 - Running "make clean" should leave generated C files in place.
586134 - Tracker plugin fails if org.freedesktop.Tracker can't be activated,
         even if tracker is already running
586243 - GStreamer 0.10.23 required for correct operation of transcoder
587651 - Support for some MediaItem properties missing
587855 - HTTP Error responses not sent
587866 - No way to notify about new sub-containers
588030 - rygel-preferences crashes if user's config file is missing
588162 - Support seeking in transcoded content
589955 - dc:creator never included in DIDL output
589956 - git ignore rules
589974 - Set the bitrate for transcoded resources correctly.
589977 - Rygel not recognised by Sony Bravia televisions
590643 - refactor HTTP request handling code
590702 - Rygel should provide thumbnails for items
591580 - not compatible with Samsung UE46B7070
593228 - [plugin] new gstlaunch plugin

All contributors to this release:

Zeeshan Ali (Khattak) 
Jens Georg 
James Henstridge 
Thijs Vermeir 
Ole André Vadla Ravnås 

Download source tarball from here

Wednesday, September 9, 2009

We got thumbnails

I got thumbnails working in Rygel. :) Right now rygel doesn't generate the thumbnails on it's own but provide thumbnails if already generated by another application (e.g nautilus) and stored in the freedesktop or maemo (they are almost the same) standard location. It works on both desktop and N900 and now that gupnp stack has been released, a rygel release with this and some other cool features will arrive shortly. :)

Now it's very easy for me to find the videos of my friends.

GSSDP 0.7, GUPnP 0.13, GUPnP AV 0.5, GUPnP Tools 0.8 & GUPnP Vala 0.6

GSSDP 0.7 released!

Changes in this release:

- Join the multicast group on the specified interface.
- Put the message src timeout in the specified GMainContext.
- "host-ip" property moved from GUPnPContext to parent GSSDPClient.
- Use inet_aton instead of inet_addr and handle the error from it.
- gssdp-device-sniffer ported to GtkBuilder.
- Version-independent target match. This makes client forward and backward
compatible with resources that implement different version of the specs than
the client.
- Version-independent M-SEARCH response. This has the same effect as above but
only the other way around.
- GSSDPClient now binds to interface rather than IP.
- No need to find the default route.
- Add "active" property to GSSDPClient.
- Fix pkg-config paths.
- Add basic .gitignore.
- Other minor/internal changes.

Bugs fixed:

1621 - new gssdp timeout not added to the specific maincontext
1570 - gupnp doesn't set the pkgconfig lib dir correctly in 64 bit env

Dependencies dropped:

- libglade

All contributors:

Zeeshan Ali (Khattak)
Ross Burton
Jens Georg
Olivier Crête
--------------------------------------

GUPnP 0.13 released!

Changes since 0.12.8:

- Print reason when fail to fetch description doc
- Support for dynamic/multiple networks through a new class, ContextManager.
This class creates/destroys new context as new network interfaces go up/down.
It also provides two convenient methods to take care of control point and
device reference managment for you. Currently we have two implementations of
context manager:
* unix: The static but guaranteed to work on Unix, implementation. This is the
default if none chosen at configure-time.
* network-manager: A NetworkManager based implementation.
- Idle handlers should use the assigned GMainContext.
- Gracefully handle 'no root element in description' scenerio.
- "host-ip" property moved from GUPnPContext to parent GSSDPClient.
- ControlPoint set itself inactive before getting disposed.
- New function to retrieve the capabilities of a DLNA device as announced in
the device description.
- New function to retrieve the content of arbitrary elements in the device
description.
- Fixed a crash that happens when service-proxy goes down before subscribtion to
it completes.
- Correct condition for SID being NULL.
- Don't create redundant proxies.
- Must not announce earlier versions of resources. This is strictly forbidden
according to the latest UPnP specs. Instead GSSDP now handles M-SEARCH
requests independent of version requested.
- Free app developer from hosting of description documents.
- New API to get SoupMessage associated with ServiceAction.
- Handle the SOAPAction header being missing.
- Fixed strrchr result checking.
- Provide and use a wrapper class for xmlDoc objects, GUPnPXMLDoc that is a
first-class gobject.
- New domains for XML errors.
- Many other minor fixes.

Bugs fixed:

1626 - Print reason when fail to fetch description doc
1769 - audit issues
1760 - missing/invalid SOAPAction header crashes gupnp
1705 - Provide a public API to get information about a GUPnPServiceAction's HTTP
request

Dependencies changed:

- gssdp >= 0.7

All contributors:

Zeeshan Ali (Khattak)
Ross Burton
Sven Neumann
Jens Georg
Steven Dorigotti
---------------------------------

GUPnP AV 0.5 released!

Changes in this release:

- New completely object-oriented, much simpler and consistent API:
* GUPnPDIDLLiteResource & GUPnPDIDLLiteObject are now first-class GObjects.
* Convert the helper methods to read props and their attributes from DIDL-Lite
xml node into new first-class objects with writable properties:
- GUPnPDIDLLiteObject
- GUPnPDIDLLiteItem
- GUPnPDIDLLiteContainer
* GUPnPDIDLLiteObject provides a convenient method to get the compatible
resource given a SinkProtocolInfo string.
* A new class for dealing with protocolInfo fields: GUPnPProtocolInfo.
* A new class for dealing with DIDL-Lite descriptors: GUPnPDIDLLiteDescriptor.
* GUPnPDIDLLiteWriter now provides a much simpler API that is consistent with
rest of the GUPnP AV API.
* GUPnPDIDLLiteWriter now handles filtering of DIDL-Lite XML.
* Correct possible values of GUPnPDLNAFlags.
* Replace GUPnPDIDLLiteParserObjectCallback by following signals:
- object-available
- container-available
- item-available
- New Error domain for protocol related errors.
- Workaround for broken printf() implementations.
- Bitrate is in bytes/second and not bits/second.
- Enable DLL on windows.

Dependencies changed:

- gupnp >= 0.13

Bug fixes in this release:

1729 - bitrate checks in gupnp-dlna.c look wrong.
1579 - Minor fixes to enable dynamic library on windows

All contributors to this release:

Zeeshan Ali (Khattak)
Sven Neumann
Jens Georg
Ross Burton
--------------------------

GUPnP Tools 0.8 released:

Changes since 0.7.1:

- Add lenient mode: Just pick-up the first resource available.
- Specify filter in Browse actions to reduce network usage.
- Don't browse containers with no children.
- Always re-browse containers on updates.
- Update childCount after browsing is done.
- Support for multiple networks.
- Leave selection of resource to gupnp-av.
- No need to search for all UPnP resources anymore.
- Fix infinite loop in icon cancelation code.
- No need to care about hosting of description document anymore.
- Adapt to new gupnp-av API.
- Add cmdline option to gupnp-upload to specify network interface.
- Many other minor/internal fixes.

Dependencies changed:

- gssdp >= 0.7
- gupnp >= 0.13
- gupnp-av >= 0.5

All contributors:

Zeeshan Ali (Khattak)
Ross Burton
-----------------------

GUPnP Vala 0.6 released!

Changes since 0.5.4:

- Adapt to new gssdp, gupnp and gupnp-av APIs.
- Fix pkg-config paths.

Bugs fixed:

1570 - gupnp doesn't set the pkgconfig lib dir correctly in 64 bit env

Dependencies changed:

- gssdp >= 0.7
- gupnp >= 0.13
- gupnp-av >= 0.5

All contributors:

Zeeshan Ali (Khattak)
Ross Burton
---------------------------------

WARNING: All these releases are API and ABI incompatible with previous releases.


Download source tarballs from: http://gupnp.org/sources/