# US 11,122,288 B2 · Spatio-temporal motion vector prediction patterns for video coding

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,122,288 B2
- Document ID: US11122288B2
- Status: Granted
- Kind: B2
- Application number: 16/704,827
- Filed: 2019-12-05
- Published: 2020-06-11
- Granted: 2021-09-14
- Earliest claimed: 2018-12-06
- Assignees: QUALCOMM Incorporated
- Applicants: QUALCOMM Incorporated
- Inventors: Dmytro Rusanovskyy; Nikolay Mikhaylovich Shlyakhov; Wei-Jung Chien; Marta Karczewicz
- Web page: https://patentgrep.com/patent/US11122288B2

## CPC

- H04N 19/105: Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
- H04N 19/52: by predictive encoding
- H04N 19/109: among a plurality of temporal predictive coding modes
- H04N 19/124: Quantisation
- H04N 19/13: Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
- H04N 19/167: Position within a video image, e.g. region of interest [ROI]
- H04N 19/176: the region being a block, e.g. a macroblock
- H04N 19/593: involving spatial prediction techniques
- H04N 19/61: in combination with predictive coding
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

Techniques are described for constructing motion vector predictor lists based on spatially neighboring blocks and collocated blocks. A method of coding video data includes, for a first block, in a first picture having a left-to-right coding order, constructing a first motion vector predictor list, wherein a first entry in the first motion vector predictor list is based on motion vector information of a left neighboring block to the first block, coding the first block in the first picture based on the first motion vector predictor list, for a second block, in a second picture having a right-to-left coding order, constructing a second motion vector predictor list, wherein a first entry in the second motion vector predictor list is based on motion vector information of a right neighboring block to the second block, and coding the second block in the second picture based on the second motion vector predictor list.

## Claims

### Claim 1

A method of coding video data, the method comprising:
for a first block, in a first picture having a left-to-right coding order, constructing a first motion vector predictor list, wherein a first entry in the first motion vector predictor list is based on motion vector information of a left neighboring block to the first block;
coding the first block in the first picture based on the first motion vector predictor list;
for a second block, in a second picture having a right-to-left coding order, constructing a second motion vector predictor list, wherein a first entry in the second motion vector predictor list is based on motion vector information of a right neighboring block to the second block; and
coding each block in the second picture in the right-to-left coding order, wherein coding each block in the second picture comprises coding the second block in the second picture based on the second motion vector predictor list.

### Claim 2 (depends on 1)

The method of claim 1, wherein constructing the first motion vector predictor list comprises constructing the first motion vector predictor list having motion vector information in the following order based on motion vector information availability:
motion vector information of the left neighboring block;
motion vector information of an above neighboring block;
motion vector information of an above-right neighboring block;
motion vector information of a below-left neighboring block; and
motion vector information of an above-left neighboring block.

### Claim 3 (depends on 1)

The method of claim 1, wherein constructing the second motion vector predictor list comprises constructing the second motion vector predictor list having motion vector information in the following order based on motion vector information availability:
motion vector information of the right neighboring block;
motion vector information of an above neighboring block;
motion vector information of an above-left neighboring block;
motion vector information of a below-right neighboring block; and
motion vector information of an above-right neighboring block.

### Claim 4 (depends on 1)

The method of claim 1, wherein the left neighboring block to the first block comprises a block left of the first block having a bottom boundary that is same as a bottom boundary of the first block, and wherein the right neighboring block comprises a block right of the second block having a bottom boundary that is same as a bottom boundary of the second block.

### Claim 5 (depends on 1)

The method of claim 1, wherein constructing the first motion vector predictor list comprises checking motion vector information for a plurality of spatially neighboring blocks used to construct the first motion vector predictor list in parallel.

### Claim 6 (depends on 1)

The method of claim 1, wherein constructing the first motion vector predictor list comprises:
determining whether motion vector information for a center collocated block located in a picture other than the first picture is available before determining whether motion vector information in any other collocated block located in the picture other than the first picture is available; and
based on the motion vector information for the center collocated block being available, adding the motion vector information for the center collocated block to the first motion vector predictor list.

### Claim 7 (depends on 1)

The method of claim 1, wherein constructing the first motion vector predictor list comprises:
determining that motion vector information for a center collocated block located in a picture other than the first picture is not available;
subsequent to determining that the motion vector information for the center collocated block is not available, determining whether motion vector information for a bottom collocated block located in the picture other than the first picture is available; and
based on the motion vector information for the bottom collocated block being available, adding the motion vector information for the bottom collocated block to the first motion vector predictor list.

### Claim 8 (depends on 7)

