IP Library Granted Patent US 10,863,193
Granted Patent B2
US 10,863,193 · App. 16/455,444 · Granted Dec 8, 2020

Buffer restriction during motion vector prediction for video coding

Inventors: Yung-Hsuan Chao (San Diego, CA); Wei-Jung Chien (San Diego, CA); Marta Karczewicz (San Diego, CA)
Assignee: Qualcomm Incorporated
H04N19/52H04N19/176H04N19/70H04N19/96
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 10,863,193
App. No.
16/455,444
Granted
Dec 8, 2020
Kind
B2
Abstract

An example device for coding video data includes a memory configured to store video data; and one or more processors implemented in circuitry and configured to: construct a motion vector predictor candidate list for a current block of the video data, the motion vector predictor candidate list identifying one or more blocks that are non-adjacent to the current block, each of the non-adjacent blocks being in a coding tree unit (CTU) including the current block or a line buffer including the current block; select a motion vector predictor from one of the blocks that is non-adjacent to the current block and in the motion vector predictor candidate list; and code motion information of the current block using the motion vector predictor.

Claims (67)

1. A method of coding video data, the method comprising:

constructing a motion vector predictor candidate list for a current block of video data, the motion vector predictor candidate list identifying one or more blocks that are non-adjacent to the current block, each of the non-adjacent blocks being in a coding tree unit (CTU) including the current block or a line buffer including the current block, wherein constructing the motion vector predictor candidate list comprises excluding motion information of any blocks that are outside of the CTU and the line buffer from the motion vector predictor candidate list;

selecting a motion vector predictor from one of the blocks that is non-adjacent to the current block and in the motion vector predictor candidate list; and

coding motion information of the current block using the motion vector predictor.

2. The method of claim 1 , wherein the one of the blocks that is non-adjacent to the current block is within the CTU including the current block.

3. The method of claim 1 , wherein the one of the blocks that is non-adjacent to the current block is within the line buffer including the current block.

4. The method of claim 1 , wherein constructing the motion vector predictor candidate list and excluding the motion information of any of the blocks that are outside of the CTU and the line buffer comprises:

determining that a potential motion vector predictor is outside of the CTU and the line buffer;

remapping the potential motion vector predictor to a motion vector predictor candidate within the CTU or the line buffer; and

adding the remapped motion vector predictor candidate to the motion vector predictor candidate list.

5. The method of claim 4 , wherein remapping comprises, when a vertical offset of the potential motion vector predictor is less than a vertical offset of an upper row including the CTU, setting a vertical offset of the remapped motion vector predictor candidate equal to the vertical offset of the upper row including the CTU.

6. The method of claim 5 , wherein the vertical offset of the potential motion vector predictor comprises offsetY, and wherein the vertical offset of the upper row including the CTU comprises offsetYUpperCTURow.

7. The method of claim 4 , wherein remapping comprises, when a horizontal offset of the potential motion vector predictor is less than a horizontal offset of a left column including the CTU, setting a horizontal offset of the remapped motion vector predictor candidate equal to the horizontal offset of the left column including the CTU.

8. The method of claim 7 , wherein the horizontal offset of the potential motion vector predictor comprises offsetY, and wherein the horizontal offset of the left column including the CTU comprises offsetXLeftCTUColumn.

9. The method of claim 4 , wherein the potential motion vector predictor comprises one of a plurality of potential motion vector predictors along a common direction from the current block that are outside of the CTU and the line buffer, and wherein remapping the potential motion vector predictor comprises remapping each of the plurality of potential motion vector predictors, comprising at least one of:

setting left edges of the remapped motion vector predictors equal to {pos_x−(pos_x−ctu_pos_x)/N, pos_x−2*(pos_x−ctu_pos_x)/N, pos_x−N*(pos_x−ctu_pos_x)/N}, wherein pos_x comprises a left edge of the current block, ctu_pos_x comprises a left edge of the CTU, and N is the number of potential motion vector predictors in the plurality of potential motion vector predictors; or

setting top edges of the remapped motion vector predictors equal to {pos_y−(pos_y−ctu_pos_y)/N, pos_y−2*(pos_y−ctu_pos_y)/N, . . . pos_y−N*(pos_y−ctu_pos_y)/N}, wherein pos_y comprises a top edge of the current block, and ctu_pos_y comprises a top edge of the CTU.

10. The method of claim 1 , wherein coding the motion information comprises inheriting one or more motion parameters for the current block from the from the motion vector predictor, the motion parameters comprising one or more of an x-value of a motion vector, a y-value of the motion vector, a reference picture list identifier, or a reference picture index.

11. The method of claim 1 , wherein coding the motion information comprises decoding the motion information, the method further comprising:

generating a prediction block for the current block using the motion information;

decoding a residual block for the current block; and

combining the residual block with the prediction block to reconstruct the current block.

12. The method of claim 1 , wherein coding the motion information comprises encoding the motion information, the method further comprising:

generating a prediction block for the current block using the motion information;

calculating a residual block for the current block representing differences between the current block and the prediction block; and

encoding the residual block.

13. A device for coding video data, the device comprising:

a memory configured to store video data; and

one or more processors implemented in circuitry and configured to:

construct a motion vector predictor candidate list for a current block of the video data, the motion vector predictor candidate list identifying one or more blocks that are non-adjacent to the current block, each of the non-adjacent blocks being in a coding tree unit (CTU) including the current block or a line buffer including the current block wherein the one or more processors are configured to exclude motion information of any blocks that are outside of the CTU and the line buffer from the motion vector predictor candidate list;

