Hi All,
I'd like to announce the first stable release of dLeyna. The release
was actually made 3 weeks ago but it's taken me a really long time to
get around to sending the announcement. Apologies for this.
The release is stable in that we have created a separate branch for this
release in the various repos and we will only make critical bug fixes on
these branches. No API changes will be allowed in the 0.1 branches.
The releases can be downloaded from
01.org
https://01.org/dleyna/downloads/2013/dleyna-0.1.0
The following components form part of this release:
dleyna-connector-dbus-0.1.0
dleyna-core-0.1.0
dleyna-renderer-0.1.1
dleyna-server-0.1.1
dleyna-control-0.1.0
There have been quite a few changes to the dLeyna APIs since we moved to
the new repositories in March. A summary of what is new in the various
components can be found below:
dLeyna-server
-----------------
A brief overview of the changes that have been made to the various
interfaces is given below. Please refer to the API.txt file for more
detailed information about the new signals, methods and properties.
Several new methods have been introduced.
- com.intel.dLeynaServer.Manager.Rescan() -> void
Forces a rescan for DMSs on the local area network. This is useful to
discard DMSs which have shut down without sending BYE messages or to
discover new DMSs which for some reason were not detected when either
they or the device on which dLeyna-server runs was started or joined the
network.
- com.intel.UPnP.MediaDevice.GetIcon(s RequestedMimeType, s Resolution)
-> (ay Bytes, s MimeType)
Returns an in memory copy of the DMS's icon. This is a helper function
for client applications as it prevents them from having to issue a HTTP
request to retrieve the icon. The URL is still available so they are
free to continue doing so if they wish.
- org.gnome.MediaObject2.GetMetaData() -> s
Returns the object meta data information in DIDL-Lite XML format. This
method is needed to create certifiable DMCs. When a DMC instructs a DMR
to play a file hosted on a DMS it should pass the DMR the meta data of
the file, in addition to its URL. The DMR can not retrieve this
information by itself and it needs this information to retrieve the DLNA
flags for the file, e.g., to discover if the DMS supports server side
trick modes when streaming this file.
- org.gnome.UPnP.MediaContainer2.GetCompatibleResources(s protocol_info,
as filter) -> a{sv}
dLeyna-server now supports the retrieval of resources for containers.
Sometimes a container will have one or more resources, typically when
a container provides playlist files, e.g., M3U or DIDL-S for its
contents. These playlist files are useful for DMCs, which can retrieve
the playlist, hand it to a DMR and then exit. The DMR can continue to
play the playlist even though the DMC has exited as it has the playlist
file which contains the URLs. A container may have multiple resources,
for example if it supports multiple playlist formats. This method would
be called a by DMC using the protocol info of a renderer. The method
will then return the resource compatible with the renderer if such a
resource exists.
- org.gnome.UPnP.MediaContainer2.CreateReference(o ObjectPath) -> o
ObjectPath
The CreateReference method creates a reference in the container to the
object identified by the ObjectPath parameter. This method returns the
d-Bus path of the newly created reference. This is useful for creating
playlists.
Two methods have been removed
- com.intel.UPnP.MediaDevice.CreatePlayListInAnyContainer
- org.gnome.UPnP.MediaContainer2.CreatePlayList
Playlists should be created with the CreateContainer methods and
populated with the CreateReference method.
The following changes have been made to properties:
- com.intel.UPnP.MediaDevice.SearchCaps and
com.intel.UPnP.MediaDevice.SortCaps now support the wildcard '*'. This
means that the DMS supports searching and sorting on all fields.
Previously, this information was not propagated to clients.
- The following new properties have been added to org.gnome.UPnP.MediaItem2
- DLNAConversion a{sb} Indicates whether the resource exposed
directly in the item object has been transcoded.
- DLNAFlags a{sb} Provides loads of information about resource
exposed directly in the item object
- DLNAOperation a{sb} Indicates whether HTTP Range seek or TimeSeek
or both are supported.
- A number of new groups of properties have been added to the
org.gnome.UPnP.MediaContainer2 interface.
- In the first group there is single property called Resources:
- Resources aa{sv} Returns the set of resources associated with a
container. As explained above these resources are typically playlists.
Not all containers have resources.
- The second group of properties contain the same value as one of the
resources.
The following new properties have been added.
- DLNAProfile s
- MIMEType s
- Size x
- UpdateCount u
- URLs as
This is either the first resource or the first resource that is
compatible with the protocol info passed to SetProtocolInfo. Typically,
these properties will correspond to a playlist.
- A third group of properties have been added. These are:
- DLNAConversion a{sb}
- DLNAFlags a{sb}
- DLNAOperation a{sb}
Their values are mostly meaningless for containers, apart from
perhaps the DLNA conversion filag property which indicates whether or
not a resource, e.g., a playlist has been transcoded.
dLeyna-renderer:
----------------
Four new methods have been introduced.
- com.intel.dLeynaRenderer.Manager.Rescan() -> void
Forces a rescan for DMRs on the local area network. This is useful to
discard DMRs which have shut down without sending BYE messages or to
discover new DMRs which for some reason were not detected when either
they or the device on which dLeyna-server runs was started or joined the
network.
- com.intel.dLeynaRenderer.RendererDevice.GetIcon(s RequestedMimeType, s
Resolution) -> (ay Bytes, s MimeType)
Returns an in memory copy of the DMR's icon. This is a helper function
for client applications as it prevents them from having to issue a HTTP
request to retrieve the icon. The URL is still available so they are
free to continue doing so if they wish.
- org.mpris.MediaPlayer2.Player.GotoTrack(u TrackNumber) -> void
Performs a seek operation to the specified track number.
- org.mpris.MediaPlayer2.Player.OpenUriEx(s Uri, s Metadata) -> void
Identical to the org.mpris.MediaPlayer2.Player OpenUri method with one
exception. OpenUriEx takes an additional parameter, Metadata, to specify
the DIDL-Lite XML description of the item to be opened. This is needed
for DMCs.
NOTE: The GetServers method has been renamed to GetRenderers
NOTE: The signals FoundServer and LostServer have been renamed to
FoundRenderer and LostRenderer
The following new properties have been added to the
org.mpris.MediaPlayer2.Player interface:
- CurrentTrack u
The the sequence number of the currently selected track.
- NumberOfTracks u
The number of tracks in the currently selected media.
- Mute b
The mute setting of the master audio channel. This property is read/write
dLeyna-core:
-------------
A number of bug fixes where made to prevent the dLeyna services from
crashing under certain circumstances during shutdown.
dLeyna-connector-dbus:
---------------------
No significant changes
dLeyna-control:
-----------------
A number of improvements have been made to dLeyna-control.
- A lot of work has been done to make dLeyna-control more asynchronous.
Previously, dleyna-control called dLeyna functions synchronously which
meant the UI was blocked until these functions returned. Everything is
now asynchronous.
- The model that implements the search and browse views has been
re-written. It is now much simpler and copes with servers that do not
provide information about the total amount of items that match a search
query.
- dLeyna-control now uses GTK+ 3.x and GStreamer 1.x. Previously, it
was using GStreamer 0.10 and pygtk. Unfortunately, this change seems to
be causing compatibility problems with older distros. We are investigation.
- dLeyna-control now respects the SortCaps property. Columns in the
views are now clickable only if the server supports sorting by these
properties.
- The player window has been redesigned and seeking can now be done
while a track is playing.
Best Regards,
Mark