IP Library Granted Patent US 9,225,996
Granted Patent B2
US 9,225,996 · App. 12/026,505 · Granted Dec 29, 2015

Motion refinement engine with flexible direction processing and methods for use therewith

Inventors: Avinash Ramachandran (Toronto, CA); Edward Hong (North York, CA); Gang Qiu (Richmond Hill, CA)
Assignee: ViXS Systems, Inc.
H04N19/577H04N19/105H04N19/112H04N19/115H04N19/124H04N19/149H04N19/176H04N19/51H04N19/52H04N19/523H04N19/533H04N19/61
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 9,225,996
App. No.
12/026,505
Granted
Dec 29, 2015
Kind
B2
Abstract

A motion refinement engine can be used in a video encoder for encoding a video input signal that includes a sequence of images that are segmented into a plurality of macroblocks. The motion refinement engine includes a motion search module, that generates at least one motion search motion vector for a macroblock of the plurality of macroblocks based on a first plurality of directions. A motion refinement module generates at least one refined motion vector for the macroblock of the plurality of macroblocks, based on a second plurality of directions, wherein the second plurality of directions differ from the first plurality of directions. In a further embodiment, motion search, motion refinement, and motion compensation are selectively performed in a single pass.

Claims (34)

1. A motion refinement engine for use in a video encoder for encoding a video input signal that includes a sequence of images that are segmented into a plurality of macroblocks, the motion refinement engine comprising:

a motion search module, that generates at least one motion search motion vector for a macroblock of the plurality of macroblocks; and

a motion refinement module, coupled to the motion search module, that generates at least one refined motion vector for the macroblock of the plurality of macroblocks, based on a first subset of possible partitions of the macroblock into a plurality of subblocks corresponding to a first direction of a plurality of directions and a second subset of possible partitions of the macroblock into the plurality of subblocks corresponding to a second direction of the plurality of directions.

2. The motion refinement engine of claim 1 wherein the motion search module generates the at least one motion search motion vector for the macroblock of the plurality of macroblocks based on a first subset of the plurality of directions, and wherein the motion refinement module, coupled to the motion search module generates the at least one refined motion vector for the macroblock of the plurality of macroblocks based on a second subset of the plurality of directions, wherein the second subset of the plurality of directions differs from the first subset of the plurality of directions.

3. The motion refinement engine of claim 2 wherein the first subset of the plurality of directions includes two directions, and the second subset of the plurality of directions includes three directions.

4. The motion refinement engine of claim 2 wherein the first subset of the plurality of directions includes a forward direction, a backward direction, and the second subset of the plurality of directions include the forward direction, the backward direction and a blended direction.

5. The motion refinement engine of claim 4 wherein the motion refinement module generates a blended direction cost based on a stored forward cost and a stored backward cost.

6. The motion refinement engine of claim 1 wherein the motion search module generates the at least one motion search motion vector based on a first subset of possible partitions of the macroblock into a plurality of subblocks corresponding to a first direction of the plurality of directions and a second subset of possible partitions of the macroblock into the plurality of subblocks corresponding to a second direction of the plurality of directions.

7. The motion refinement engine of claim 1 wherein the first subset of possible partitions and the second subset of possible partitions are selectable.

8. The motion refinement engine of claim 1 wherein the at least one refined motion vector includes a plurality of refined motion vectors, each of the plurality of refined motion vectors corresponding to one of a plurality of subblocks and having a corresponding one of the plurality of directions.

9. A method for use in a video encoder for encoding a video input signal that includes a sequence of images that are segmented into a plurality of macroblocks, the method comprising:

generating at least one motion search motion vector for a macroblock of the plurality of macroblocks; and

generating at least one refined motion vector for the macroblock of the plurality of macroblocks, based on a first subset of possible partitions of the macroblock into a plurality of subblocks corresponding to a first direction of a plurality of directions and a second subset of possible partitions of the macroblock into the plurality of subblocks corresponding to a second direction of the plurality of directions.

