The multimedia renderer uses engine plugins to provide playback for each type of input. The implementation of the engine plugins is invisible to the multimedia renderer. The context management layer selects the appropriate engine plugin based on the types of inputs and outputs attached to the context, and on the rating each engine gives itself for the specified inputs and outputs.