Besides the PC, an increasing number of multimedia devices - such as set-top boxes, smart phones, and tablets - already provide networking capabilities. However, today's multimedia infrastructures adopt a centralized approach, where all multimedia processing takes place within a single system. The network is, at best, used for streaming predefined content from a server to clients. Conceptually, such approaches consist of two isolated applications, a server and a client. The realization of complex scenarios is therefore complicated and error-prone - especially since the client has typically no or only limited control of the server.
The Network-Integrated Multimedia Middleware (NMM) overcomes these limitations by enabling access to all resources within the network: distributed multimedia devices and software components can be transparently controlled and integrated into an application. In contrast to all other multimedia architectures available, NMM is a middleware, i.e. a distributed software layer running in between distributed systems and applications. As an example, this allows for the quick and easy development of an application that receives TV from a remote device -- including the transparent control of the distributed TV receiver. Even a smart phone with only limited computational power can run such an application: the media conversions needed to adapt the audio and video content to the resources provided by the smart phone can be distributed within the network. While the distribution is transparent for developers, no overhead is added to all locally operating parts of the application. To this end, NMM also provides a standard multimedia framework for all kinds of desktop applications.
Traditional client/server streaming consists of two isolated applications that do not provide fine-grained control or extensibility.
NMM as multimedia middleware provides a distributed software layer that eases application developlemt by providing transparent access to all resources within the network, such as devices or software components.
Open micro-core middleware architecture that allows for arbitraty networking and device technologies to be integrated.
Uniform messaging system for both out-of-band request-reply interaction as well as one-way instream interaction between connected components of a flow graph; both providing message types for multimedia data and typed control information.
Extensible serialization and networking stack providing standard protocol support and standard data formats, but also highly optimized propietary components.
Intuitive object-oriented C++ API plus object-oriented control interface defined in Interface Definition Language (IDL) for specifying both out-of-band and instream interaction.
High level of abstraction using transparently distributed flow graphs for specifying an intended (distributed) processing of multimedia streams.
Distributed synchronization architecture offering high-quality synchronous capturing and rendering of media streams across all networked systems.
Session sharing service that allows to connect running applications in order to share a single multimedia device or reuse common parts of a flow graph, e.g. for transcoding. Shared control and distributed synchronization is established for all participating hosts.
Seamless handover service for continous and synchronized migration of (parts of) running flow graphs to distributed devices, e.g. for handing over media playback from a mobile system to a stationary system.
Distributed peer-to-peer registry service that administrates available devices and software components.
Cross-platform core library running natively on a large number of operating systems.
Flexible licensing that allows NMM to be used in commercial products as well as in Open Source and research projects.
NMM provides an open micro-core architecture that allows for integrating available building blocks.
Distributed flow graphs span across several distributed systems and allow for the easy creation of distributed multimedia applications, e.g. for MP3 playback.
Session sharing allows for dynamically connecting new applications to running applications and thereby enables multi-room multi-device applications.
Seamless handover can be used for the synchronized change of rendering devices, e.g. from a mobile system to a stationary system.