# US 10,313,680 B2 · Selection of motion vector precision

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

- Number: US 10,313,680 B2
- Document ID: US10313680B2
- Status: Granted
- Kind: B2
- Application number: 15/865,648
- Filed: 2018-01-09
- Published: 2018-05-10
- Granted: 2019-06-04
- Earliest claimed: 2014-01-08
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Gary J. Sullivan; You Zhou; Chih-Lung Lin
- Web page: https://patentgrep.com/patent/US10313680B2

## CPC

- H04N 19/174: the region being a slice, e.g. a line of blocks or a group of blocks
- 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/109: among a plurality of temporal predictive coding modes
- H04N 19/136: Incoming video signal characteristics or properties
- H04N 19/139: Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
- H04N 19/142: Detection of scene cut or scene change
- H04N 19/147: according to rate distortion criteria (rate-distortion as a criterion for motion estimation H04N19/567)
- H04N 19/17: the unit being an image region, e.g. an object
- H04N 19/177: the unit being a group of pictures [GOP]
- H04N 19/179: the unit being a scene or a shot
- H04N 19/52: by predictive encoding
- H04N 19/521: {for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors}
- H04N 19/523: with sub-pixel accuracy
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

Approaches to selection of motion vector (“MV”) precision during video encoding are presented. These approaches can facilitate compression that is effective in terms of rate-distortion performance and/or computational efficiency. For example, a video encoder determines an MV precision for a unit of video from among multiple MV precisions, which include one or more fractional-sample MV precisions and integer-sample MV precision. The video encoder can identify a set of MV values having a fractional-sample MV precision, then select the MV precision for the unit based at least in part on prevalence of MV values (within the set) having a fractional part of zero. Or, the video encoder can perform rate-distortion analysis, where the rate-distortion analysis is biased towards the integer-sample MV precision. Or, the video encoder can collect information about the video and select the MV precision for the unit based at least in part on the collected information.

## Claims

### Claim 1

A computer system comprising one or more processing units and memory, wherein the computer system implements a video decoder configured to perform operations comprising:
receiving encoded data for frames of a video sequence as part of a bitstream, each of the frames including one or more regions, the bitstream including:
an indicator in a header that applies for at least one of the frames of the video sequence, the indicator indicating:
whether or not motion vector (“MV”) precision for the at least one of the frames is controlled on a region-by-region basis; and
if the MV precision for the at least one of the frames is not controlled on a region-by-region basis, whether the MV precision for the at least one of the frames is quarter-sample precision or integer-sample precision; and
if the MV precision for the at least one of the frames is controlled on a region-by-region basis, for each region of the one or more regions of the at least one of the frames, a flag in a header for the region, the flag indicating whether MV precision for the region is quarter-sample precision or integer-sample precision; and
decoding the encoded data to reconstruct the frames of the video sequence.

### Claim 2 (depends on 1)

The computer system of claim 1, wherein the header that applies for the at least one of the frames is a sequence parameter set or picture parameter set, wherein the regions are slices, and wherein the header for the region is a slice header.

### Claim 3 (depends on 1)

The computer system of claim 1, wherein, for the indicator:
a first possible value indicates that the MV precision for the at least one of the frames is not controlled on a region-by-region basis and further indicates that the MV precision for the at least one of the frames is quarter-sample precision;
a second possible value indicates that the MV precision for the at least one of the frames is not controlled on a region-by-region basis and further indicates that the MV precision for the at least one of the frames is integer-sample precision; and
a third possible value indicates that the MV precision for the at least one of the frames is controlled on a region-by-region basis.

### Claim 4 (depends on 1)

The computer system of claim 1, wherein, for a given region of the one or more regions of the at least one of the frames, if the flag for the given region is not present in the bitstream, the flag for the given region is inferred to have a value equal to the indicator.

### Claim 5 (depends on 1)

The computer system of claim 1, wherein the indicator is a two-bit value.

### Claim 6 (depends on 1)

The computer system of claim 1, wherein interpretation of MV values changes depending on whether the MV precision is quarter-sample precision or integer-sample precision, the MV values representing integer-sample offsets if the MV precision is integer-sample precision, and the MV values representing quarter-sample offsets if the MV precision is quarter-sample precision.

### Claim 7

One or more non-volatile memory or storage devices having stored therein encoded data for frames of a video sequence as part of a bitstream, each of the frames including one or more regions, the bitstream including an indicator in a header that applies for at least one of the frames of the video sequence, the indicator indicating (a) whether or not motion vector (“MV”) precision for the at least one of the frames is controlled on a region-by-region basis, and (b) if the MV precision for the at least one of the frames is not controlled on a region-by-region basis, whether the MV precision for the at least one of the frames is quarter-sample precision or integer-sample precision, the bitstream further including, if the MV precision for the at least one of the frames is controlled on a region-by-region basis, for each region of the one or more regions of the at least one of the frames, a flag in a header for the region, the flag indicating whether MV precision for the region is quarter-sample precision or integer-sample precision, wherein the encoded data is configured to facilitate reconstruction of the frames of the video sequence by operations that include:
receiving the encoded data; and
decoding the encoded data to reconstruct the frames of the video sequence.

