IP Library Granted Patent US 8,213,509
Granted Patent B2
US 8,213,509 · App. 11/973,889 · Granted Jul 3, 2012

Video coding on parallel processing systems

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 8,213,509
App. No.
11/973,889
Granted
Jul 3, 2012
Kind
B2
Abstract

A method of estimating motion is disclosed. A first plurality of candidates is identified in a reference frame, wherein the total area occupied by the first plurality of candidates is substantially smaller than that of the reference frame. A first refinement search is then performed based, at least in part, on the first plurality of candidates. One or more best candidates are then identified based, at least in part, on the first refinement search. Finally, motion data is encoded based, at least in part, on the one or more best candidates.

Claims (76)

1. A method of estimating motion, the method comprising:

performing one or more refinement searches on a plurality of macroblocks of a current frame, wherein the one or more refinement searches includes:

identifying one or more candidates in a reference frame;

reducing the one or more candidates to obtain reduced candidates,

wherein reducing the one or more candidates comprises:

reducing the one or more candidates based, at least in part, on a relative proximity of the one or more candidates; and

merging two or more candidates into a single candidate;

loading the reduced candidates from a storage element; and

measuring one or more distortion values based, at least in part, on the reduced candidates; and

encoding motion data based, at least in part, on the one or more refinement searches.

2. The method of claim 1 wherein reducing the one or more candidates comprises:

reducing the one or more candidates such that a number of the reduced candidates does not exceed a load-balancing constraint.

3. The method of claim 2 wherein the load-balancing constraint is based, at least in part, on a complexity of a macroblock, to which a first plurality of candidates belongs.

4. The method of claim 1 wherein the storage element comprises a dynamic random access memory.

5. The method of claim 1 wherein loading the reduced candidates comprises:

storing the reduced candidates to an on-chip memory; and

loading the reduced candidates from the on-chip memory.

6. The method of claim 1 wherein measuring the one or more distortion values comprises:

measuring the one or more distortion values in a search area around a reduced candidate.

7. The method of claim 1 wherein measuring the one or more distortion values comprises:

measuring the one or more distortion values according to one or more block shapes of a candidate.

8. The method of claim 7 wherein measuring the one or more distortion values further comprises:

measuring distortion values for a first block shape; and

calculating distortion values for the one or more block shapes based, at least in part, on a summation of measured distortion values for the first block shape.

9. The method of claim 7 further comprising:

storing a best candidate associated with the one or more block shapes.

10. The method of claim 1 wherein identifying the one or more candidates in a reference frame comprises:

identifying the one or more candidates based, at least in part, on a previous refinement search.

11. The method of claim 10 wherein identifying the one or more candidates comprises:

identifying the one or more candidates based, at least in part, on a voting scheme.

12. The method of claim 11 wherein the voting scheme comprises:

assigning a vote to each of a plurality of best candidates based, at least in part, on one or more best candidates from the previous refinement search; and

resolving tie-breakers based, at least in part, on a respective block size of each of the plurality of best candidates.

13. The method of claim 1 wherein encoding motion data comprises:

determining a partitioning for a macroblock.

14. The method of claim 13 wherein determining the partitioning for the macroblock comprises:

approximating a cost of partitions in parallel.

15. The method of claim 1 wherein performing the one or more refinement searches further comprises:

performing the one or more refinement searches across a plurality of macroblocks in parallel.

16. The method of claim 1 wherein the one or more distortion values comprises at least one of: a sum of absolute differences; a sum of squared errors; or a Hadamard transform.

17. A method of estimating motion, the method comprising:

performing one or more refinement searches on a plurality of macroblocks of a current frame, wherein the one or more refinement searches includes:

identifying one or more candidates in a reference frame, wherein identifying the one or more candidates in a reference frame comprises identifying the one or more candidates based, at least in part, on a previous refinement search, and based, at least in part, on a voting scheme, wherein the voting scheme comprises:

assigning a vote to each of a plurality of best candidates based, at least in part, on one or more best candidates from the previous refinement search; and

resolving tie-breakers based, at least in part, on a respective block size of each of the plurality of best candidates; and

reducing the one or more candidates to obtain reduced candidates;

