1. A method for processing media data, comprising steps of: generating a graph that includes a plurality of graph components that input and output media data, wherein the graph conforms to a multi-level, branched hierarchical structure; wherein the graph comprises at least: 1) a parent component, at the top level of the hierarchical structure, that outputs media data; 2) a plurality of intermediate components, including a first plurality of intermediate components that output media data to the parent component; 3) a plurality of leaf components that input media data from media sources, wherein each leaf component of the plurality of leaf components outputs media data to a component at a higher-level in the hierarchical structure; wherein each graph component of said plurality of graph components comprises an ordered, working strip of plug-in components, each said working strip comprising an input plug-in component and an output plug-in component; and recursively invoking plug-in components in each working strip of plug-in components in each of said plurality of graph components, beginning with the parent component and proceeding down the hierarchical structure, thereby causing media streams to flow from the plurality of media sources, through working strips of plug-in components in said plurality of leaf components and said plurality of intermediate components, and to the parent component; wherein each plug-in component in each of the plurality of graph components exposes a plug-in interface that conforms to a common plug-in interface abstraction; wherein each working strip comprises at least one plug-in component that invokes a media component that does not support the plug-in interface abstraction, the media component providing a functionality for processing or manipulating media data; outputting media data at the parent component based on the media streams; wherein the steps of the method are performed by one or more computing devices.