Methods and systems for managing multiple inputs and methods and systems for processing media content
First Claim
1. A computing system comprising:
- one or more processors;
one or more computer-readable media; and
computer-readable instructions on the one or more computer-readable media which, when executed by the one or more processors, cause the one or more processors to implement a method comprising;
defining a first data structure that represents a user-defined multi-media editing project;
providing a software-implemented matrix switch that is programmable to route multiple switch inputs to multiple switch outputs, at least two of the inputs being capable of competing for a single output during a common time period, the single output being configured to provide a data stream defined by the multi-media editing project;
processing the first data structure to provide a second data structure that contains data that can be used to program the matrix switch so that multiple switch inputs are routed to multiple switch outputs; and
operating on the second data structure so that no two inputs are routed to said single output during a common time period, wherein said providing of the software-implemented matrix switch comprises providing a switch having virtual input pins and virtual output pins, the virtual input pins being configured to receive individual data streams, the virtual output pins being configured to provide individual data streams.
1 Assignment
0 Petitions
Accused Products
Abstract
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.
113 Citations
15 Claims
-
1. A computing system comprising:
-
one or more processors; one or more computer-readable media; and computer-readable instructions on the one or more computer-readable media which, when executed by the one or more processors, cause the one or more processors to implement a method comprising; defining a first data structure that represents a user-defined multi-media editing project; providing a software-implemented matrix switch that is programmable to route multiple switch inputs to multiple switch outputs, at least two of the inputs being capable of competing for a single output during a common time period, the single output being configured to provide a data stream defined by the multi-media editing project; processing the first data structure to provide a second data structure that contains data that can be used to program the matrix switch so that multiple switch inputs are routed to multiple switch outputs; and operating on the second data structure so that no two inputs are routed to said single output during a common time period, wherein said providing of the software-implemented matrix switch comprises providing a switch having virtual input pins and virtual output pins, the virtual input pins being configured to receive individual data streams, the virtual output pins being configured to provide individual data streams.
-
-
2. A computing system comprising:
-
one or more processors; one or more computer-readable media; and computer-readable instructions on the one or more computer-readable media which, when executed by the one or more processors, cause the one or more processors to implement a method comprising; defining a first data structure that represents a user-defined multi-media editing project; providing a software-implemented matrix switch that is programmable to route multiple switch inputs to multiple switch outputs, at least two of the inputs being capable of competing for a single output during a common time period, the single output being configured to provide a data stream defined by the multi-media editing project; processing the first data structure to provide a second data structure that contains data that can be used to program the matrix switch so that multiple switch inputs are routed to multiple switch outputs; and operating on the second data structure so that no two inputs are routed to said single output during a common time period, wherein said processing of the first data structure comprises providing at least one object configured to receive at least one output stream from the matrix switch, process the output stream to provide an input stream, and provide the input stream to an input of the switch, and wherein said object comprises a mix object that is configured to mix multiple audio or video source streams.
-
-
3. A computing system comprising:
-
one or more processors; one or more computer-readable media; and computer-readable instructions on the one or more computer-readable media which, when executed by the one or more processors, cause the one or more processors to implement a method comprising; defining a first data structure that represents a user-defined multi-media editing project; providing a software-implemented matrix switch that is programmable to route multiple switch inputs to multiple switch outputs, at least two of the inputs being capable of competing for a single output during a common time period, the single output being configured to provide a data stream defined by the multi-media editing project; processing the first data structure to provide a second data structure that contains data that can be used to program the matrix switch so that multiple switch inputs are routed to multiple switch outputs; operating on the second data structure so that no two inputs are routed to said single output during a common time period, wherein said processing of the first data structure comprises configuring the matrix switch so that it receives multiple source streams at multiple respective inputs at multiple times, wherein said configuring comprises building one or more filter graphs that are individually configured to process digital data to provide multiple respective source streams, and associating one or more filter graphs with individual inputs of the matrix switch; and building multiple sub-graphs inside one or more of the filter graphs.
-
-
4. A computing system comprising:
-
one or more processors; one or more computer-readable media; and computer-readable instructions on the one or more computer-readable media which, when executed by the one or more processors, cause the one or more processors to; represent a multi-media editing project as a first data structure; process the first data structure to provide a second data structure containing data that defines an association between inputs, outputs and a time line defined by the editing project; provide a matrix switch having multiple inputs and multiple outputs that correspond to the respective inputs and outputs of the second data structure; and use the second data structure to program routing of the matrix switch'"'"'s inputs to the matrix switch'"'"'s outputs for the given time line, wherein the second data structure comprises a grid structure, and wherein the instructions that cause the processors to process the first data structure to provide the second data structure cause the processors to; define a grid row for each of a number of data stream sources; enter data values in each grid row, the data values being associated with a time period for which the data stream source desires to be routed to a primary output of the matrix switch; and change at least one data value in at least a portion of a grid row if a determination is made that another grid row has an entry that indicates that its associated data stream source desires to be routed to the primary output of the matrix switch at the same time. - View Dependent Claims (5, 6)
-
-
7. One or more computer-readable media having computer-readable instructions thereon which, when executed by a computer, cause the computer to perform acts comprising:
-
defining a first data structure that represents a user-defined multi-media editing project; providing a software-implemented matrix switch that is programmable to route multiple switch inputs to multiple switch outputs, at least two of the inputs being capable of competing for a single output during a common time period, the single output being configured to provide a data stream defined by the multi-media editing project; processing the first data structure to provide a second data structure that contains data that can be used to program the matrix switch so that multiple switch inputs are routed to multiple switch outputs; and operating on the second data structure so that no two inputs are routed to said single output during a common time period, wherein said providing of the software-implemented matrix switch comprises providing a switch having virtual input pins and virtual output pins, the virtual input pins being configured to receive individual data streams, the virtual output pins being configured to provide individual data streams.
-
-
8. One or more computer-readable media having computer-readable instructions thereon which, when executed by a computer, cause the computer to perform acts comprising:
-
defining a first data structure that represents a user-defined multi-media editing project; providing a software-implemented matrix switch that is programmable to route multiple switch inputs to multiple switch outputs, at least two of the inputs being capable of competing for a single output during a common time period, the single output being configured to provide a data stream defined by the multi-media editing project; processing the first data structure to provide a second data structure that contains data that can be used to program the matrix switch so that multiple switch inputs are routed to multiple switch outputs; and operating on the second data structure so that no two inputs are routed to said single output during a common time period, wherein said processing of the first data structure comprises providing at least one object configured to receive at least one output stream from the matrix switch, process the output stream to provide an input stream, and provide the input stream to an input of the switch, and wherein said object comprises a mix object that is configured to mix multiple audio or video source streams.
-
-
9. One or more computer-readable media having computer-readable instructions thereon which, when executed by a computer, cause the computer to perform acts comprising:
-
defining a first data structure that represents a user-defined multi-media editing project; providing a software-implemented matrix switch that is programmable to route multiple switch inputs to multiple switch outputs, at least two of the inputs being capable of competing for a single output during a common time period, the single output being configured to provide a data stream defined by the multi-media editing project; processing the first data structure to provide a second data structure that contains data that can be used to program the matrix switch so that multiple switch inputs are routed to multiple switch outputs; operating on the second data structure so that no two inputs are routed to said single output during a common time period, wherein said processing of the first data structure comprises configuring the matrix switch so that it receives multiple source streams at multiple respective inputs at multiple times, wherein said configuring comprises building one or more filter graphs that are individually configured to process digital data to provide multiple respective source streams, and associating one or more filter graphs with individual inputs of the matrix switch; and building multiple sub-graphs inside one or more of the filter graphs.
-
-
10. A system comprising:
-
means for defining a first data structure that represents a user-defined multi-media editing project; means for providing a software-implemented matrix switch that is programmable to route multiple switch inputs to multiple switch outputs, at least two of the inputs being capable of competing for a single output during a common time period, the single output being configured to provide a data stream defined by the multi-media editing project; means for processing the first data structure to provide a second data structure that contains data that can be used to program the matrix switch so that multiple switch inputs are routed to multiple switch outputs; and means for operating on the second data structure so that no two inputs are routed to said single output during a common time period, wherein said providing of the software-implemented matrix switch comprises providing a switch having virtual input pins and virtual output pins, the virtual input pins being configured to receive individual data streams, the virtual output pins being configured to provide individual data streams.
-
-
11. A system comprising:
-
means for defining a first data structure that represents a user-defined multi-media editing project; means for providing a software-implemented matrix switch that is programmable to route multiple switch inputs to multiple switch outputs, at least two of the inputs being capable of competing for a single output during a common time period, the single output being configured to provide a data stream defined by the multi-media editing project; means for processing the first data structure to provide a second data structure that contains data that can be used to program the matrix switch so that multiple switch inputs are routed to multiple switch outputs; and means for operating on the second data structure so that no two inputs are routed to said single output during a common time period, wherein said means for processing of the first data structure comprises means for providing at least one object configured to receive at least one output stream from the matrix switch, process the output stream to provide an input stream, and provide the input stream to an input of the switch, and wherein said object comprises a mix object that is configured to mix multiple audio or video source streams.
-
-
12. A system comprising:
-
means for defining a first data structure that represents a user-defined multi-media editing project; means for providing a software-implemented matrix switch that is programmable to route multiple switch inputs to multiple switch outputs, at least two of the inputs being capable of competing for a single output during a common time period, the single output being configured to provide a data stream defined by the multi-media editing project; means for processing the first data structure to provide a second data structure that contains data that can be used to program the matrix switch so that multiple switch inputs are routed to multiple switch outputs; means for operating on the second data structure so that no two inputs are routed to said single output during a common time period, wherein said means for processing of the first data structure comprises means for configuring the matrix switch so that it receives multiple source streams at multiple respective inputs at multiple times, wherein said means for configuring comprises building one or more filter graphs that are individually configured to process digital data to provide multiple respective source streams, and means for associating one or more filter graphs with individual inputs of the matrix switch; and means for building multiple sub-graphs inside one or more of the filter graphs.
-
-
13. A system comprising:
-
means for representing a multi-media editing project as a first data structure; means for processing the first data structure to provide a second data structure containing data that defines an association between inputs, outputs and a time line defined by the editing project; means for providing a matrix switch having multiple inputs and multiple outputs that correspond to the respective inputs and outputs of the second data structure; and means for using the second data structure to program routing of the matrix switch'"'"'s inputs to the matrix switch'"'"'s outputs for the given time line, wherein the second data structure comprises a grid structure, and wherein the means for processing the first data structure to provide the second data structure comprises; means for defining a grid row for each of a number of data stream sources; means for entering data values in each grid row, the data values being associated with a time period for which the data stream source desires to be routed to a primary output of the matrix switch; and means for changing at least one data value in at least a portion of a grid row if a determination is made that another grid row has an entry that indicates that its associated data stream source desires to be routed to the primary output of the matrix switch at the same time. - View Dependent Claims (14, 15)
-
Specification