Programmable system for motion vector generation
First Claim
1. A system for generating motion vectors in the framework of a motion estimator, the system being configured for co-operating with an engine for calculating estimation error for generating motion vectors according to estimation errors and/or motion vectors previously generated, the system comprising:
- a program memory that contains program data for a motion-estimation algorithm to be executed;
a motion-vector memory that contains data identifying said motion vectors previously generated; and
an arithmetic and logic unit co-operating with said program memory and said motion-vector memory, said arithmetic and logic unit being configured for performing at least one function comprised in the group consisting of;
arithmetical addition and subtraction of motion vectors in order to calculate new motion vectors using as reference said motion vectors previously generated;
definition of a current search window and logic comparisons on components of said motion vectors for verifying whether certain motion vectors exceed the limits of said search window;
logic comparisons on values of said estimation errors referred to different sets of motion vectors to be subjected to checking;
calculation of addresses of said memory of the motion vectors; and
addition of addresses of said program memory, wherein said progarm memory stores a set of instructions including;
an end of program instruction indicating that a next instruction of a program is the last instmction of the program;
an accumulate instruction operating on an accumulator register;
a memory instruction that transfers a motion vector from the motion-vector memory to a pipeline;
an update instruction generating issuing of a motion vector calculated based on a winning motion vector contained in the motion-vector memory;
an absolute instruction generating issuing of a motion vector;
a synchronize and store vector instruction synchronizing a motion-vector-generator stage with the engine for calculating estimation error;
a compare instruction;
a jump instruction executing a jump to a given address;
a scale instruction establishing scaling factors for co-ordinates of any subsequent motion vector that is issued; and
a set instruction having a behavior that depends upon a value of a “
type”
field.
1 Assignment
0 Petitions
Accused Products
Abstract
A system for generating motion vectors in a motion estimator is configured for co-operating with an engine for calculating estimation error for generating motion vectors, according to estimation errors and/or motion vectors previously generated. The system comprises a program memory that contains program data for a motion-estimation algorithm, and a motion-vector memory that contains data identifying said motion vectors previously calculated. The system further comprises an arithmetic and logic unit co-operating with the program memory and motion-vector memory to generate motion vectors in a programmable way to get them to correspond, for example, to predictors deriving from motion-estimation operations already performed on the macroblocks of the reference frame or on the previous macroblocks of the current frame, as updates calculated using the co-ordinates of the motion vectors already issued for the current macroblock, or as absolute motion vectors, generated as such, taking the components directly from the program code.
12 Citations
21 Claims
-
1. A system for generating motion vectors in the framework of a motion estimator, the system being configured for co-operating with an engine for calculating estimation error for generating motion vectors according to estimation errors and/or motion vectors previously generated, the system comprising:
-
a program memory that contains program data for a motion-estimation algorithm to be executed; a motion-vector memory that contains data identifying said motion vectors previously generated; and an arithmetic and logic unit co-operating with said program memory and said motion-vector memory, said arithmetic and logic unit being configured for performing at least one function comprised in the group consisting of; arithmetical addition and subtraction of motion vectors in order to calculate new motion vectors using as reference said motion vectors previously generated; definition of a current search window and logic comparisons on components of said motion vectors for verifying whether certain motion vectors exceed the limits of said search window; logic comparisons on values of said estimation errors referred to different sets of motion vectors to be subjected to checking; calculation of addresses of said memory of the motion vectors; and addition of addresses of said program memory, wherein said progarm memory stores a set of instructions including; an end of program instruction indicating that a next instruction of a program is the last instmction of the program; an accumulate instruction operating on an accumulator register; a memory instruction that transfers a motion vector from the motion-vector memory to a pipeline; an update instruction generating issuing of a motion vector calculated based on a winning motion vector contained in the motion-vector memory; an absolute instruction generating issuing of a motion vector; a synchronize and store vector instruction synchronizing a motion-vector-generator stage with the engine for calculating estimation error; a compare instruction; a jump instruction executing a jump to a given address; a scale instruction establishing scaling factors for co-ordinates of any subsequent motion vector that is issued; and a set instruction having a behavior that depends upon a value of a “
type”
field. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A system for generating motion vectors, comprising:
-
an estimation error engine for calculating estimation error according to estimation errors and/or motion vectors previously generated; and a motion estimation engine coupled to the estimation error engine and including; a program memory that contains program data for a motion estimation algorithm to be executed; a motion-vector memory that contains data identifying said motion vectors previously generated; an arithmetic and logic unit co-operating with said program memory and said motion-vector memory, said arithmetic and logic unit being configured use the program data to calculate new motion vectors using as reference said motion vectors previously generated; and a state controller coupled to the program memory and the error estimation engine and configured to control the error estimation by the error estimation engine based on the program data stored in the program memory, wherein said program memory stores a set of instructions including; an end of program instruction indicating that a next instruction of a program is the last instmction of the program; an accumulate instruction operating on an accumulator register; a memory instruction that transfers a motion vector from the motion-vector memory to a pipeline; an update instruction generating issuing of a motion vector calculated based on a winning motion vector contained in the motion-vector memory; an absolute instruction generating issuing of a motion vector; a synchronize and store vector instruction synchronizing the motion estimation engine with the estimation error engine; a coin tire instruction; a jump instruction executing to a given address; a scale instruction establishing scaling factors for co-ordinates of any subsequent motion vector that is issued; and a set instruction having a behavior that depends upon a value of a “
type”
field. - View Dependent Claims (15, 16, 17, 18, 19)
-
-
20. A method of generating motion vectors, comprising:
-
calculating estimation error according to estimation errors and/or motion vectors previously generated; and storing in a program memory program data for a motion estimation algorithm to be executed; storing in a motion-vector memory data identifying said motion vectors previously generated; providing instructions from the program memory to an arithmetic and logic unit co-operating with said program memory to cause said arithmetic and logic unit to calculate new motion vectors using as reference said motion vectors previously generated; and controlling the calculation of the error estimation by the error estimation engine based on the program data stored in the program memory, wherein said program memory stores a set of instructions inclining; an end of program instruction indicating that a next instruction of a program is the last instruction of the program; an accumulate instruction operating on an accumulator resister; a memory instruction that transfers a motion vector from the motion-vector memory to a pipeline; an update instruction generating issuing of a motion vector calculated based on a winning motion vector contained in the motion-vector memory; an absolute instruction generating issuing of a motion vector; a synchronize and store vector instruction synchronizing the motion estimation engine with the estimation error engine; a compare instruction; a jump instruction executing a jump to a given address; a scale instruction establishing scaling factors for co-ordinates of any subsequent motion vector that is issued; and a set instruction having a behavior that depends upon a value of a “
type”
field. - View Dependent Claims (21)
-
Specification