IP Library › Granted Patent US 10,911,760
Granted Patent B2
US 10,911,760 · App. 16/653,448 · Granted Feb 2, 2021

Method and apparatus for history-based motion vector prediction

Inventors: Xiaozhong Xu (State College, PA); Xiang Li (Los Gatos, CA); Shan Liu (San Jose, CA)
Assignee: Tencent America LLC
H04N19/139H04N19/105H04N19/176H04N19/43H04N19/436H04N19/58
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,911,760
App. No.
16/653,448
Filed
Oct 15, 2019
Granted
Feb 2, 2021
Kind
B2
Art Unit
2488
USPC
375/240.16
Abstract

A method includes acquiring a current picture segmented into a plurality of units and divided into a plurality of tiles, each unit divided into a plurality of blocks, the plurality of blocks in each unit being arranged as a first grid, and the plurality of units being arranged as a second grid in each tile. The method includes decoding, for one of the units in a first tile, a first current block from the plurality of blocks using an entry from a first HMVP buffer associated with the first tile. The method includes updating the first HMVP buffer with a motion vector of the decoded first current block. The method includes in response to determining that the first current block is located in a first column and a first row of a first unit of a row in the second grid of the first tile, resetting the first HMVP buffer.

Claims (61)

1. A method of video decoding for a decoder, the method comprising:

acquiring a current picture from a coded video bitstream, the current picture being segmented into a plurality of units and divided into a plurality of tiles, each unit divided into a plurality of blocks, the plurality of blocks in each unit being arranged as a first grid, and the plurality of units being arranged as a second grid in each tile of the plurality of tiles in the current picture;

decoding, for one of the units in a first tile of the plurality of tiles, a first current block from the plurality of blocks using an entry from a first history motion vector (HMVP) buffer associated with the first tile;

updating the first HMVP buffer with a motion vector of the decoded first current block;

determining a location of the first current block in the first tile of the plurality of tiles; and

in response to determining that the first current block is located in a first column and a first row of a first unit of a row of the units in the second grid of the first tile, resetting the first HMVP buffer.

2. The method according to claim 1 , further comprising:

in response to determining that the first current block is located in a first column and a first row of a first unit of a row of the units in the second grid of the first tile, copying contents of a first row buffer to the first HMVP buffer.

3. The method according to claim 2 , further comprising:

in response to determining that the first current block is located in a last column and a last row of the first unit of the row of the units in the second grid of the first tile, copying contents of the first HMVP buffer into the first row buffer.

4. The method of claim 1 , further comprising:

decoding, for one of the units in a second tile of the plurality of tiles, a second current block from the plurality of blocks using an entry from a second history motion vector (HMVP) buffer associated with the second tile;

updating the second HMVP buffer with a motion vector of the decoded second current block;

determining a location of the second current block in the second tile of the plurality of tiles; and

in response to determining that the second current block is located in a first column and a first row of a first unit of a row of the units in the second grid of the second tile, resetting the second HMVP buffer,

wherein decoding of each unit in the first tile is performed in parallel with decoding of each unit in the second tile.

5. The method according to claim 4 , further comprising:

in response to determining that the second current block is located in a first column and a first row of a first unit of a row of the units in the second grid of the second tile, copying contents of a second row buffer to the second HMVP buffer.

6. The method according to claim 5 , further comprising:

in response to determining that the current block is located in a last column and a last row of the first unit of the row of the units in the second grid of the second tile, copying contents of the second HMVP buffer into the second row buffer.

7. The method according to claim 1 , wherein the first and second HMVP buffers are first-in-first-out (FIFO) buffers, and wherein the updating the first and second HMVP buffers with the motion vectors includes storing the motion vectors at a last entry of the first and second HMVP buffers and deleting a first entry of the first and second HMVP buffers.

8. The method according to claim 1 , wherein each of the units is a coding tree unit (CTU).

9. A video decoder for performing a video decoding process, the video decoder method comprising:

processing circuitry configured to:

acquire a current picture from a coded video bitstream, the current picture being segmented into a plurality of units and divided into a plurality of tiles, each unit divided into a plurality of blocks, the plurality of blocks in each unit being arranged as a first grid, and the plurality of units being arranged as a second grid in each tile of the plurality of tiles in the current picture,

decode, for one of the units in a first tile of the plurality of tiles, a first current block from the plurality of blocks using an entry from a first history motion vector (HMVP) buffer associated with the first tile,