loading the reduced candidates from a storage element; and

measuring one or more distortion values based, at least in part, on the reduced candidates; and

encoding motion data based, at least in part, on the one or more refinement searches.

18. The method of claim 17 wherein reducing the one or more candidates comprises:

reducing the one or more candidates such that a number of the reduced candidates does not exceed a load-balancing constraint.

19. The method of claim 18 wherein the load-balancing constraint is based, at least in part, on a complexity of a macroblock, to which a first plurality of candidates belongs.

20. The method of claim 17 wherein reducing the one or more candidates comprises:

reducing the one or more candidates based, at least in part, on a relative proximity of the one or more candidates.

21. The method of claim 20 wherein reducing the one or more candidates further comprises:

merging two or more candidates into a single candidate.

22. The method of claim 17 wherein the storage element comprises a dynamic random access memory.

23. The method of claim 17 wherein loading the reduced candidates comprises:

storing the reduced candidates to an on-chip memory; and

loading the reduced candidates from the on-chip memory.

24. The method of claim 17 wherein measuring the one or more distortion values comprises:

measuring the one or more distortion values in a search area around a reduced candidate.

25. The method of claim 17 wherein measuring the one or more distortion values comprises:

measuring the one or more distortion values according to one or more block shapes of a candidate.

26. The method of claim 25 wherein measuring the one or more distortion values further comprises:

measuring distortion values for a first block shape; and

calculating distortion values for the one or more block shapes based, at least in part, on a summation of measured distortion values for the first block shape.

27. The method of claim 25 further comprising:

storing a best candidate associated with the one or more block shapes.

28. The method of claim 17 wherein encoding motion data comprises:

determining a partitioning for a macroblock.

29. The method of claim 28 wherein determining the partitioning for the macroblock comprises:

approximating a cost of partitions in parallel.

30. The method of claim 17 wherein performing the one or more refinement searches further comprises:

performing the one or more refinement searches across a plurality of macroblocks in parallel.

31. The method of claim 17 wherein the one or more distortion values comprises at least one of: a sum of absolute differences; a sum of squared errors; or a Hadamard transform.

Assignments (11)
MERGER Recorded Dec 29, 2015
From: CALOS FUND LIMITED LIABILITY COMPANY
To: OL SECURITY LIMITED LIABILITY COMPANY
Reel/Frame 037373/0402 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2011
From: THE SKEET PRACTICE, LLC
To: CALOS FUND LIMITED LIABILITY COMPANY
Reel/Frame 026701/0037 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2011
From: DYNACOLOR, INC.
To: STREAM DEVELOPMENT CORPORATION
Reel/Frame 026704/0387 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2011
From: STREAM DEVELOPMENT CORPORATION
To: THE SKEET PRACTICE, LLC
Reel/Frame 026704/0433 →
PEACEFUL FORECLOSURE AGREEMENT AND BILL OF FORECLOSURE SALE Recorded Aug 4, 2011
From: STREAM PROCESSORS, INC.
To: DYNACOLOR INC.
Reel/Frame 026704/0721 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2011
From: STREAM DEVELOPMENT CORPORATION
To: THE SKEET PRACTICE, LLC
Reel/Frame 026441/0047 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 13, 2011
From: STREAM PROCESSORS, INC.
To: DYNACOLOR, INC.
Reel/Frame 026435/0623 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 13, 2011
From: DYNACOLOR, INC.
To: STREAM DEVELOPMENT CORPORATION
Reel/Frame 026436/0162 →
RELEASE OF SECURITY INTEREST Recorded May 26, 2011
From: PINNACLE VENTURES, L.L.C.
To: DYNACOLOR, INC.
Reel/Frame 026351/0110 →
SECURITY AGREEMENT Recorded Mar 26, 2009
From: STREAM PROCESSORS, INC.
To: PINNACLE VENTURES, L.L.C., AS AGENT
Reel/Frame 022458/0488 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 5, 2008
From: KAPASI, UJVAL J.; GULATI, AMIT; SIEVERS, JOHN; LIU, YIPENG; MILLER, DAN
To: STREAM PROCESSORS, INC.
Reel/Frame 020465/0018 →