IP Library Granted Patent US 7,693,219
Granted Patent B2
US 7,693,219 · App. 11/325,066 · Granted Apr 6, 2010

System and method for fast motion estimation

Assignee: Freescale Semiconductor, Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,693,219
App. No.
11/325,066
Granted
Apr 6, 2010
Kind
B2
Abstract

A fast motion estimation system that determines a reference macroblock or sub-block combination within a reference frame for a current macroblock in a current frame includes a memory, a reference macroblock search circuit, a sub-block combination search circuit, and a comparator circuit. The reference macroblock search circuit determines a motion vector, multiple difference values, and a cost value for each macroblock within the reference frame according to a fast motion estimation search pattern, and stores the motion vector and the difference values in the memory. The sub-block combination search circuit searches the motion vector and the difference values in the memory for determining a corresponding one of multiple lowest cost sub-block combinations for each of multiple sub-block motion modes. The comparator circuit determines a lowest cost macroblock and selects from among the lowest cost macroblock and the lowest cost sub-block combinations to determine the reference macroblock.

Claims (72)

1. A method of encoding video information using fast motion estimation to determine a reference macroblock within a reference frame for a current macroblock in a current frame, comprising:

determining a motion vector, a difference value, and a cost value for each of a plurality of macroblocks within the reference frame according to a fast motion estimation search pattern;

for each of the plurality of macroblocks, comparing cost values and selecting motion vector data, a motion mode and a cost value of a current lowest cost macroblock;

for each of the plurality of macroblocks, determining and storing a difference value for each of a plurality of sub-blocks and at least one corresponding motion vector as stored information;

for each of a plurality of sub-block motion modes, searching the stored information and determining a lowest cost sub-block combination, comparing a cost value of the lowest cost sub-block combination with the cost value of the current lowest cost macroblock;

selecting between the lowest cost sub-block combination and the current lowest cost macroblock as the reference macroblock; and

encoding video information using the selected reference macroblock.

2. The method of claim 1 , further comprising:

comparing relative cost of a plurality of potential start macroblocks;

selecting a lowest cost start macroblock as a first of the plurality of macroblocks within the reference frame; and

determining the fast motion estimation search pattern relative to the selected start macroblock.

3. The method of claim 1 , wherein said determining a difference value for each of a plurality of macroblocks comprises determining a sum of absolute difference (SAD) of picture elements between the current macroblock and a macroblock within the reference frame.

4. The method of claim 1 , wherein said determining a cost value for each of a plurality of macroblocks comprises determining a cost of encoding a motion vector of a macroblock relative to a motion vector prediction and adding the cost of encoding the motion vector to the difference value.

5. The method of claim 1 , wherein said storing a difference value for each of a plurality of sub-blocks and at least one corresponding motion vector as stored information comprises:

storing a motion vector locating a macroblock within the reference frame; and

determining and storing four 8×8 sum of absolute difference (SAD) values for the located macroblock.

6. The method of claim 5 , wherein said searching the stored information and determining a lowest cost sub-block combination for each of a plurality of sub-block motion modes comprises:

for each of the plurality of macroblocks, determining a cost of encoding a motion vector for an upper 16×8 sub-block relative to a first median MV and adding an upper pair of 8×8 SAD values;

determining a lowest cost upper 16×8 sub-block;

for each of the plurality of macroblocks, determining a cost of encoding a motion vector for a lower 16×8 sub-block relative to a second median MV and adding a lower pair of 8×8 SAD values;

determining a lowest cost lower 16×8 sub-block; and

combining a cost of the upper lowest cost 16×8 sub-block with a cost of the lower lowest cost 16×8 sub-block.

7. The method of claim 5 , wherein said searching the stored information and determining a lowest cost sub-block combination for each of a plurality of sub-block motion modes comprises:

for each of the plurality of macroblocks, determining a cost of encoding a motion vector for a left-hand 8×16 sub-block relative to a first median MV and adding a left-hand pair of 8×8 SAD values;

determining a lowest cost left-hand 8×16 sub-block;