The method of claim 7, wherein a right boundary of the bottom collocated block is in same location in the picture other the first picture as a right boundary of the first block in the first picture.

### Claim 9 (depends on 1)

The method of claim 1, wherein constructing the second motion vector predictor list comprises:
determining that motion vector information for a center collocated block located in a picture other than the second picture is not available;
subsequent to determining that the motion vector information for the center collocated block is not available, determining whether motion vector information for a bottom collocated block located in the picture other than the second picture is available; and
based on the motion vector information for the bottom collocated block being available, adding the motion vector information for the bottom collocated block to the second motion vector predictor list.

### Claim 10 (depends on 9)

The method of claim 9, wherein a left boundary of the bottom collocated block is in same location in the picture other the second picture as a left boundary of the second block in the second picture.

### Claim 11 (depends on 1)

The method of claim 1, wherein constructing the first motion vector predictor list comprises:
determining that motion vector information for a center collocated block located in a picture other than the first picture is not available;
subsequent to determining that the motion vector information for the center collocated block is not available, determining that motion vector information for a bottom collocated block located in the picture other than the first picture is not available;
subsequent to determining that the motion vector information for the bottom collocated block is not available, determining whether motion vector information for a right collocated block located in the picture other than the first picture is available; and
based on the motion vector information for the right collocated block being available, adding the motion vector information for the right collocated block to the first motion vector predictor list.

### Claim 12 (depends on 11)

The method of claim 11, wherein a bottom boundary of the right collocated block is in same location in the picture other the first picture as a bottom boundary of the first block in the first picture.

### Claim 13 (depends on 1)

The method of claim 1, wherein constructing the second motion vector predictor list comprises:
determining that motion vector information for a center collocated block located in a picture other than the second picture is not available;
subsequent to determining that the motion vector information for the center collocated block is not available, determining that motion vector information for a bottom collocated block located in the picture other than the second picture is not available;
subsequent to determining that the motion vector information for the bottom collocated block is not available, determining whether motion vector information for a left collocated block located in the picture other than the second picture is available; and
based on the motion vector information for the left collocated block being available, adding the motion vector information for the left collocated block to the second motion vector predictor list.

### Claim 14 (depends on 13)

The method of claim 13, wherein a bottom boundary of the left collocated block is in same location in the picture other the second picture as a bottom boundary of the second block in the second picture.

### Claim 15 (depends on 1)

The method of claim 1, wherein constructing the first motion vector predictor list comprises constructing the first motion vector predictor list, having a first maximum size, based on the first block having a size greater than a threshold size, the method further comprising:
constructing a third motion vector predictor list, having a second maximum size that is less than the first maximum size, for a third block in the first picture based on the third block having a size less than the threshold size.

### Claim 16 (depends on 15)

The method of claim 15, wherein the first maximum size equals six, wherein the second maximum size equals four, and wherein the threshold size equals N×4 or 4×N, where N is less than or equal to eight.

### Claim 17 (depends on 1)

The method of claim 1, wherein coding the first block in the first picture based on the first motion vector predictor list comprises decoding the first block in the first picture based on the first motion vector predictor list, wherein decoding the first block comprises:
receiving information indicative of an entry in the first motion vector predictor list;
determining a motion vector for the first block based on the entry;
determining a prediction block for the first block based on the motion vector; and
reconstructing the first block based on the prediction block and received information indicative of residual data representing a difference between the prediction block and the first block.

### Claim 18 (depends on 1)

The method of claim 1,
wherein coding the first block in the first picture based on the first motion vector predictor list comprises encoding the first block in the first picture based on the first motion vector predictor list, wherein encoding the first block comprises:
determining a prediction block for the first block;
determining a motion vector for the first block that identifies the prediction block;
determining an entry in the first motion vector predictor list based on the motion vector;
signaling information indicative of the entry; and
signaling information indicative of residual data representing a difference between the first block and the prediction block.

### Claim 19

A device for coding video data, the device comprising:
memory configured to store motion vector information; and
processing circuitry coupled to the memory, wherein the processing circuitry is configured to:
for a first block, in a first picture having a left-to-right coding order, construct a first motion vector predictor list, wherein a first entry in the first motion vector predictor list is based on motion vector information of a left neighboring block to the first block stored in the memory;
code the first block in the first picture based on the first motion vector predictor list;
for a second block, in a second picture having a right-to-left coding order, construct a second motion vector predictor list, wherein a first entry in the second motion vector predictor list is based on motion vector information of a right neighboring block to the second block stored in the memory; and
code each block in the second picture in the right-to-left coding order, wherein to code to each block in the second picture the processing circuitry is configured to code the second block in the second picture based on the second motion vector predictor list.

