Abstraction layers

The mm-renderer consists of several abstraction layers:

  • The messaging layer decodes client messages and delivers them to contexts. A context is an object capable of playing one piece of media at a time to a set of output devices. A context has a unique name and can have an input and a set of outputs associated with it. The input can contain both audio and video signals (for example, a movie), and the set of outputs can consist of both audio and video devices (for example, speakers and a screen).
  • The context management layer:
    • keeps track of the outputs attached to each context
    • maps each output to the engine plugins that can support that output type
    • selects the appropriate engine plugins and attaches them to the context
    • preserves the context state between detaching and reattaching inputs
    • delivers client requests (for example, 'play') to engine plugins
  • The plugin management layer keeps track of all available plugins.