for each of the plurality of macroblocks, determining a cost of encoding a motion vector for a right-hand 8×16 sub-block relative to a second median MV and adding a right-hand pair of 8×8 SAD values;

determining a lowest cost right-hand 8×16 sub-block; and

combining a cost of the left-hand lowest cost 8×16 sub-block with a cost of the right-hand lowest cost 8×16 sub-block.

8. The method of claim 5 , wherein said searching the stored information and determining a lowest cost sub-block combination for each of a plurality of sub-block motion modes comprises:

for each of the plurality of macroblocks, determining a cost of encoding a motion vector for an upper-left 8×8 sub-block relative to a first median MV;

determining a lowest cost upper-left 8×8 sub-block;

for each of the plurality of macroblocks, determining a cost of encoding a motion vector for an upper-right 8×8 sub-block relative to a second median MV;

determining a lowest cost upper-right 8×8 sub-block;

for each of the plurality of macroblocks, determining a cost of encoding a motion vector for a lower-left 8×8 sub-block relative to a third median MV;

determining a lowest cost lower-left 8×8 sub-block;

for each of the plurality of macroblocks, determining a cost of encoding a motion vector for a lower-right 8×8 sub-block relative to a fourth median MV;

determining a lowest cost lower-right 8×8 sub-block; and

combining costs of the upper-left, upper-right, lower-left and lower-right 8×8 sub-blocks.

9. The method of claim 1 , further comprising combining a sub-block motion mode bias for each of the plurality of sub-block motion modes.

10. The method of claim 1 , further comprising:

comparing a cost of the current lowest cost macroblock with a predetermined threshold after said selecting motion vector data, a motion mode and a cost value that identifies a current lowest cost macroblock;

comparing a cost of the current lowest cost macroblock with the predetermined threshold after said selecting between the lowest cost sub-block combination and the current lowest cost macroblock to update the current lowest cost macroblock; and

selecting the current lowest cost macroblock as the reference macroblock whenever the cost of the current lowest cost macroblock is less than or equal to the predetermined threshold.

11. A fast motion estimation system that determines a reference macroblock within a reference frame for a current macroblock in a current frame, comprising:

a memory;

a reference macroblock search circuit which determines a motion vector, a plurality of difference values, and a cost value for each of a plurality of macroblocks within the reference frame according to a fast motion estimation search pattern, and which stores said motion vector and said plurality of difference values in said memory;

a sub-block combination search circuit which searches said motion vector and said plurality of difference values in said memory for determining a corresponding one of a plurality of lowest cost sub-block combinations for each of a plurality of sub-block motion modes; and

a comparator circuit which determines a lowest cost macroblock and which selects from among said lowest cost macroblock and said plurality of lowest cost sub-block combinations to determine the reference macroblock.

12. The fast motion estimation system of claim 11 , wherein said comparator circuit compares relative cost of a plurality of potential start macroblocks, selects a lowest cost start macroblock as a first of said plurality of macroblocks within the reference frame, and wherein said reference macroblock search circuit initiates said fast motion estimation search pattern beginning with said lowest cost start macroblock.

13. The fast motion estimation system of claim 11 , wherein said reference macroblock search circuit comprises a sum of absolute difference (SAD) calculation circuit.

14. The fast motion estimation system of claim 11 , wherein said reference macroblock search circuit comprises a motion vector prediction and calculation circuit.

15. The fast motion estimation system of claim 11 , wherein said reference macroblock search circuit determines and stores in said memory four 8×8 sum of absolute difference (SAD) values for each of said plurality of macroblocks within the reference frame.

16. The fast motion estimation system of claim 15 , wherein said sub-block combination search circuit determines a lowest cost upper 16×8 sub-block and a lowest cost lower 16×8 sub-block to determine a lowest cost sub-block combination for a 16×8 motion mode, determines a lowest cost left-hand 8×16 sub-block and a lowest cost right-hand 8×16 sub-block to determine a lowest cost sub-block combination for an 8×16 motion mode, and determines a lowest cost upper-left 8×8 sub-block, a lowest cost upper-right 8×8 sub-block, a lowest cost lower-left 8×8 sub-block, and a lowest cost lower-right 8×8 sub-block to determine a lowest cost sub-block combination for an 8×8 motion mode.

