System and method for processing multimedia data streams using filter graphs
First Claim
1. A computer-implemented method for rendering a data stream of a source having a media type, comprising the steps of:
- Reading a table of filter characteristics;
In response to reading the filter characteristics listed in the table, identifying a plurality of filters available for operation in a filter graph;
Creating an instance of a class of filters from the identified filters appropriate for rendering the data stream, each filter operative to conduct a processing operation and having at least one input pin, at least one output pin, or a combination of input and output pins; and
Connecting the pins of the filters to assemble the filter graph comprising connected filters, wherein the first filter in the filter graph accepts the data stream and the final filter in the filter graph renders the data stream.
2 Assignments
0 Petitions
Accused Products
Abstract
Multimedia data processing accomplished by automated assembly of a filter graph comprising filters operative to conduct processing functions on data streams. The filter graph can be assembled by selecting appropriate filters that can handle the data processing requirements for the desired data stream(s). For example, a graph can be constructed by (1) selecting a set of filters, including an appropriate file reader compatible with the media type of the data stream(s), a demultiplexer for separating multiplexed data, a decoder for decoding encoded data, and a renderer to display or sound the data, and (2) combining these filters within the architecture of a filter graph to efficiently process the multimedia data.
293 Citations
31 Claims
-
1. A computer-implemented method for rendering a data stream of a source having a media type, comprising the steps of:
-
Reading a table of filter characteristics; In response to reading the filter characteristics listed in the table, identifying a plurality of filters available for operation in a filter graph; Creating an instance of a class of filters from the identified filters appropriate for rendering the data stream, each filter operative to conduct a processing operation and having at least one input pin, at least one output pin, or a combination of input and output pins; and Connecting the pins of the filters to assemble the filter graph comprising connected filters, wherein the first filter in the filter graph accepts the data stream and the final filter in the filter graph renders the data stream. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13)
-
-
2. A method for automatically connecting filters to perform multimedia processing operations on a source file containing at least one data stream, comprising the steps of:
-
1) Selecting a source filter that can accept as an input a selected one of the data streams of the source file, and loading the source filter; 2) In the event that the source filter has an available output, selecting one of the outputs of the source filter; 3) For the selected output of the source filter, selecting and connecting another filter that can accept the selected output from the source filter as an input to the newly selected filter; 4) If the connection of the source filter to the selected filter is successful, then proceeding to step 5;
otherwise disconnecting the selected filter and repeating step 3 for another filter;5) In the event that the selected filter has an output, then selecting the output of the selected filter; 6) For the selected output of the selected filter, selecting and connecting a new filter that can accept the selected output from the selected filter as an input to the new filter; 7) If the connection of the selected filter to the new filter is successful, then proceeding to step 8;
otherwise disconnecting the new filter and repeating step 6 for another filter;8) Repeating steps 5-7 until the selected data stream is rendered by a chain formed by the connected filters; and 9) Repeating steps 2-8 for each remaining output of the source filter to render each remaining data stream of the source file. - View Dependent Claims (14, 15)
-
-
3. A system for automatically rendering each data stream maintained in a source file by constructing a graph of filters, comprising:
-
a filter graph manager for (1) determining the filters available that can accept a data type corresponding to each data stream and (2) controlling interconnection of selected ones of the available filters to assemble the filter graph, comprising interconnected filters, which accepts and renders each data stream; and communication interfaces for supporting communication between the filter graph manager and a program module that can make direct calls to the filter graph manager to control a selected data stream or to retrieve filter-related events. - View Dependent Claims (4, 16, 17, 18, 19, 20, 21, 22)
-
-
5. A method for automatically connecting filters to perform processing operations on a source file containing at least one multimedia data stream characterized by a media type, comprising the steps of:
-
determining available filters that match a media type for a selected data stream of the source file, each available filter having a merit figure defining its effectiveness for working with the media type; selecting available filters having a highest merit figure defining the suitability of the corresponding filter for a particular processing task; and linking filters having the highest merit figure until the selected data stream is rendered by a filter graph constructed from the linked filters. - View Dependent Claims (23, 24, 25, 26)
-
-
6. A method for automatically connecting filters to perform filtering operations on a source file containing at least one data stream characterized by a media type, comprising the steps of:
-
1) Examining the source file to determine (1) a source of the source file and (2) the media type of a selected one of the media streams; 2) Searching a table containing a listing of characteristics of available ones of the filters, including a merit figure assigned to each filter to reflect a priority level for using the corresponding filter, and selecting a source filter based on the media type of the selected data stream and availability of the source file, wherein the source filter can accept as an input the selected data stream; 3) Loading the selected source filter; 4) Determining whether the selected source filter has an available output and, if so, selecting one of the available outputs of the source filter; 5) For the selected output of the source filter, examining the table and select, load, and connecting a new available filter that can accept the selected output from the source filter, wherein the selected new filter has the highest merit figure of the available filters compatible with the media type of the selected data stream and listed in the table; 6) If the connection of the source filter to the selected new filter is successful, then proceeding to step 7;
other wise disconnecting the selected new filter and returning to step 5 for another filter having the next highest merit figure and compatible with the media type of the selected data stream,7) In the event that the selected new filter has an output, then selecting the output of the selected new filter;
otherwise, disconnecting the selected new filter and returning to step 5 for another filter having the next highest merit figure of the available filters compatible with the media type of the selected data stream and listed in the table unless the selected new filter renders the selected data stream, then proceeding to step 11;8) For the selected output of the selected new filter, selecting, loading and connecting another available filter that can accept the selected output from the selected filter, wherein the present selected filter has the highest merit figure of the available filters compatible with the media type of the selected data stream and listed in the table; 9) If the connection of the prior selected new filter to the present selected filter is successful, then proceeding to step 10;
otherwise disconnecting the present selected filter and returning to step 8 for another available filter;10) Repeating steps 7-9 until the selected data stream is rendered; 11) Repeating steps 2-10 for each remaining output of the source filter to render the remaining data streams of the source file. - View Dependent Claims (27, 28, 29, 30, 31)
-
Specification