IP Library Granted Patent US 12,368,884
Granted Patent B2
US 12,368,884 · App. 17/994,997 · Granted Jul 22, 2025

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 12,368,884
App. No.
17/994,997
Granted
Jul 22, 2025
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 (51)

1. One or more non-transitory computer-readable media having stored thereon computer-executable instructions for causing one or more processing units, when programmed thereby, to perform operations 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, wherein the determining the indicator uses two bits from 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 one or more computer-readable media of claim 1 , wherein the second level of bitstream syntax is frame level.

3. The one or more computer-readable media 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 one or more computer-readable media of claim 1 , wherein the second level of bitstream syntax is slice level.

5. The one or more computer-readable media 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 one or more computer-readable media of claim 1 , wherein the fractional-sample precision is a quarter-sample precision.

7. The one or more computer-readable media 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 operations further comprising, during the decoding, resizing at least one of the frames horizontally or vertically.

8. The one or more computer-readable media 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 one or more computer-readable media 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 one or more computer-readable media of claim 1 , wherein, for a given frame or region among the multiple frames or regions, if the flag for the 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 one or more computer-readable media 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.

12. One or more non-transitory computer-readable media having stored thereon computer-executable instructions for causing a computer system, when programmed thereby, to perform encoding operations to produce 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;

wherein the encoded data is produced by encoding of the at least part of the video sequence according to the encoding operations, and wherein the encoding operations include:

encoding the indicator in the header at the first level of bitstream syntax, wherein the encoding the indicator uses two bits 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 the 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 the flag for the frame or region in the header at the second level of bitstream syntax for the frame or region.

13. The one or more computer-readable media of claim 12 , 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.

14. The one or more computer-readable media of claim 12 , 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.

15. In a computer system that implements a video encoder, a method comprising:

encoding at least part of 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 encoding the at least part of the video sequence includes:

encoding an indicator in a header at the first level of bitstream syntax, wherein the encoding the indicator uses two bits in the 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

outputting 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.

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