17. The fast motion estimation system of claim of claim 11 , wherein said sub-block combination search circuit combines a corresponding one of a plurality of sub-block motion mode biases for each of said plurality of sub-block motion modes.

18. The fast motion estimation system of claim 11 , wherein said comparator circuit compares a cost value of each of said plurality of macroblocks and each of said plurality of lowest cost sub-block combinations with said predetermined threshold and selects a macroblock or sub-block combination as the reference macroblock if a corresponding cost value achieves said predetermined threshold.

19. A video encoder, comprising:

a first memory storing a current frame;

a second memory storing a reference frame;

a subtract circuit having a negative input receiving interframe prediction information, a positive input receiving current frame information, and an output providing residual information;

a transform and quantization circuit having an input coupled to said output of said subtract circuit and an output providing quantized transform coefficients;

an inverse transform and inverse quantization circuit having an input coupled to said output of said transform and quantization circuit and having an output providing reconstructed residual information;

an adder having a first input receiving said interframe prediction information, a second input coupled to said output of said inverse transform and inverse quantization circuit, and an output providing reconstructed frame information;

a deblock filter having an input coupled to said output of said adder and an output providing filtered reconstructed frame information for storage in said second memory;

a motion compensation circuit having an input receiving at least one reference motion vector of a reference macroblock within said reference frame and an output providing said interframe prediction information; and

a motion estimation circuit having a first input receiving said current frame, a second input receiving said reference frame and an output providing said at least one reference motion vector for said reference block, said motion estimation circuit comprising:

a third memory;

a reference macroblock search circuit which determines a motion vector, a plurality of difference values, and a cost value for each of a plurality of macroblocks within said reference frame according to a fast motion estimation search pattern, and which stores said motion vector and said plurality of difference values in said third memory;

a sub-block combination search circuit which searches said third memory to find a lowest cost sub-block combination for each of a plurality of sub-block motion modes; and

a comparator circuit which determines a lowest cost macroblock and which selects from among said lowest cost macroblock and said plurality of lowest cost sub-block combinations to determine said at least one reference motion vector of said reference macroblock.

20. The video encoder of claim 19 , wherein:

said reference macroblock search circuit stores a 16×16 motion vector and four 8×8 sum of absolute difference (SAD) values in said third memory for each of said plurality of macroblocks within said reference frame according to said fast motion estimation search pattern; and

wherein said sub-block combination search circuit scans said third memory to find a lowest cost sub-block combination for a 16×8 motion mode, a lowest cost sub-block combination for an 8×16 motion mode, and a lowest cost sub-block combination for an 8×8 motion mode.

Assignments (29)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051030/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051145/0184 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0387 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050745/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042985/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042762/0145 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
PATENT RELEASE Recorded Aug 17, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 039707/0471 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12092129 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Jul 14, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039361/0212 →
SECURITY AGREEMENT SUPPLEMENT Recorded Mar 7, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 038017/0058 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NORTH STAR INNOVATIONS INC.
Reel/Frame 037694/0264 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037354/0225 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0553 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0143 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SECURITY AGREEMENT Recorded May 13, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 024397/0001 →
SECURITY AGREEMENT Recorded Mar 15, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A.
Reel/Frame 024085/0001 →
SECURITY AGREEMENT Recorded Feb 2, 2007
From: FREESCALE SEMICONDUCTOR, INC.; FREESCALE ACQUISITION CORPORATION; FREESCALE ACQUISITION HOLDINGS CORP.; FREESCALE HOLDINGS (BERMUDA) III, LTD.
To: CITIBANK, N.A. AS COLLATERAL AGENT
Reel/Frame 018855/0129 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2006
From: YAN, YONG
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 017439/0028 →
Continuity (1)
Related Publication 20070153897A1 · Jul 5, 2007