# US 10,873,748 B2 · Storage of high precision motion vectors in video coding

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

- Number: US 10,873,748 B2
- Document ID: US10873748B2
- Status: Granted
- Kind: B2
- Application number: 16/408,217
- Filed: 2019-05-09
- Published: 2019-11-14
- Granted: 2020-12-22
- Earliest claimed: 2018-05-12
- Assignees: QUALCOMM Incorporated
- Applicants: QUALCOMM Incorporated
- Inventors: Yi-Wen Chen; Wei-Jung Chien; Marta Karczewicz
- Web page: https://patentgrep.com/patent/US10873748B2

## CPC

- H04N 19/139: Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
- H04N 19/513: Processing of motion vectors
- H04N 19/176: the region being a block, e.g. a macroblock
- H04N 19/33: in the spatial domain
- H04N 19/523: with sub-pixel accuracy
- H04N 19/60: using transform coding
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

A video encoder and a video decoder are configured to store and modify motion vectors to an effective range based on one or more of a motion vector precision and a motion vector bit-depth. For example, a video decoder may determine a first motion vector for a first block of video data, scale the first motion vector to produce a scaled motion vector, determine a first effective motion vector range based on a first bit-depth of the first motion vector and a first motion vector precision of the first motion vector, clip the scaled motion vector to a first effective motion vector range to produce a first clipped motion vector, and decode the first block of video data using the first clipped motion vector.

## Claims

### Claim 1

An apparatus configured to decode video data, the apparatus comprising:
a memory configured to store video data; and
one or more processors in communication with the memory, the one or more processors implemented in circuitry, the one or more processors configured to:
determine a motion vector for a block of video data;
perform a motion vector refinement process for the motion vector to produce a refined motion vector;
determine an effective motion vector range based on a bit-depth of the motion vector and a motion vector precision of the motion vector;
clip the refined motion vector to the effective motion vector range to produce a clipped motion vector; and
decode the block of video data using the clipped motion vector.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein to determine the effective motion vector range, the one or more processors are further configured to determine the effective motion vector range as [−2(N-P-1), 2(N-P-1)−(1-1/2(P))], where N is the bit-depth of the motion vector, and P represents the motion vector precision of the motion vector.

### Claim 3 (depends on 1)

The apparatus of claim 1, wherein the one or more processors are further configured to:
determine the motion vector precision of the motion vector;
determine the bit-depth of the motion vector based on the motion vector precision; and
store the motion vector in the memory at the determined bit-depth.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein the bit-depth of the motion vector is 18 bits, and wherein the motion vector precision of the motion vector is 1/16-pel motion vector precision.

### Claim 5 (depends on 1)

The apparatus of claim 1, wherein to decode the block of video data using the clipped motion vector, the one or more processors are configured to:
decode the block of video data using the clipped motion vector and a bilateral matching mode.

### Claim 6 (depends on 1)

The apparatus of claim 1, further comprising:
a display configured to display the decoded block of video data for display.

### Claim 7

A method for decoding video data, the method comprising:
determining a motion vector for a block of video data;
performing a motion vector refinement process for the motion vector to produce a refined motion vector;
determining an effective motion vector range based on a bit-depth of the motion vector and a motion vector precision of the motion vector;
clipping the refined motion vector to the effective motion vector range to produce a clipped motion; and
decoding the block of video data using the clipped motion vector.

### Claim 8 (depends on 7)

The method of claim 7, wherein determining the effective motion vector range comprises determining the effective motion vector range as [−2(N-P-1), 2(N-P-1)−(1½(P))], where N is the bit-depth of the motion vector, and P represents the motion vector precision of the motion vector.

### Claim 9 (depends on 7)

The method of claim 7, the method further comprising:
determining the motion vector precision of the motion vector;
determining the bit-depth of the motion vector based on the motion vector precision; and
storing the motion vector in the memory at the determined bit-depth.

### Claim 10 (depends on 7)

The method of claim 7, wherein the bit-depth of the motion vector is 18 bits, and wherein the motion vector precision of the motion vector is 1/16-pel motion vector precision.

### Claim 11 (depends on 7)

The method of claim 7, wherein decoding the block of video data using the clipped motion vector comprises:
decoding the block of video data using the clipped motion vector and a bilateral matching mode.

### Claim 12 (depends on 7)

The method of claim 7, the method further comprising:
displaying the decoded block of video data for display.

### Claim 13

A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors configured to decode video data to:
determine a motion vector for a block of video data;
perform a motion vector refinement process for the motion vector to produce a refined motion vector;
determine an effective motion vector range based on a bit-depth of the motion vector and a motion vector precision of the motion vector;
clip the refined motion vector to the effective motion vector range to produce a clipped motion vector; and
decode the block of video data using the clipped motion vector.

### Claim 14 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein to determine the effective motion vector range, the instructions further cause the one or more processors to determine the effective motion vector range as [−2(N-P-1), 2(N-P-1)−(1½(P))], where N is the bit-depth of the motion vector, and P represents the motion vector precision of the motion vector.

### Claim 15 (depends on 13)

The non-transitory computer-readable storage medium of claim 13, wherein to decode the block of video data using the clipped motion vector, the instructions further cause the one or more processors to:
decode the block of video data using the clipped motion vector and a bilateral matching mode.

### Claim 16

An apparatus configured to encode video data, the apparatus comprising:
a memory configured to store video data; and
one or more processors in communication with the memory, the one or more processors implemented in circuitry, the one or more processors configured to:
determine a motion vector for a block of video data;
perform a motion vector refinement process for the motion vector to produce a refined motion vector;
determine an effective motion vector range based on a bit-depth of the motion vector and a motion vector precision of the motion vector;
clip the refined motion vector to the effective motion vector range to produce a clipped motion vector; and
encode the block of video data using the clipped motion vector.

### Claim 17 (depends on 16)

The apparatus of claim 16, wherein to determine the effective motion vector range, the one or more processors are further configured to determine the effective motion vector range as [−2(N-P-1), 2(N-P-1)−(1½(P))], where N is the bit-depth of the motion vector, and P represents the motion vector precision of the motion vector.

### Claim 18 (depends on 16)

The apparatus of claim 16, wherein the one or more processors are further configured to:
determine the motion vector precision of the motion vector;
determine the bit-depth of the motion vector based on the motion vector precision; and
store the motion vector in the memory at the determined bit-depth.

### Claim 19 (depends on 16)

The apparatus of claim 16, wherein the bit-depth of the motion vector is 18 bits, and wherein the motion vector precision of the motion vector is 1/16-pel motion vector precision.

### Claim 20 (depends on 16)

The apparatus of claim 16, wherein to encode the block of video data using the clipped motion vector, the one or more processors are configured to:
encode the block of video data using the clipped motion vector and a bilateral matching mode.

### Claim 21 (depends on 16)

The apparatus of claim 16, further comprising:
a camera configured to capture the first block of video data.
