Methods and systems for managing multiple inputs that are capable of competing
or contending for a particular or primary output are described. In one embodiment,
the multiple inputs are managed through the use of a software-implemented matrix
switch object, and an associated data structure that is used to program the switch
object and resolve contention issues between the inputs. The matrix switch object
can process the multiple inputs to provide a primary output. One implementation
of the switch object uses virtual input and output pins to receive and provide
data streams. One specific embodiment is used in connection with multi-media editing
software that enables users build or define their own editing multi-media editing
projects that incorporate multiple different user-selected clips, in the form of
digital data streams, into an integrated project. Each clip can be defined in terms
of one or more digital data streams, e.g. video and audio streams. One implementation
method defines a first data structure that represents an editing project and processes
the data structure to provide a second data structure that contains data that can
be used to program the matrix switch object so that multiple switch inputs are
routed to multiple switch outputs and contentions between the inputs for a primary
output are resolved.