Hardware Reference
In-Depth Information
that returns a list of which media streams (audio, video, picture) are playing. The URL breaks down, as normal, to
[username]:www@[ipaddress]:[port]. Further commands can be found at http://wiki.xbmc.org and is highly
recommended, as the structure has changed between v11 and v12 of XBMC.
Developing New UPnP Applications
With UPnP being such a far-reaching standard, it is tempting to convert your existing applications to utilize its
functionality and to expand its reach into the many devices currently available. The scope of programming such
applications is beyond the scope of this topic, so instead I'll direct you to some resources that make the task easier.
GUPnP is a framework for building UPnP applications. It is pure in its intentions by providing only the framework
elements, excluding any DLNA specifics, and requiring you to implement any of the high-level media server-like
functionality ( http://gitorious.org/gupnp/pages/Home ).
dLeyna is a comparatively new project intended to provide umbrella services to UPnP applications, and is
detailed at https://01.org/dleyna .
If you're interested in writing your own UPnP devices from scratch,
without using middleware or helper libraries, then head over to http://upnp.org and access the basic specs from
http://upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.1.pdf .
There is also good information to be found at www.upnp-hacks.org/upnp.html .
UPnP—The Closed Versions
Naturally, with any good technology, one (or more) companies will build their own proprietary versions on top.
The two well-known ones are DLNA (Digital Living Network Alliance) and AirPlay.
DLNA
As a Sony initiative from 2003, this has been incorporated into a nonprofit trade organization and now features over
200 different member companies, each adding their own take. Consequently, there are over 9,000 different devices
compliant with DLNA, making it one of the most pervasive media distribution technologies available, especially when
counting the number of hardware devices that appeal to both hardened tech-geek and SWMBO.
Although there is a very close match between DLNA and UPnP for the protocols, their specification separates
when it comes to rendering content, as DLNA introduces limits on what media can be distributed. These limits come
in the form of file format, encoding, and screen resolutions. Whereas this ensures that any DLNA will “just work”
and truly live up to the “zero configuration” dream of UpnP, however, because DLNA was begun many years ago,
and movie codecs are changed and upgraded (comparatively) often, it means that many of the widely used formats
today (such as MKV) are not supported by DLNA. To combat this, you can solve the problem on either the server or
the renderer. From the server side, you can transcode the movie into an acceptable DLNA format before streaming it.
Although this is expensive, it is possible to do in real time on most reasonably powerful desktop systems. (However,
if multiple streams and/or a Raspberry Pi are involved, you might as well copy the file to a USB memory stick and walk
with it to your device!) From the renderer side, many off-the-shelf media streamers will support formats not included
in the specification, to eradicate the problems of compatibility and transcoding.
Depending on your point of view, DLNA is either “UPnP done wrong” or “UPnP done right.” I shall leave that
argument up to you!
DLNA follows the ideas of UPnP by separating the different media functions into types. In the case of DLNA, they are:
u
Digital Media Server. A DMS acts like a NAS and stores content and makes it available to the
other devices on the network.
u
Digital Media Player. A DMP pulls content from the DMS for the purpose of playback and
display.
Search WWH ::




Custom Search