Optimizing the execution of media processing routines using a list of routine identifiers
First Claim
1. A method for optimizing execution of a plurality of image processing routines on a processor using a particular cache, the method comprising:
- receiving an ordered list of routine identifiers specifying a first order for the plurality of image processing routines, which when executed in the first order produce a particular effect, the ordered list specifying executing a first image processing routine after a second image processing routine and before a third image processing routine;
prior to execution of any of the routines by the processor, determining whether the third image processing routine will retrieve from the particular cache, as input data, output data produced by the second image processing routine and stored by the second image processing routine in the particular cache;
when the third image processing routine will retrieve from the particular cache output data produced by the second image processing routine, modifying said ordered list to create a modified list of routine identifiers that specifies a second order in which the third image processing routine is executed after execution of the second image processing routine and before execution of the first image processing routine, the second order optimizing processing time for execution of the image processing routines; and
executing the plurality of image processing routines in the second order to produce the particular effect.
0 Assignments
0 Petitions
Accused Products
Abstract
Methods for analyzing a list of routine identifiers to optimize processing of routines identified in the list. Some embodiments execute a set of routines in multiple passes where each pass comprises each routine in the set processing a single band of its source. The band size of the sources of the set is related to the size of a cache used during execution of the set. A band size of sources of the set is determined so that all data processed by and produced by any routine in the set can be stored to the cache while the routine processes one band of its source. Some embodiments use the list to combine two or more routines into a single routine where the list is modified accordingly. Some embodiments use the list for grouping and re-ordering routines identified in the list to send particular routines to an alternative processor for processing.
-
Citations
33 Claims
-
1. A method for optimizing execution of a plurality of image processing routines on a processor using a particular cache, the method comprising:
-
receiving an ordered list of routine identifiers specifying a first order for the plurality of image processing routines, which when executed in the first order produce a particular effect, the ordered list specifying executing a first image processing routine after a second image processing routine and before a third image processing routine; prior to execution of any of the routines by the processor, determining whether the third image processing routine will retrieve from the particular cache, as input data, output data produced by the second image processing routine and stored by the second image processing routine in the particular cache; when the third image processing routine will retrieve from the particular cache output data produced by the second image processing routine, modifying said ordered list to create a modified list of routine identifiers that specifies a second order in which the third image processing routine is executed after execution of the second image processing routine and before execution of the first image processing routine, the second order optimizing processing time for execution of the image processing routines; and executing the plurality of image processing routines in the second order to produce the particular effect. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method for optimizing execution of a set of media editing routines on a processor using a particular cache, the method comprising:
-
receiving an ordering for the set of media editing routines which when executed produces a particular effect, each media editing routine for processing input data retrieved from the particular cache to produce output data that is stored to the particular cache, a plurality of media editing routines in the set of media editing routines specified by a user through a user interface in a particular order to transform one or more source media into an output media; for each particular media editing routine in a subset of the set of media editing routines, repositioning the particular media editing routine after an identified media editing routine within the set of media editing routines when the identified media editing routine produces output data in the particular cache that is retrieved as input data of the particular media editing routine in order to create a repositioned ordering, wherein the repositioned ordering comprises (i) a first image processing routine for processing input data of a first frame and storing output data to the particular cache, (ii) a second image processing routine for processing input data of a second frame and storing output data to the particular cache without overwriting the output data of the first image processing routine stored to the particular cache, and (iii) a third image processing routine for processing the output data of the first image processing routine from the particular cache and the output data of the second image processing routine from the particular cache to produce output data of the third image processing routine that is stored to the particular cache; and executing the set of media editing routines based on the repositioned ordering to produce the particular effect. - View Dependent Claims (10, 11, 12, 13)
-
-
14. A method for optimizing processing time for executing a plurality of image processing routines on a processor to produce a particular image processing effect, the method comprising:
-
receiving a plurality of identifiers in an initial order, each identifier identifying a corresponding image processing routine in the plurality of image processing routines; replacing at least two identifiers with a single identifier to produce a modified ordering of the identifiers, wherein said single identifier identifies a single image processing routine that when executed by the processor produces a same sub-effect as when executing separately each of the image processing routines corresponding to the identifiers that are to be replaced; and storing the modified ordering of the identifiers to a computer readable storage medium for later execution by the processor in order to produce the particular image processing effect. - View Dependent Claims (15, 16, 17)
-
-
18. A method for optimizing execution of a plurality of image processing routines on a first processor and a second processor, the method comprising:
-
receiving an order for executing the plurality of image processing routines to produce a particular effect using the first processor, the plurality of image processing routines comprising a set of routines that modify at least one particular image to create an output image different from the particular image; identifying sendable routines within the plurality of image processing routines that are able to be processed by the second processor, each sendable routine requiring a separate set of data transfers to the second processor for enabling the second processor to execute the sendable routine; modifying said received order of the image processing routines by grouping said sendable routines into at least one set of successive sendable routines to send to the second processor, said set of successive sendable routines requiring fewer data transfers to the second processor than when sending each sendable routine separately to the second processor; and executing the plurality of image processing routines according to the modified ordering using the first processor and the second processor to produce the particular effect, said executing comprising sending the set of successive sendable routines successively to the second processor and receiving from the second processor an output of the set of successive sendable routines without receiving intermediate output from routines within the set of sendable routines. - View Dependent Claims (19, 20, 21)
-
-
22. A non-transitory computer readable storage medium storing a computer program for optimizing execution of a plurality of image processing routines on a processor using a particular cache, the computer program comprising:
-
a set of instructions for receiving an ordered list of routine identifiers specifying a first order for the plurality of image processing routines, which when executed in the first order produces a particular effect, the ordered list specifying executing a first image processing routine after a second image processing routine and before a third image processing routine; a set of instructions for, prior to execution of any of the image processing routines by the processor, determining whether the third image processing routine will retrieve from the particular cache, as input data, output data produced by the second image processing routine and stored by the second image processing routine in the particular cache; a set of instructions for modifying, when it is determined that the third image processing routine will retrieve from the particular cache output data produced by the second image processing routine, said ordered list to create a modified list of routine identifiers that specifies a second order in which the third image processing routine is executed after execution of the second image processing routine and before execution of the first image processing routine, the second order optimizing processing time by minimizing cache misses when retrieving data from the particular cache; and a set of instructions for executing the plurality of image processing routines in the second order to produce the particular effect. - View Dependent Claims (23, 24)
-
-
25. A non-transitory computer readable storage medium storing a computer program for optimizing processing time of a plurality of image processing routines, the computer program comprising:
-
a set of instructions for determining a plurality of identifiers for identifying an initial order for executing the plurality of image processing routines to produce a particular effect, each identifier identifying a corresponding image processing routine in the plurality of image processing routines; a set of instructions for replacing at least two identifiers with a single identifier to produce a modified ordering of the identifiers, wherein said single identifier identifies a single image processing routine that when executed produces a same sub-effect as when executing separately each of the image processing routines corresponding to the identifiers that are to be replaced; and a set of instructions for storing the modified ordering of the identifiers for later execution in order to produce the particular effect. - View Dependent Claims (26, 27)
-
-
28. A non-transitory computer readable storage medium storing a computer program for optimizing execution of a plurality of image processing routines on a first processor and a second processor, the computer program comprising:
-
a set of instructions for receiving an order for executing the plurality of image processing routines to produce a particular effect using the first processor, the plurality of image processing routines comprising a set of routines that modify at least one particular image to create an output image different from the particular image; a set of instructions for identifying sendable routines within the plurality of image processing routines that are able to be processed by the second processor, each sendable routine requiring a separate set of data transfers to the second processor for enabling the second processor to execute the sendable routine; a set of instructions for modifying said received order of the image processing routines by grouping said sendable routines into at least one set of successive sendable routines to send to the second processor, said set of successive sendable routines requiring fewer data transfers to the second processor than when sending each sendable routine separately to the second processor; a set of instructions for replacing, in said modified order, a particular set of successive sendable routines with a single alternative routine for performance by the second processor; and a set of instructions for executing the plurality of image processing routines according to the modified ordering using the first processor and the second processor to produce the particular effect, said executing comprising sending the alternative routine to the second processor and receiving from the second processor an output of the alternative routine. - View Dependent Claims (29, 30)
-
-
31. A non-transitory computer readable storage medium storing a computer program for optimizing execution of a set of media editing routines on a processor using a particular cache, the computer program comprising:
-
a set of instructions for receiving an ordering for the set of media editing routines which when executed produces a particular effect, each media editing routine for processing input data retrieved from the particular cache to produce output data that is stored to the particular cache, a plurality of media editing routines in the set of media editing routines specified by a user through a user interface in a particular order to transform one or more source media into an output media; a set of instructions for repositioning, for each particular media editing routine in a subset of the set of media editing routines, the particular media editing routine after an identified media editing routine within the set of media editing routines when the identified media editing routine produces output data in the particular cache that is retrieved as input data of the particular media editing routine in order to create a repositioned ordering, wherein the repositioned ordering comprises (i) a first image processing routine for processing input data of a first frame and storing output data to the particular cache, (ii) a second image processing routine for processing input data of a second frame and storing output data to the particular cache without overwriting the output data of the first image processing routine stored to the particular cache, and (iii) a third image processing routine for processing the output data of the first image processing routine from the particular cache and the output data of the second image processing routine from the particular cache to produce output data of the third image processing routine that is stored to the particular cache; and a set of instructions for executing the set of media editing routines based on the repositioned ordering to produce the particular effect. - View Dependent Claims (32, 33)
-
Specification