select a motion vector predictor from one of the blocks that is non-adjacent to the current block and in the motion vector predictor candidate list; and

code motion information of the current block using the motion vector predictor.

14. The device of claim 13 , wherein the one of the blocks that is non-adjacent to the current block is within the CTU including the current block.

15. The device of claim 13 , wherein the one of the blocks that is non-adjacent to the current block is within the line buffer including the current block.

16. The device of claim 13 , wherein to construct the motion vector predictor candidate list and exclude the motion information of any of the blocks that are outside of the CTU and the line buffer from the motion vector predictor candidate list, the one or more processors are configured to:

determine that a potential motion vector predictor is outside of the CTU and the line buffer;

remap the potential motion vector predictor to a motion vector predictor candidate within the CTU or the line buffer; and

add the remapped motion vector predictor candidate to the motion vector predictor candidate list.

17. The device of claim 16 , wherein to remap the potential motion vector predictor, the one or more processors are configured to, when a vertical offset of the potential motion vector predictor is less than a vertical offset of an upper row including the CTU, set a vertical offset of the remapped motion vector predictor candidate equal to the vertical offset of the upper row including the CTU.

18. The device of claim 16 , wherein to remap the potential motion vector predictor, the one or more processors are configured to, when a horizontal offset of the potential motion vector predictor is less than a horizontal offset of a left column including the CTU, set a horizontal offset of the remapped motion vector predictor candidate equal to the horizontal offset of the left column including the CTU.

19. The device of claim 16 , wherein the potential motion vector predictor comprises one of a plurality of potential motion vector predictors along a common direction from the current block that are outside of the CTU and the line buffer, and wherein to remap the potential motion vector predictor, the one or more processors are configured to remap each of the plurality of potential motion vector predictors, and wherein to remap each of the plurality of potential motion vector predictors, the one or more processors are configured to:

set left edges of the remapped motion vector predictors equal to {pos_x−(pos_x−ctu_pos_x)/N, pos_x−2*(pos_x−ctu_pos_x)/N, pos_x−N*(pos_x−ctu_pos_x)/N}, wherein pos_x comprises a left edge of the current block, ctu_pos_x comprises a left edge of the CTU, and N is the number of potential motion vector predictors in the plurality of potential motion vector predictors; or

set top edges of the remapped motion vector predictors equal to {pos_y−(pos_y−ctu_pos_y)/N, pos_y−2*(pos_y−ctu_pos_y)/N, . . . pos_y−N*(pos_y−ctu_pos_y)/N}, wherein pos_y comprises a top edge of the current block, and ctu_pos_y comprises a top edge of the CTU.

20. The device of claim 13 , wherein the one or more processors are configured to inherit one or more motion parameters for the current block from the from the motion vector predictor, the motion parameters comprising one or more of an x-value of a motion vector, a y-value of the motion vector, a reference picture list identifier, or a reference picture index.

21. The device of claim 13 , wherein the one or more processors are configured to decode the motion information and further configured to:

generate a prediction block for the current block using the motion information;

decode a residual block for the current block; and

combine the residual block with the prediction block to reconstruct the current block.

22. The device of claim 13 , wherein the one or more processors are configured to encode the motion information and further configured to:

generate a prediction block for the current block using the motion information;

calculate a residual block for the current block representing differences between the current block and the prediction block; and

encode the residual block.

23. The device of claim 13 , further comprising a display configured to display the video data.

24. The device of claim 13 , further comprising a camera configured to capture the video data.

25. The device of claim 13 , wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.

26. The device of claim 13 , wherein the device comprises at least one of:

an integrated circuit;

a microprocessor; or

a wireless communication device.

27. A non-transitory computer-readable storage medium having stored thereon instructions that, when executed, cause a processor to:

construct a motion vector predictor candidate list for a current block of video data, the motion vector predictor candidate list identifying one or more blocks that are non-adjacent to the current block, each of the non-adjacent blocks being in a coding tree unit (CTU) including the current block or a line buffer including the current block, wherein the instructions that cause the processor to construct the motion vector predictor candidate list comprise instructions that cause the processor to exclude motion information of any blocks that are outside of the CTU and the line buffer from the motion vector predictor candidate list;

select a motion vector predictor from one of the blocks that is non-adjacent to the current block and in the motion vector predictor candidate list; and

code motion information of the current block using the motion vector predictor.

28. A device for coding video data, the device comprising:

means for constructing a motion vector predictor candidate list for a current block of video data, the motion vector predictor candidate list identifying one or more blocks that are non-adjacent to the current block, each of the non-adjacent blocks being in a coding tree unit (CTU) including the current block or a line buffer including the current block, wherein the means for constructing the motion vector predictor candidate list comprises means for excluding motion information of any blocks that are outside of the CTU and the line buffer from the motion vector predictor candidate list;

means for selecting a motion vector predictor from one of the blocks that is non-adjacent to the current block and in the motion vector predictor candidate list; and

means for coding motion information of the current block using the motion vector predictor.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2019
From: CHAO, YUNG-HSUAN; CHIEN, WEI-JUNG; KARCZEWICZ, MARTA
To: QUALCOMM INCORPORATED
Reel/Frame 050204/0022 →
Continuity (2)
Provisional Application 62692388 · Jun 29, 2018
Related Publication 20200007889A1 · Jan 2, 2020
Cited By (1)
US 12,382,018