Each context has to have one or more outputs attached before it can play anything, so that it can determine where to send the content.

The output can be:

Outputs need to be attached before the input. That's because some engine plugins may determine whether to play an input based on what kind of outputs are attached, and may not support detaching and reattaching outputs after the input is connected.