Dynamic reconfiguration of multimedia stream processing modules
First Claim
1. A method to dynamically remove at least one selected module in a streaming data path of a graph having a plurality of modules, each module being connected to at least one other module to form the streaming data path, the streaming data path having at least one input module located at an input edge and at least one output module located at an output edge, the method comprising the steps of:
- sending a notification packet through the streaming data path to each module within the streaming data path, the notification packet indicating that data flow has stopped;
detecting when the notification packet is received at each output module;
commanding each selected module to be removed to change to a stop state after detecting when the notification packet is received at each output module;
removing each selected module; and
restarting data flow in the streaming data path.
2 Assignments
0 Petitions
Accused Products
Abstract
A method to dynamically reconfigure multimedia streaming processing modules using interfaces that allow applications and modules to seamlessly change the configuration of streaming modules. Reconfigurations are initiated by a processing module in a stream or by an application by sending a notification packet through the processing modules in the portion of the stream being changed that informs that modules that a change is being made and the modules to complete processing of its data. Modules affected by the change are stopped once the notification packet is received by all processing modules in the stream being changed and modules are then added, removed, or replaced and the portion of the stream being changed resumes processing the data stream. The modules at the beginning of the portion being changed can resume operation as soon as they are reconnected to other modules.
33 Citations
32 Claims
-
1. A method to dynamically remove at least one selected module in a streaming data path of a graph having a plurality of modules, each module being connected to at least one other module to form the streaming data path, the streaming data path having at least one input module located at an input edge and at least one output module located at an output edge, the method comprising the steps of:
-
sending a notification packet through the streaming data path to each module within the streaming data path, the notification packet indicating that data flow has stopped; detecting when the notification packet is received at each output module; commanding each selected module to be removed to change to a stop state after detecting when the notification packet is received at each output module; removing each selected module; and restarting data flow in the streaming data path. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 27, 28, 29)
-
-
15. A method to dynamically add at least one first module in a streaming data path of a graph having a plurality of modules, each module being connected to at least one other module to form the streaming data path, the streaming data path having at least one input module located at an input edge and at least one output module located at an output edge, the method comprising:
-
sending a notification packet through the streaming data path to each module within the streaming data path, the notification packet indicating that data flow has stopped; detecting when the notification packet is received at each output module; adding each first module after detecting when the notification packet is received at each output module; commanding each first module to change to a run state; and restarting data flow in the streaming data path. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 30, 31, 32)
-
-
23. The method of claim 21 further comprising the steps of:
-
detecting when each input edge module receives a notification packet; connecting at least one output pin of each input edge module to at least one input pin of one of the second module; and wherein each second module is commanded to change to a run state when its input pin is connected to one of the second module and the input edge module.
-
-
24. The method of claim 21 further comprising the step of acquiring a graph lock.
-
25. A computer-readable medium having computer executable instructions for performing the steps recited in claim 15.
-
26. A computer-readable medium having computer executable instructions for performing the steps recited in claim 21.
-
30. The method of claim 15 wherein each module provides an interface for enabling dynamically adding the at least one first module, the interface comprising:
-
a first command to determine if an input pin of a processing module can accept a media type on a next data sample; a second command to provide notice when the processing module has processed data; and a third command to signal when a reconnection should end at the input pin.
-
-
31. The method of claim 15 wherein each module provides an interface for enabling dynamically adding the at least one first module, the interface comprising a command to temporarily block data flow from an output pin of a processing module.
-
32. The method of claim 15 wherein each module provides an interface for enabling dynamically adding the at least one first module, the interface comprising:
-
a first command to perform a dynamic reconnection between an output pin and an input pin; a second command to put a module into a cache; a third command to remove a module from the cache; a fourth command to enumerate modules in the cache; a fifth command to get a start time used when a graph run call was last commanded; and a sixth command to push data to specified pin.
-
Specification