dLeyna-renderer is a high level d-Bus API that allows client applications to discover and manipulate UPNP and DLNA media renderers. dLeyna-renderer is a service implemented on top of the GUPnP libraries. It is designed to facilitate the creation of Digital Media Controllers (DMCs), in conjunction with dLeyna-server, and to implement the DLNA two-box push use case. The use of dLeyna-renderer boasts a number of advantages:
- It provides a language and toolkit neutral APIs.
- It exposes high level APIs that are specifically designed for manipulating Digital Media Renderers (DMRs).
- It reduces network traffic by communicating with Digital Media Renderers on behalf of its clients. This means that the device on which dLeyna-renderer runs, only downloads and parses a DMR's device and service description files once and only processes DMR events once, regardless of the number of media applications, making use of its services.
dLeyna-renderer is a service rather than a library and the APIs it exposes are invoked via IPC rather than function calls. dLeyna-renderer itself is not bound to a particular IPC mechanism and its flexible architecture permits the use of different IPC mechanisms via dynamically loaded modules called connectors. Currently, only one such module exists, dLeyna-connector-dbus. When used in connection with dLeyna-connector-dbus, dLeyna-renderer acts as a d-Bus server. The rest of this document will describe dLeyna-renderer's d-Bus APIs. From here on, this document uses the term dLeyna-renderer to refer to the dLeyna-renderer/dLeyna-connector-dus combination.
dLeyna-renderer is designed to be launched by d-Bus activation, when needed. By default, it automatically shuts down when the last of its clients quits or releases its connection. It currently connects to the d-Bus session bus, although this may change in the future. It exposes two different types of objects:
- A manager object: There is only ever a single instance of this object. It can be used to retrieve a list of the DMRs on the local area network. It is also used to perform certain renderer independent tasks.
- Renderer objects: One separate object is exposed for each DMR available on the LAN. These objects expose interfaces that allow clients to retrieve information about the renderers, to manipulate them, and to push content to them.