17. The method of claim 15 , 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.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 14, 2022
From: ZHOU, YOU; SILKIN, SERGEY; SABLIN, SERGEY; LIN, CHIH-LUNG; LEE, MING-CHIEH; SULLIVAN, GARY J.
To: MICROSOFT CORPORATION
Reel/Frame 062082/0533 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 14, 2022
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 062082/0575 →
Continuity (6)
Continuation 16779264 · Jan 31, 2020
Continuation 15711627 · Sep 21, 2017
Continuation 14530625 · Oct 31, 2014
Provisional Application 61934506 · Jan 31, 2014
Provisional Application 61925108 · Jan 8, 2014
Related Publication 20230086944A1 · Mar 23, 2023
References Cited (96)
US 5436665A · Ueno · 1995 [cited by examiner]
US 5532747A · Yoon · 1996 [cited by examiner]
US 5768537A · Butter · 1998 [cited by examiner]
US 6301299B1 · Sita · 2001 [cited by examiner]
US 6330344B1 · Kondo · 2001 [cited by examiner]
US 6466624B1 · Fogg · 2002 [cited by examiner]
US 6473462B1 · Chevance · 2002 [cited by examiner]
US 6611624B1 · Zhang · 2003 [cited by examiner]
US 7027507B2 · Wu · 2006 [cited by examiner]
US 7110459B2 · Srinivasan · 2006 [cited by applicant]
US 7116831B2 · Mukerjee et al. · 2006 [cited by applicant]
US 7224731B2 · Mehrotra · 2007 [cited by examiner]
US 7305034B2 · Srinivasan · 2007 [cited by applicant]
US 7620109B2 · Srinivasan · 2009 [cited by examiner]
US 7831088B2 · Frakes · 2010 [cited by examiner]
US 7956930B2 · Sullivan · 2011 [cited by examiner]
US 8107539B2 · Hannuksela · 2012 [cited by examiner]
US 8130825B2 · Scheuermann · 2012 [cited by examiner]
US 8374248B2 · Cho · 2013 [cited by examiner]
US 8411750B2 · Dane · 2013 [cited by examiner]
US 8498493B1 · Choudhary · 2013 [cited by examiner]
US 8542741B2 · Yokoyama · 2013 [cited by examiner]
US 8582652B2 · Wang · 2013 [cited by examiner]
US 8867620B2 · Sugio · 2014 [cited by examiner]
US 8885722B2 · Sugio · 2014 [cited by examiner]
US 9288505B2 · Chen · 2016 [cited by examiner]
US 9363512B2 · Campbell · 2016 [cited by examiner]
US 9674519B2 · Chen · 2017 [cited by examiner]
US 9749642B2 · Sullivan et al. · 2017 [cited by applicant]
US 9774881B2 · Zhou et al. · 2017 [cited by applicant]
US 9900603B2 · Sullivan et al. · 2018 [cited by applicant]
US 9942560B2 · Silkin et al. · 2018 [cited by applicant]
US 10313680B2 · Sullivan et al. · 2019 [cited by applicant]
US 10587891B2 · Zhou et al. · 2020 [cited by applicant]
US 10681356B2 · Sullivan et al. · 2020 [cited by applicant]
US 10735747B2 · Sullivan et al. · 2020 [cited by applicant]
US 11095904B2 · Sullivan et al. · 2021 [cited by applicant]
US 11546629B2 · Zhou et al. · 2023 [cited by applicant]
US 11638016B2 · Sullivan et al. · 2023 [cited by applicant]
US 20030138047A1 · Orchard · 2003 [cited by examiner]
US 20040139462A1 · Hannuksela · 2004 [cited by examiner]
US 20070183676A1 · Hannuksela · 2007 [cited by examiner]
US 20070223582A1 · Borer · 2007 [cited by examiner]
US 20080130742A1 · Scheuermann · 2008 [cited by examiner]
US 20080137753A1 · He · 2008 [cited by applicant]
US 20080181308A1 · Wang · 2008 [cited by examiner]
US 20090141808A1 · Wong · 2009 [cited by examiner]
US 20090168871A1 · Lu · 2009 [cited by examiner]
US 20100104010A1 · Guo · 2010 [cited by examiner]
US 20110038419A1 · Han · 2011 [cited by applicant]
US 20110176611A1 · Huang · 2011 [cited by examiner]
US 20110194610A1 · Xu · 2011 [cited by examiner]
US 20110243232A1 · Alshina · 2011 [cited by examiner]
US 20110243234A1 · Kondo · 2011 [cited by examiner]
US 20110251431A1 · Hizaler et al. · 2011 [cited by applicant]
US 20120044990A1 · Bivolarsky · 2012 [cited by examiner]
US 20120051427A1 · Parfenov · 2012 [cited by examiner]
US 20120128069A1 · Sato · 2012 [cited by examiner]
US 20120207220A1 · Kim · 2012 [cited by examiner]
US 20120207227A1 · Tsai et al. · 2012 [cited by applicant]
US 20120213284A1 · Chen · 2012 [cited by examiner]
US 20120218473A1 · Xu · 2012 [cited by examiner]
US 20120236115A1 · Zhang · 2012 [cited by examiner]
US 20120314771A1 · Lim · 2012 [cited by examiner]
US 20130003849A1 · Chien et al. · 2013 [cited by applicant]
US 20130115928A1 · Kies · 2013 [cited by examiner]
US 20130182755A1 · Chen · 2013 [cited by examiner]
US 20130188717A1 · Chen · 2013 [cited by examiner]
US 20130188733A1 · Van der Auwera et al. · 2013 [cited by applicant]
US 20130287109A1 · Wang · 2013 [cited by examiner]
US 20130294513A1 · Seregin · 2013 [cited by examiner]
US 20130322538A1 · Seregin · 2013 [cited by examiner]
US 20130329789A1 · Wang · 2013 [cited by examiner]
US 20130336394A1 · Tu · 2013 [cited by examiner]
US 20140010310A1 · Rapaka · 2014 [cited by applicant]
US 20230209070A1 · Sullivan et al. · 2023 [cited by applicant]
JP 2006174014 · 2006 [cited by applicant]
WO WO2013154673 · 2013 [cited by applicant]
Office Action dated Jul. 31, 2023, from Brazilian Patent Application No. BR112016015618-8, 10 pp. [cited by applicant]
Office Action dated Aug. 3, 2023, from Brazilian Patent Application No. BR122022001655-3, 10 pp. [cited by applicant]
Examiner's Report dated Aug. 8, 2024, from Canadian Patent Application No. 3,118,603, 3 pp. [cited by applicant]
Guo et al., “Adaptive Motion Vector Resolution with Implicit Signaling,” IEEE Int'l Conf. on Image Processing, pp. 2057-2060 (Sep. 2010). [cited by applicant]
Notice of Acceptance dated Dec. 7, 2018, from Australian Patent Application No. 2014376190, 3 pp. [cited by applicant]
Notice of Allowance dated Mar. 4, 2024, from U.S. Appl. No. 18/179,166, 10 pp. [cited by applicant]
Notice of Allowance dated May 20, 2024, from U.S. Appl. No. 18/179,166, 9 pp. [cited by applicant]
Notice of Allowance dated Jul. 29, 2024, from Korean Patent Application No. 10-2023-7028185, 8 pp. [cited by applicant]
Office Action dated Dec. 14, 2023, from Korean Patent Application No. 10-2023-7028185, 9 pp. [cited by applicant]
Office Action dated Feb. 26, 2024, from Brazilian Patent Application No. BR112016015618-8, 8 pp. [cited by applicant]
Decision of Refusal dated Jun. 20, 2023, from Japanese Patent Application No. 2021-158778, 7 pp. [cited by applicant]
Examiner's Report dated Mar. 29, 2023, from Canadian Patent Application No. 3,118,603, 4 pp. [cited by applicant]
Extended European Search Report dated Apr. 5, 2023, from European Patent Application No. 23152981.9, 15 pp. [cited by applicant]
Notice of Allowance dated Dec. 14, 2022, from U.S. Appl. No. 17/366,887, 9 pp. [cited by applicant]
Notice of Allowance dated Feb. 16, 2023, from Korean Patent Application No. 10-2022-7024378, 8 pp. [cited by applicant]
Notice of Allowance dated May 19, 2023, from Korean Patent Application No. 10-2022-7038477, 8 pp. [cited by applicant]
Office Action dated Dec. 8, 2022, from Korean Patent Application No. 10-2022-7038477, 10 pp. [cited by applicant]
Tsai et al., “CE4 Subset3: Slice Common Information Sharing,” JCTVC-E045, 7 pp. (Mar. 2011). [cited by applicant]