IP Library Granted Patent US 11,546,629
Granted Patent B2
US 11,546,629 · App. 16/779,264 · Granted Jan 3, 2023

Representing motion vectors in an encoded bitstream

Inventors: You Zhou (Sammamish, WA); Sergey Silkin (Nacka, SE); Sergey Sablin (Redmond, WA); Chih-Lung Lin (Redmond, WA); Ming-Chieh Lee (Bellevue, WA); Gary J. Sullivan (Bellevue, WA)
Assignee: Microsoft Technology Licensing, LLC
H04N19/523H04N19/43H04N19/513H04N19/52H04N19/70
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,546,629
App. No.
16/779,264
Granted
Jan 3, 2023
Kind
B2
Abstract

A format for use in encoding moving image data, comprising: a sequence of frames including plurality of the frames in which at least a region is encoded using motion estimation; a respective set of motion vector values representing motion vectors of the motion estimation for each respective one of these frames or each respective one of one or more regions within each of such frames; and at least one respective indicator associated with each of the respective frames or regions, indicating whether the respective motion vector values of the respective frame or region are encoded at a first resolution or a second resolution.

Claims (54)

1. In a computer system comprising one or more processing units and memory, a method comprising:

receiving encoded data, as part of a bitstream, for at least part of a video sequence, the encoded data including:

an indicator, encoded in a header at a first level of bitstream syntax, the indicator indicating (a) whether or not motion vector (“MV”) precision is controlled at a second level of bitstream syntax lower than the first level of bitstream syntax, and (b) if the MV precision is not controlled at the second level of bitstream syntax, whether the MV precision, being controlled at the first level of bitstream syntax, is an integer-sample precision or a fractional-sample precision for the video sequence, wherein the first level of bitstream syntax is sequence level, and wherein the second level of bitstream syntax is frame level or slice level, the indicator having one of three possible values, the three possible values including:

a first possible value indicating that the MV precision is not controlled at the second level of bitstream syntax and that the MV precision, being controlled at the first level of bitstream syntax, is the fractional-sample precision;

a second possible value indicating that the MV precision is not controlled at the second level of bitstream syntax and that the MV precision, being controlled at the first level of bitstream syntax, is the integer-sample precision; and

a third possible value indicating that the MV precision is controlled at the second level of bitstream syntax; and

if the MV precision is controlled at the second level of bitstream syntax, for each of multiple frames or regions of the video sequence, a flag for the frame or region in a header at the second level of bitstream syntax for the frame or region, the flag indicating for the frame or region whether the MV precision is the integer-sample precision or the fractional-sample precision; and

decoding the encoded data, wherein the decoding includes:

determining the indicator using the header at the first level of bitstream syntax;

based on the indicator, determining whether or not the MV precision is controlled at the second level of bitstream syntax;

if the MV precision is not controlled at the second level of bitstream syntax, for the multiple frames or regions, respectively, determining, based on the indicator, whether the MV precision for the multiple frames or regions, respectively, is the integer-sample precision or the fractional-sample precision; and

if the MV precision is controlled at the second level of bitstream syntax, for each of the multiple frames or regions, determining, based on the flag for the frame or region in the header at the second level of bitstream syntax for the frame or region, whether the MV precision for the frame or region is the integer-sample precision or the fractional-sample precision.

2. The method of claim 1 , wherein the second level of bitstream syntax is frame level.

3. The method of claim 1 , wherein the header at the first level of bitstream syntax is a sequence header, and wherein the header at the second level of bitstream syntax is a frame header.

4. The method of claim 1 , wherein the second level of bitstream syntax is slice level.

5. The method of claim 1 , wherein the header at the first level of bitstream syntax is a sequence parameter set, and wherein the header at the second level of bitstream syntax is a slice header.

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

7. The method of claim 1 , wherein the MV precision indicated by the indicator or the flag is for horizontal components of MV values or vertical components of the MV values, the method further comprising, during the decoding, resizing at least one of the frames horizontally or vertically.

8. The method of claim 7 , wherein the horizontal components of the MV values and the vertical components of the MV values have different MV precisions.

9. The method of claim 1 , wherein the decoding further includes, for MV values of a given frame or region among the multiple frames or regions:

if the MV precision for the given frame or region is the integer-sample precision, interpreting the MV values in units of integer samples; and

if the MV precision for the given frame or region is the fractional-sample precision, interpreting the MV values in units of fractional samples.

10. The method of claim 1 , wherein, for a given frame or region among the multiple frames or regions, if the flag for given frame or region is not present in the bitstream, the flag for the given frame or region is inferred to have a value equal to the indicator.

11. The method of claim 1 , wherein the determining the indicator uses two bits from the header at the first level of bitstream syntax.

12. The method of claim 1 , wherein the determining the indicator includes entropy decoding an entropy-coded two-bit value from the header at the first level of bitstream syntax.

13. One or more computer-readable memory devices having stored thereon encoded data, as part of a bitstream, for at least part of a video sequence, the encoded data including:

an indicator, encoded in a header at a first level of bitstream syntax, the indicator indicating (a) whether or not motion vector (“MV”) precision is controlled at a second level of bitstream syntax lower than the first level of bitstream syntax, and (b) if the MV precision is not controlled at the second level of bitstream syntax, whether the MV precision, being controlled at the first level of bitstream syntax, is an integer-sample precision or a fractional-sample precision for the video sequence, wherein the first level of bitstream syntax is sequence level, and wherein the second level of bitstream syntax is frame level or slice level, the indicator having one of three possible e possible values including:

a first possible value indicating that the MV precision is not controlled at the second level of bitstream syntax and that the MV precision, being controlled at the first level of bitstream syntax, is the fractional-sample precision;

a second possible value indicating that the MV precision is not controlled at the second level of bitstream syntax and that the MV precision, being controlled at the first level of bitstream syntax, is the integer-sample precision; and

a third possible value indicating that the MV precision is controlled at the second level of bitstream syntax; and

if the MV precision is controlled at the second level of bitstream syntax, for each of multiple frames or regions of the video sequence, a flag for the frame or region in a header at the second level of bitstream syntax for the frame or region, the flag indicating for the frame or region whether the MV precision is the integer-sample precision or the fractional-sample precision;

wherein the encoded data is organized to facilitate decoding according to operations that include:

determining the indicator using the header at the first level of bitstream syntax;

based on the indicator, determining whether or not the MV precision is controlled at the second level of bitstream syntax;

if the MV precision is not controlled at the second level of bitstream syntax, for the multiple frames or regions, respectively, determining, based on the indicator, whether the MV precision for the multiple frames or regions, respectively, is the integer-sample precision or the fractional-sample precision; and

if the MV precision is controlled at the second level of bitstream syntax, for each of the multiple frames or regions, determining, based on the flag for the frame or region in the header at the second level of bitstream syntax for the frame or region, whether the MV precision for the frame or region is the integer-sample precision or the fractional-sample precision.

14. The one or more computer-readable memory devices of claim 13 , wherein the header at the first level of bitstream syntax is a sequence header, and wherein the header at the second level of bitstream syntax is a frame header.

15. The one or more computer-readable memory devices of claim 13 , wherein the header at the first level of bitstream syntax is a sequence parameter set, and wherein the header at the second level of bitstream syntax is a slice header.

16. An encoder system comprising:

an encoder configured to perform operations to encode at least part a video sequence, thereby producing encoded data, as part of a bitstream, for the at least part of the video sequence, the bitstream having a first level of bitstream syntax and a second level of bitstream syntax lower than the first level of bitstream syntax, wherein the operations include:

encoding an indicator in a header at the first level of bitstream syntax, the indicator indicating (a) whether or not motion vector (“MV”) precision is controlled at the second level of bitstream syntax, and (b) if the MV precision is not controlled at the second level of bitstream syntax, whether the MV precision, being controlled at the first level of bitstream syntax, is an integer-sample precision or a fractional-sample precision for the video sequence, wherein the first level of bitstream syntax is sequence level, and wherein the second level of bitstream syntax is frame level or slice level, the indicator having one of three possible values, the three possible values including:

a first possible value indicating that the MV precision is not controlled at the second level of bitstream syntax and that the MV precision, being controlled at the first level of bitstream syntax, is the fractional-sample precision;

a second possible value indicating that the MV precision is not controlled at the second level of bitstream syntax and that the MV precision, being controlled at the first level of bitstream syntax, is the integer-sample precision; and

a third possible value indicating that the MV precision is controlled at the second level of bitstream syntax; and

if the MV precision is controlled at the second level of bitstream syntax, for each multiple frames or regions of the video sequence:

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

setting a flag for the frame or region in a header at the second level of bitstream syntax for the frame or region, the flag indicating whether the MV precision for the frame or region is the integer-sample precision or the fractional-sample precision; and

an output buffer for storing the encoded data, as part of the bitstream, the encoded data including:

the indicator, encoded in the header at the first level of bitstream syntax; and

if the MV precision is controlled at the second level of bitstream syntax, for each of the multiple frames or regions, the flag for the frame or region in the header at the second level of bitstream syntax for the frame or region.

17. The encoder system of claim 16 , wherein the encoding the indicator uses two bits in the header at the first level of bitstream syntax.

18. The encoder system of claim 16 , wherein the encoding the indicator includes entropy coding a two-bit value for the header at the first level of bitstream syntax.

19. The encoder system of claim 16 , wherein the frames have a content type, wherein the MV precision is the integer-sample precision if the content type is a screen capture content type, and wherein the MV precision is the fractional-sample precision if the content type is a camera video content type.

20. The one or more computer-readable memory devices of claim 13 , wherein the determining the indicator uses two bits from the header at the first level of bitstream syntax.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 1, 2020
From: ZHOU, YOU; SILKIN, SERGEY; SABLIN, SERGEY; LIN, CHIH-LUNG; LEE, MING-CHIEH; SULLIVAN, GARY J.
To: MICROSOFT CORPORATION
Reel/Frame 052552/0272 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 1, 2020
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 052552/0306 →