### Claim 8 (depends on 7)

The one or more non-volatile memory or storage devices of claim 7, wherein the header that applies for the at least one of the frames is a sequence parameter set or picture parameter set, wherein the regions are slices, and wherein the header for the region is a slice header.

### Claim 9 (depends on 7)

The one or more non-volatile memory or storage devices of claim 7, wherein, for the indicator:
a first possible value indicates that the MV precision for the at least one of the frames is not controlled on a region-by-region basis and further indicates that the MV precision for the at least one of the frames is quarter-sample precision;
a second possible value indicates that the MV precision for the at least one of the frames is not controlled on a region-by-region basis and further indicates that the MV precision for the at least one of the frames is integer-sample precision; and
a third possible value indicates that the MV precision for the at least one of the frames is controlled on a region-by-region basis.

### Claim 10 (depends on 7)

The one or more non-volatile memory or storage devices of claim 7, wherein, for a given region of the one or more regions of the at least one of the frames, if the flag for the given region is not present in the bitstream, the flag for the given region is inferred to have a value equal to the indicator during the decoding.

### Claim 11 (depends on 7)

The one or more non-volatile memory or storage devices of claim 7, wherein the indicator is a two-bit value.

### Claim 12 (depends on 7)

The one or more non-volatile memory or storage devices of claim 7, wherein interpretation of MV values changes during the decoding depending on whether the MV precision is quarter-sample precision or integer-sample precision, the MV values representing integer-sample offsets if the MV precision is integer-sample precision, and the MV values representing quarter-sample offsets if the MV precision is quarter-sample precision.

### Claim 13

One or more non-volatile memory or storage devices having stored therein computer-executable instructions for causing one or more processing units, when programmed thereby, to perform operations comprising:
encoding frames of a video sequence to produce encoded data, each of the frames including one or more regions, wherein the encoding includes:
setting a value of an indicator in a header that applies for at least one of the frames of the video sequence, the indicator indicating:
whether or not motion vector (“MV”) precision for the at least one of the frames is controlled on a region-by-region basis; and
if the MV precision for the at least one of the frames is not controlled on a region-by-region basis, whether the MV precision for the at least one of the frames is quarter-sample precision or integer-sample precision; and
if the MV precision for the at least one of the frames is controlled on a region-by-region basis, for each region of the one or more regions of the at least one of the frames, setting a value of a flag in a header for the region, the flag indicating whether MV precision for the region is quarter-sample precision or integer-sample precision; and
outputting the encoded data as part of a bitstream, the bitstream including the indicator and, if the MV precision for the at least one of the frames is controlled on a region-by-region basis, a flag for each region of the one or more regions of the at least one of the frames that indicates the MV precision for the region.

### Claim 14 (depends on 13)

The one or more non-volatile memory or storage devices of claim 13, wherein the header that applies for the at least one of the frames is a sequence parameter set or picture parameter set, wherein the regions are slices, and wherein the header for the region is a slice header.

### Claim 15 (depends on 13)

The one or more non-volatile memory or storage devices of claim 13, wherein, for the indicator:
a first possible value indicates that the MV precision for the at least one of the frames is not controlled on a region-by-region basis and further indicates that the MV precision for the at least one of the frames is quarter-sample precision;
a second possible value indicates that the MV precision for the at least one of the frames is not controlled on a region-by-region basis and further indicates that the MV precision for the at least one of the frames is integer-sample precision; and
a third possible value indicates that the MV precision for the at least one of the frames is controlled on a region-by-region basis.

### Claim 16 (depends on 13)

The one or more non-volatile memory or storage devices of claim 13, wherein, for a given region of the one or more regions of the at least one of the frames, if the flag for the given region is not present in the bitstream, the flag for the given region is inferred to have a value equal to the indicator during the encoding.

### Claim 17 (depends on 13)

The one or more non-volatile memory or storage devices of claim 13, wherein the indicator is a two-bit value.

### Claim 18 (depends on 13)

The one or more non-volatile memory or storage devices of claim 13, wherein interpretation of MV values changes during the encoding depending on whether the MV precision is quarter-sample precision or integer-sample precision, the MV values representing integer-sample offsets if the MV precision is integer-sample precision, and the MV values representing quarter-sample offsets if the MV precision is quarter-sample precision.

### Claim 19 (depends on 13)

The one or more non-volatile memory or storage devices of claim 13, wherein the setting the value of the indicator is based on source of the frames of the video sequence.

### Claim 20 (depends on 13)

The one or more non-volatile memory or storage devices of claim 13, wherein the setting the value of the indicator is based on measurement of a performance heuristic or historical data.
