IP Library Granted Patent US 9,197,892
Granted Patent B2
US 9,197,892 · App. 13/782,925 · Granted Nov 24, 2015

Optimized motion compensation and motion estimation for video coding

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,197,892
App. No.
13/782,925
Granted
Nov 24, 2015
Kind
B2
Abstract

A system (and a method) are disclosed for intelligently fetch one or multiple reference blocks from memory for each block to be motion compensated or motion estimated within a video processing system. The system includes a reference block configuration evaluation unit and a motion compensation memory fetching unit. The reference block configuration evaluation unit analyzes the reference block configuration of the block being motion compensated with a plurality of reference block configurations of its neighboring blocks. In response to a reference block configuration evaluation result, the reference block configuration evaluation unit decides the configuration of reference blocks to be fetched from a memory. The motion vector memory fetching unit fetches the number of reference blocks for motion compensation accordingly.

Claims (47)

1. A method for memory access of motion compensation for a block of video data, comprising:

receiving a plurality of motion compensation references, a motion compensation reference including a motion vector of a reference block and a memory address of the reference block, the reference block associated with the block of video data being motion compensated;

comparing a first motion vector of a reference block of the block being motion compensated with a second motion vector of a reference block of a neighboring block of the block being motion compensated, wherein the comparing comprises:

determining whether a difference between the first motion vector and the second motion vector is at least equal to a number of pixels of an overlapping region between the reference blocks; and

fetching a number of reference blocks from a memory collectively based on the comparison of the motion vectors of the corresponding reference blocks of the plurality of motion compensation references.

2. The method of claim 1 , further comprising:

responsive to the difference between the first motion vector and the second motion vector being at least equal to the number of pixels of the overlapping region between the reference blocks, fetching the reference block of the block being motion compensated and the reference block of the neighboring block of the block being motion compensated together.

3. The method of claim 2 , wherein

the first motion vector is similar to the second motion vector.

4. The method of claim 2 , further comprising:

determining a first absolute difference between the first motion vector and the second motion vector in a horizontal direction;

determining a second absolute difference between the first motion vector and the second motion vector in a vertical direction, wherein the difference between the first and second motion vectors comprises a sum of the first and second absolute differences; and

responsive to the difference being at least equal to the number of pixels of the overlapping region, fetching the reference block of the block being motion compensated and the reference block of the neighboring block of the block being motion compensated together.

5. The method of claim 2 , wherein

the first motion vector is identical to the second motion vector.

6. The method of claim 1 , wherein the reference blocks comprise a sub-pixel accuracy motion compensation support block of the block being motion compensated and a sub-pixel accuracy motion compensation support block of the neighboring block, the dimensions of sub-pixel accuracy motion compensation support blocks being determined by a sub-pixel accuracy pixel interpolation filter.

7. The method of claim 1 , wherein the reference blocks comprise a motion vector refinement support block of the block being motion compensated and a motion vector refinement support block of the neighboring block, the dimensions of motion vector refinement support blocks being determined by a configurable threshold.

8. A system for optimizing memory access of motion compensation for a block of video data, comprising:

a receiving module for receiving a plurality of motion compensation references, a motion compensation reference including a motion vector of a reference block and a memory address of the reference block, the reference block associated with the block of video data being motion compensated;

a reference block configuration evaluation unit for comparing a first motion vector of a reference block of the block being motion compensated with a second motion vector of a reference block of a neighboring block of the block being motion compensated, wherein the reference block configuration evaluation unit is further for:

determining whether a difference between the first motion vector and the second motion vector is at least equal to a number of pixels of an overlapping region between the reference blocks; and

a motion compensation memory fetching unit for fetching a number of reference blocks from a memory collectively based on the comparison of the motion vectors of the corresponding reference blocks of the plurality of motion compensation references.

9. The system of claim 8 , wherein the reference block configuration evaluation unit is further for:

responsive to the difference between the first motion vector and the second motion vector being at least equal to the number of pixels of the overlapping region between the reference blocks, fetching the reference block of the block being motion compensated and the reference block of the neighboring block of the block being motion compensated together.

10. The system of claim 9 , wherein

the first motion vector is similar to the second motion vector.

11. The system of claim 9 , wherein the reference block configuration evaluation unit is further for:

determining a first absolute difference between the first motion vector and the second motion vector in a horizontal direction;

determining a second absolute difference between the first motion vector and the second motion vector in a vertical direction, wherein the difference between the first and second motion vectors comprises a sum of the first and second absolute differences; and

responsive to the difference being at least equal to the number of pixels of the overlapping region, fetching the reference block of the block being motion compensated and the reference block of the neighboring block of the block being motion compensated together.

12. The system of claim 9 , wherein

the first motion vector is identical to the second motion vector.

13. The system of claim 8 , wherein the reference blocks comprise a sub-pixel accuracy motion compensation support block of the block being motion compensated and a sub-pixel accuracy motion compensation support block of the neighboring block, the dimensions of sub-pixel accuracy motion compensation support blocks being determined by a sub-pixel accuracy pixel interpolation filter.

14. The system of claim 8 , wherein the reference blocks comprise a motion vector refinement support block of the block being motion compensated and a motion vector refinement support block of the neighboring block, the dimensions of motion vector refinement support blocks being determined by a configurable threshold.

15. A non-transitory computer-readable medium containing computer program code for optimizing memory access of motion compensation for a block of video data, the computer program code comprising code for:

receiving a plurality of motion compensation references, a motion compensation reference including a motion vector of a reference block and a memory address of the reference block, the reference block associated with the block of video data being motion compensated;

comparing a first motion vector of a reference block of the block being motion compensated with a second motion vector of a reference block of a neighboring block of the block being motion compensated, wherein the comparing comprises:

determining whether a difference between the first motion vector and the second motion vector is at least equal to a number of pixels of an overlapping region between the reference blocks; and

fetching a number of reference blocks from a memory collectively based on the comparison of the motion vectors of the corresponding reference blocks of the plurality of motion compensation references.

16. The computer-readable medium of claim 15 , further comprising computer program code for:

responsive to the difference between the first motion vector and the motion vector being at least equal to the number of pixels of the overlapping region between the reference blocks, fetching the reference block of the block being motion compensated and the reference block of the neighboring block of the block being motion compensated together.

17. The computer-readable medium of claim 16 , wherein

the first motion vector is similar to the second motion vector.

18. The computer-readable medium of claim 16 , further comprising computer program code for:

determining a first absolute difference between the first motion vector and the second motion vector in a horizontal direction;

determining a second absolute difference between the first motion vector and the second motion vector in a vertical direction, wherein the difference between the first and second motion vectors comprises a sum of the first and second absolute differences; and

responsive to the difference being at least equal to the number of pixels of the overlapping region, fetching the reference block of the block being motion compensated and the reference block of the neighboring block of the block being motion compensated together.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE LISTED CHANGE OF NAME SHOULD BE MERGER AND CHANGE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0180. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 12, 2017
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 041354/0148 →
CHANGE OF NAME Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040652/0180 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
CHANGE OF NAME Recorded Jan 27, 2015
From: ZENVERGE, INC.
To: ZENVERGE, LLC
Reel/Frame 034817/0375 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2015
From: ZENVERGE LLC
To: FREESCALE SEMICONDUCTOR INC.
Reel/Frame 034766/0476 →