update the first HMVP buffer with a motion vector of the decoded first current block,

determine a location of the first current block in the first tile of the plurality of tiles, and

in response to a determination that the first current block is located in a first column and a first row of a first unit of a row of the units in the second grid of the first tile, reset the first HMVP buffer.

10. The video decoder according to claim 9 , wherein the processing circuitry is further configured to:

in response to a determination that the first current block is located in a first column and a first row of a first unit of a row of the units in the second grid of the first tile, copy contents of a first row buffer to the first HMVP buffer.

11. The video decoder according to claim 10 , wherein the processing circuitry is further configured to:

in response to a determination that the first current block is located in a last column and a last row of the first unit of the row of the units in the second grid of the first tile, copy contents of the first HMVP buffer into the first row buffer.

12. The video decoder of claim 9 , wherein the processing circuitry is further configured to:

decode, for one of the units in a second tile of the plurality of tiles, a second current block from the plurality of blocks using an entry from a second history motion vector (HMVP) buffer associated with the second tile,

update the second HMVP buffer with a motion vector of the decoded second current block,

determine a location of the second current block in the second tile of the plurality of tiles; and

in response to a determination that the second current block is located in a first column and a first row of a first unit of a row of the units in the second grid of the second tile, reset the second HMVP buffer,

wherein the processing circuitry is further configured to decode each unit in the first tile in parallel with each unit in the second tile.

13. The video decoder according to claim 12 , wherein the processing circuitry is further configured to:

in response to determination that the second current block is located in a first column and a first row of a first unit of a row of the units in the second grid of the second tile, copy contents of a second row buffer to the second HMVP buffer.

14. The video decoder according to claim 13 , wherein the processing circuitry is further configured to:

in response to a determination that the current block is located in a last column and a last row of the first unit of the row of the units in the second grid of the second tile, copy contents of the second HMVP buffer into the second row buffer.

15. The video decoder according to claim 9 , wherein the first and second HMVP buffers are first-in-first-out (FIFO) buffers, and wherein the updating the first and second HMVP buffers with the motion vectors includes storing the motion vectors at a last entry of the first and second HMVP buffers and deleting a first entry of the first and second HMVP buffers.

16. The video decoder according to claim 9 , wherein each of the units is a coding tree unit (CTU).

17. A non-transitory computer readable medium having instructions stored therein, which when executed by a processor in a video decoder causes the processor to execute a method comprising:

acquiring a current picture from a coded video bitstream, the current picture being segmented into a plurality of units and divided into a plurality of tiles, each unit divided into a plurality of blocks, the plurality of blocks in each unit being arranged as a first grid, and the plurality of units being arranged as a second grid in each tile of the plurality of tiles in the current picture;

decoding, for one of the units in a first tile of the plurality of tiles, a first current block from the plurality of blocks using an entry from a first history motion vector (HMVP) buffer associated with the first tile;

updating the first HMVP buffer with a motion vector of the decoded first current block;

determining a location of the first current block in the first tile of the plurality of tiles; and

in response to determining that the first current block is located in a first column and a first row of a first unit of a row of the units in the second grid of the first tile, resetting the first HMVP buffer.

18. The non-transitory computer readable medium according to claim 17 , the method further comprising:

in response to determining that the first current block is located in a first column and a first row of a first unit of a row of the units in the second grid of the first tile, copying contents of a first row buffer to the first HMVP buffer.

19. The non-transitory computer readable medium according to claim 18 , the method further comprising:

in response to determining that the first current block is located in a last column and a last row of the first unit of the row of the units in the second grid of the first tile, copying contents of the first HMVP buffer into the first row buffer.

20. The non-transitory computer readable medium according to claim 17 , further comprising:

decoding, for one of the units in a second tile of the plurality of tiles, a second current block from the plurality of blocks using an entry from a second history motion vector (HMVP) buffer associated with the second tile;

updating the second HMVP buffer with a motion vector of the decoded second current block;

determining a location of the second current block in the second tile of the plurality of tiles; and

in response to determining that the second current block is located in a first column and a first row of a first unit of a row of the units in the second grid of the second tile, resetting the second HMVP buffer,

wherein decoding of each unit in the first tile is performed in parallel with decoding of each unit in the second tile.

Continuity (3)
Continuation 16203364 · Nov 28, 2018
Provisional Application 62698559 · Jul 16, 2018
Related Publication 20200045319A1 · Feb 6, 2020