### Claim 20 (depends on 19)

The device of claim 19, wherein to construct the first motion vector predictor list, the processing circuitry is configured to construct the first motion vector predictor list having motion vector information in the following order based on motion vector information availability:
motion vector information of the left neighboring block;
motion vector information of an above neighboring block;
motion vector information of an above-right neighboring block;
motion vector information of a below-left neighboring block; and
motion vector information of an above-left neighboring block.

### Claim 21 (depends on 19)

The device of claim 19, wherein to construct the second motion vector predictor list, the processing circuitry is configured to construct the second motion vector predictor list having motion vector information in the following order based on motion vector information availability:
motion vector information of the right neighboring block;
motion vector information of an above neighboring block;
motion vector information of an above-left neighboring block;
motion vector information of a below-right neighboring block; and
motion vector information of an above-right neighboring block.

### Claim 22 (depends on 19)

The device of claim 19, wherein the left neighboring block to the first block comprises a block left of the first block having a bottom boundary that is same as a bottom boundary of the first block, and wherein the right neighboring block comprises a block right of the second block having a bottom boundary that is same as a bottom boundary of the second block.

### Claim 23 (depends on 19)

The device of claim 19, wherein to construct the first motion vector predictor list, the processing circuitry is configured to check motion vector information for a plurality of spatially neighboring blocks used to construct the first motion vector predictor list in parallel.

### Claim 24 (depends on 19)

The device of claim 19, wherein to construct the first motion vector predictor list, the processing circuitry is configured to:
determine whether motion vector information for a center collocated block located in a picture other than the first picture is available before determining whether motion vector information in any other collocated block located in the picture other than the first picture is available; and
based on the motion vector information for the center collocated block being available, add the motion vector information for the center collocated block to the first motion vector predictor list.

### Claim 25 (depends on 19)

The device of claim 19, wherein to construct the first motion vector predictor list, the processing circuitry is configured to:
determine that motion vector information for a center collocated block located in a picture other than the first picture is not available;
subsequent to determining that the motion vector information for the center collocated block is not available, determine whether motion vector information for a bottom collocated block located in the picture other than the first picture is available; and
based on the motion vector information for the bottom collocated block being available, add the motion vector information for the bottom collocated block to the first motion vector predictor list,
wherein a right boundary of the bottom collocated block is in same location in the picture other the first picture as a right boundary of the first block in the first picture.

### Claim 26 (depends on 19)

The device of claim 19, wherein to construct the second motion vector predictor list, the processing circuitry is configured to:
determine that motion vector information for a center collocated block located in a picture other than the second picture is not available;
subsequent to determining that the motion vector information for the center collocated block is not available, determine that motion vector information for a bottom collocated block located in the picture other than the second picture is not available;
subsequent to determining that the motion vector information for the bottom collocated block is not available, determine whether motion vector information for a left collocated block located in the picture other than the second picture is available; and
based on the motion vector information for the left collocated block being available, add the motion vector information for the left collocated block to the second motion vector predictor list, wherein a bottom boundary of the left collocated block is in same location in the picture other the second picture as a bottom boundary of the second block in the second picture.

### Claim 27 (depends on 19)

The device of claim 19, wherein to construct the first motion vector predictor list, the processing circuitry is configured to construct the first motion vector predictor list, having a first maximum size, based on the first block having a size greater than a threshold size, and wherein the processing circuitry is configured to:
construct a third motion vector predictor list, having a second maximum size that is less than the first maximum size, for a third block in the first picture based on the third block having a size less than the threshold size.

### Claim 28 (depends on 27)

The device of claim 27, wherein the first maximum size equals six, wherein the second maximum size equals four, and wherein the threshold size equals N×4 or 4×N, where N is less than or equal to eight.

### Claim 29 (depends on 19)

The device of claim 19, wherein the device comprises a wireless communication device.

### Claim 30

A non-transitory computer-readable storage medium storing instructions thereon that when executed cause one or more processors to:
for a first block, in a first picture having a left-to-right coding order, construct a first motion vector predictor list, wherein a first entry in the first motion vector predictor list is based on motion vector information of a left neighboring block to the first block;
code the first block in the first picture based on the first motion vector predictor list;
for a second block, in a second picture having a right-to-left coding order, construct a second motion vector predictor list, wherein a first entry in the second motion vector predictor list is based on motion vector information of a right neighboring block to the second block; and
code each block in the second picture in the right-to-left coding order, wherein to code each block in the second picture the instructions further cause the one or more processors to code the second block in the second picture based on the second motion vector predictor list.