10. The method of claim 9 wherein generating the at least one motion search motion vector for a macroblock of the plurality of macroblocks is based on a first subset of the plurality of directions and generating the at least one refined motion vector for the macroblock of the plurality of macroblocks is based on a second subset of the plurality of directions, wherein the second subset of the plurality of directions differ from the first subset of the plurality of directions.

11. The method of claim 10 wherein the first subset of the plurality of directions includes two directions, and the second subset of the plurality of directions includes three directions.

12. The method of claim 10 wherein the first subset of the plurality of directions includes a forward direction, a backward direction, and the second subset of the plurality of directions include the forward direction, the backward direction and a blended direction.

13. The method of claim 12 wherein generating the at least one refined motion vector generates a blended direction cost based on a stored forward cost and a stored backward cost.

14. The method of claim 9 wherein the step of generating at least one motion search motion vector generates the at least one motion search motion vector based on a first subset of possible partitions of the macroblock into a plurality of subblocks corresponding to a first direction of the plurality of directions and a second subset of possible partitions of the macroblock into the plurality of subblocks corresponding to a second direction of the plurality of directions.

15. The method of claim 9 wherein the first subset of possible partitions and the second subset of possible partitions are selectable.

16. The method of claim 9 wherein the at least one refined motion vector includes a plurality of refined motion vectors, each of the plurality of refined motion vectors corresponding to one of a plurality of subblocks and having a corresponding one of the second plurality of directions.

17. A motion refinement engine for use in a video encoder for encoding a video input signal that includes a sequence of images that are segmented into a plurality of macroblocks, the motion refinement engine comprising:

a motion search module, that generates at least one motion search motion vector for a macroblock of the plurality of macroblocks;

a motion refinement module, coupled to the motion search module, that generates at least one refined motion vector for the macroblock of the plurality of macroblocks;

a motion mode decision module, coupled to the motion refinement module, that generates a final macroblock cost for the macroblock of the plurality of macroblocks; and

a reconstruction module, coupled to the mode decision module, that generates residual luma and chroma values for the macroblock of the plurality of macroblocks;

wherein, in a first mode of operation, the at least one motion search motion vector, the at least one refined motion vector, the final macroblock cost and the residual chroma and luma values are generated in one pass for a plurality of directions; and

wherein, in a second mode of operation, the motion refinement module generates the at least one refined motion vector in one pass for a first direction of the plurality of directions and a second pass for a second direction of the plurality of directions.

18. A method for use in a video encoder for encoding a video input signal that includes a sequence of images that are segmented into a plurality of macroblocks, the method comprising:

generating at least one motion search motion vector for a macroblock of the plurality of macroblocks;

generating at least one refined motion vector for the macroblock of the plurality of macroblocks;

generating a final macroblock cost for the macroblock of the plurality of macroblocks; and

generating residual luma and chroma values for the macroblock of the plurality of macroblocks;

wherein, in a first mode of operation, the at least one motion search motion vector, the at least one refined motion vector, the final macroblock cost and the residual chroma and luma values are generated in one pass for a plurality of directions; and

wherein, in a second mode of operation, the at least one refined motion vector is generated in one pass for a first direction of the plurality of directions and is generated in a second pass for a second direction of the plurality of directions.

Assignments (3)
RELEASE OF SECURITY INTEREST Recorded Aug 18, 2017
From: COMERICA BANK
To: VIXS SYSTEMS, INC.
Reel/Frame 043601/0817 →
SECURITY AGREEMENT Recorded Feb 11, 2009
From: VIXS SYSTEMS INC.
To: COMERICA BANK
Reel/Frame 022240/0446 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2008
From: RAMACHANDRAN, AVINASH; HONG, EDWARD; QIU, GANG
To: VIXS SYSTEMS, INC.
Reel/Frame 020842/0886 →
Continuity (1)
Related Publication 20090161761A1 · Jun 25, 2009