IP Library Granted Patent US 11,095,904
Granted Patent B2
US 11,095,904 · App. 16/911,190 · Granted Aug 17, 2021

Selection of motion vector precision

Inventors: Gary J. Sullivan (Bellevue, WA); You Zhou (Sammamish, WA); Chih-Lung Lin (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
H04N19/174H04N19/105H04N19/109H04N19/136H04N19/139H04N19/142H04N19/147H04N19/17H04N19/177H04N19/179H04N19/52H04N19/521H04N19/523
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 11,095,904
App. No.
16/911,190
Granted
Aug 17, 2021
Kind
B2
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 (51)

1. In a computer system, a method comprising:

encoding frames of a video sequence, thereby producing encoded data, wherein the encoding the frames of the video sequence includes:

encoding an indicator in a first-layer syntax structure that applies for at least one of the frames of the video sequence, the indicator indicating:

whether or not motion vector (“MV”) precision is adaptively selected for units of the at least one of the frames; and

if the MV precision for the units of the at least one of the frames is not adaptively selected, whether the MV precision for the units of the at least one of the frames is fractional-sample precision or integer-sample precision; and

if the MV precision for the units of the at least one of the frames is adaptively selected, for each of the units, setting a flag in a second-layer syntax structure for the unit, the flag indicating whether MV precision for the unit is fractional-sample precision or integer-sample precision; and

outputting the encoded data as part of a bitstream, the encoded data including the encoded indicator in the first-layer syntax structure and, if the MV precision for the units of the at least one of the frames is adaptively selected, for each of the units, the flag in the second-layer syntax structure for the unit that indicates the MV precision for the unit.

2. The method of claim 1 , wherein the first-layer syntax structure is a sequence-layer syntax structure, wherein the units are frames, and wherein the second-layer syntax structure is a picture-layer syntax structure.

3. The method of claim 1 , wherein the first-layer syntax structure is a sequence parameter set, wherein the units are slices, and wherein the second-layer syntax structure is a slice-header-layer syntax structure.

4. The method of claim 1 , wherein, for the indicator:

a first possible value indicates that the MV precision for the units of the at least one of the frames is not adaptively selected and further indicates that the MV precision for the units of the at least one of the frames is fractional-sample precision;

a second possible value indicates that the MV precision for the units of the at least one of the frames is not adaptively selected and further indicates that the MV precision for the units of the at least one of the frames is integer-sample precision; and

a third possible value indicates that the MV precision for the units of the at least one of the frames is adaptively selected.

5. The method of claim 1 , wherein, for a given unit of the units, if the flag for the given unit is not present in the bitstream, the flag for the given unit is inferred to have a value equal to the indicator.

6. The method of claim 1 , wherein the encoding the indicator uses two bits in the first-layer syntax structure.

7. The method of claim 1 , wherein the encoding the indicator includes entropy coding a two-bit value for the first-layer syntax structure.

8. The method of claim 1 , wherein the fractional-sample precision is quarter-sample precision.

9. The method of claim 1 , wherein the indicator is based on source of the frames of the video sequence, measurement of a performance heuristic, or historical data.

10. A computer system comprising memory and one or more processing units, 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; and

decoding the encoded data to reconstruct the frames of the video sequence, including:

determining an indicator using a first-layer syntax structure that applies for at least one of the frames of the video sequence, the indicator indicating:

whether or not motion vector (“MV”) precision is adaptively selected for units of the at least one of the frames; and

if the MV precision for the units of the at least one of the frames is not adaptively selected, whether the MV precision for the units of the at least one of the frames is fractional-sample precision or integer-sample precision;

determining, based on the indicator, whether or not the MV precision for the units of the at least one of the frames is adaptively selected;

if the MV precision for the units of the at least one of the frames is not adaptively selected, for each of the units, determining, based on the indicator, whether MV precision for the unit is fractional-sample precision or integer-sample precision; and

if the MV precision for the units of the at least one of the frames is adaptively selected, for each of the units, determining, based on a flag in a second-layer syntax structure for the unit, whether the MV precision for the unit is fractional-sample precision or integer-sample precision.

11. The computer system of claim 10 , wherein the first-layer syntax structure is a sequence-layer syntax structure, wherein the units are frames, and wherein the second-layer syntax structure is a picture-layer syntax structure.

12. The computer system of claim 10 , wherein the first-layer syntax structure is a sequence parameter set, wherein the units are slices, and wherein the second-layer syntax structure is a slice-header-layer syntax structure.

13. The computer system of claim 10 , wherein, for the indicator:

a first possible value indicates that the MV precision for the units of the at least one of the frames is not adaptively selected and further indicates that the MV precision for the units of the at least one of the frames is fractional-sample precision;

a second possible value indicates that the MV precision for the units of the at least one of the frames is not adaptively selected and further indicates that the MV precision for the units of the at least one of the frames is integer-sample precision; and

a third possible value indicates that the MV precision for the units of the at least one of the frames is adaptively selected.

14. The computer system of claim 10 , wherein, for a given unit of the units, if the flag for the given unit is not present in the bitstream, the flag for the given unit is inferred to have a value equal to the indicator.

15. The computer system of claim 10 , wherein the determining the indicator uses two bits from the first-layer syntax structure.

16. The computer system of claim 10 , wherein the determining the indicator includes entropy decoding an entropy-coded two-bit value from the first-layer syntax structure.

17. The computer system of claim 10 , wherein the fractional-sample precision is quarter-sample precision.

18. 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, the encoded data including:

an indicator, encoded in a first-layer syntax structure that applies for at least one of the frames of the video sequence, indicating:

whether or not motion vector (“MV”) precision is adaptively selected for units of the at least one of the frames; and

if the MV precision for the units of the at least one of the frames is not adaptively selected, whether the MV precision for the units of the at least one of the frames is fractional-sample precision or integer-sample precision; and

if the MV precision for the units of the at least one of the frames is adaptively selected, for each of the units, a flag in a second-layer syntax structure for the unit, the flag indicating whether MV precision for the unit is fractional-sample precision or integer-sample precision;

wherein the encoded data results from encoding of the frames of the video sequence according to operations comprising:

determining whether or not the MV precision for the units of the at least one of the frames is adaptively selected;

if the MV precision for the units of the at least one of the frames is not adaptively selected, for each of the units, determining whether the MV precision for the unit is fractional- sample precision or integer-sample precision;

encoding the indicator in the first-layer syntax structure; and

if the MV precision for the units of the at least one of the frames is adaptively selected, for each of the units:

determining whether the MV precision for the unit is fractional-sample precision or integer-sample precision; and

setting the flag in the second-layer syntax structure for the unit.

19. The one or more non-volatile memory or storage devices of claim 18 , wherein the first-layer syntax structure is a sequence-layer syntax structure, wherein the units are frames, and wherein the second-layer syntax structure is a picture-layer syntax structure.

20. The one or more non-volatile memory or storage devices of claim 18 , wherein the first-layer syntax structure is a sequence parameter set, wherein the units are slices, and wherein the second-layer syntax structure is a slice-header-layer syntax structure.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 17, 2020
From: SULLIVAN, GARY J.; ZHOU, YOU; LIN, CHIH-LUNG
To: MICROSOFT CORPORATION
Reel/Frame 053244/0817 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 17, 2020
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 053244/0873 →
Continuity (8)
Continuation 16779354 · Jan 31, 2020
Continuation 16422227 · May 24, 2019
Continuation 15865648 · Jan 9, 2018
Continuation 15688669 · Aug 28, 2017
Continuation 14513132 · Oct 13, 2014
Provisional Application 61934574 · Jan 31, 2014
Provisional Application 61925090 · Jan 8, 2014
Related Publication 20200329247A1 · Oct 15, 2020
Cited By (1)
US 12,368,884