Patent ID: 8155205

Claim:
A method for a decoder filter to accommodate a dynamic change in a software video player comprising a filter graph including a source filter, the decoder filter, and a renderer filter, the decoder filter comprising a single output pin coupled to an input pin of the renderer filter, the decoder filter comprising a plurality of internal decoder cores, the method comprising: (1) learning from the input pin of the decoder filter of the dynamic change; (2) recording states of the decoder filter and the renderer filter; (3) stopping the decoder filter and the renderer filter without changing a state of the source filter; (4) setting parameters for the output pin of the decoder filter, the parameters including a decoding mode selected from the group consisting of one of a plurality of software decoding modes and a hardware decoding mode; (5) determining if the output pin of the decoder filter remains connected to the input pin of the renderer filter; (6) when the output pin of the decoder filter remains connected to the input pin of the renderer filter, calling a ReconnectEX function of the output pin of the decoder filter to change a new media type at the output pin of the decoder filter; (7) when the output pin of the decoder filter is not connected to the input pin of the renderer filter, calling a Connect function of the output pin of the decoder filter to connect the output pin of the decoder filter to the input pin of the renderer filter and to specify the new media type at the output pin of the decoder filter; (8) determining if the dynamic change is successful, wherein the dynamic change is successful when the ReconnectEX or the Connect function is successful; (9) when the dynamic change is successful: changing to an appropriate internal decoder core from the plurality of internal decoder cores in the decoder filter according to the new media type; and restoring the decoder filter and the renderer filter back to their recorded states; (10) when the dynamic change is unsuccessful, determining if there is an untried software decoding mode; (11) when there is an untried software decoding mode, setting the parameters for the output pin of the decoder filter to those of the untried software decoding mode and repeating steps (5) to (11) for the untried software decoding mode.