IP Library › Granted Patent US 8,917,768
Granted Patent B2
US 8,917,768 · App. 12/275,782 · Granted Dec 23, 2014

Coding of motion vector information

Inventors: Sridhar Srinivasan (Seattle, WA); Pohsiang Hsu (Redmond, WA); Thomas W. Holcomb (Bothell, WA); Kunal Mukerjee (Redmond, WA); Bruce Chih-Lung Lin (Redmond, WA)
Assignee: Microsoft Corporation
H04N19/00684H04N7/50G06K9/36G06K9/46H04N19/00733H04N19/00793H04N19/00951
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 8,917,768
App. No.
12/275,782
Granted
Dec 23, 2014
Kind
B2
Abstract

Techniques and tools for encoding and decoding motion vector information for video images are described. For example, a video encoder yields an extended motion vector code by jointly coding, for a set of pixels, a switch code, motion vector information, and a terminal symbol indicating whether subsequent data is encoded for the set of pixels. In another aspect, an encoder/decoder selects motion vector predictors for macroblocks. In another aspect, a video encoder/decoder uses hybrid motion vector prediction. In another aspect, a video encoder/decoder signals a motion vector mode for a predicted image. In another aspect, a video decoder decodes a set of pixels by receiving an extended motion vector code, which reflects joint encoding of motion information together with intra/inter-coding information and a terminal symbol. The decoder determines whether subsequent data exists for the set of pixels based on e.g., the terminal symbol.

Claims (44)

1. A computer-implemented method of video decoding using a video decoder, the method comprising:

receiving encoded data in a bit stream for video; and

with the video decoder, decoding video using at least some of the encoded data, wherein the decoding comprises computing a motion vector predictor for a current macroblock in a picture, including:

calculating an initial predictor for the current macroblock based on one or more neighbor motion vector candidates of one or more neighboring macroblocks;

comparing the initial predictor with at least one of the one or more neighbor motion vector candidates; and

based at least in part on results of the comparing, using one of the one or more neighbor motion vector candidates as the motion vector predictor for the current macroblock, comprising:

receiving a hybrid motion indicator bit signaled in the bit stream; and

using the indicator bit to select which of the one or more neighbor motion vector candidates to use as the motion vector predictor for the current macroblock;

wherein receiving the indicator bit is contingent upon the results of the comparing indicating use of one of the one or more neighbor motion vector candidates as the motion vector predictor for the current macroblock;

wherein the macroblock is skipped, wherein the skipped macroblock uses the one of the one or more neighbor motion vector candidates as the motion vector predictor for the skipped macroblock, and wherein the skipped macroblock has no residual information.

2. The method of claim 1 wherein, for each of the at least one of the one or more neighbor motion vector candidates, the comparing the initial predictor with the neighbor motion vector candidate comprises:

computing absolute values of differences between the initial predictor and the neighbor motion vector candidate; and

comparing a sum of the absolute values of the differences to a threshold.

3. The method of claim 2 further comprising:

computing absolute values of components of the initial predictor; and

comparing a sum of the absolute values of the components of the initial predictor to the threshold.

4. The method of claim 1 wherein the calculating the initial predictor comprises computing the component-wise median of the one or more neighbor motion vector candidates.

5. One or more tangible storage media, wherein the one or more tangible storage media are one or more of volatile memory, non-volatile memory, optical storage media, and magnetic storage media, having stored thereon computer software instructions for causing a computer system programmed thereby to perform a method comprising:

encoding video, wherein the encoding produces encoded data, and wherein the encoding comprises computing a motion vector predictor for a current macroblock in a picture, including:

calculating an initial predictor for the current macroblock based on one or more neighbor motion vector candidates of one or more neighboring macroblocks;

comparing the initial predictor with at least one of the one or more neighbor motion vector candidates; and

based at least in part on results of the comparing, determining whether to:

(a) use the initial predictor as the motion vector predictor for the current macroblock; or

(b) use one of the one or more neighbor motion vector candidates as the motion vector predictor for the current macroblock; and

signaling the encoded data as part of a bit stream for the video;

wherein one of the one or more neighbor motion vector candidates is used as the motion vector predictor for the current macroblock, the method further comprising:

selecting which of the one or more neighbor motion vector candidates to use as the motion vector predictor for the current macroblock; and

signaling a hybrid motion indicator in the bit stream to indicate the selected one of the one or more neighbor motion vector candidates, wherein the hybrid motion indicator is signaled as a bit in the bit stream to indicate the selected one of the one or more neighbor motion vector candidates; and

wherein signaling the hybrid motion indicator is contingent upon the results of the comparing indicating use of one of the one or more neighbor motion vector candidates as the motion vector predictor for the current macroblock; and

wherein the current macroblock is skipped, wherein the skipped macroblock uses one of the one or more neighbor motion vector candidates as the motion vector predictor for the skipped macroblock, and wherein the skipped macroblock has no residual information.

6. The one or more storage media of claim 5 wherein, for each of the at least one of the one or more neighbor motion vector candidates, the comparing the initial predictor with the neighbor motion vector candidate comprises:

computing absolute values of differences between the initial predictor and the neighbor motion vector candidate; and

comparing a sum of the absolute values of the differences to a threshold.

7. A computing device that implements a video decoder, the computing device comprising a processing unit and memory, the computing device adapted to perform a method of video decoding, the method comprising:

receiving encoded data in a bit stream for video; and

with the video decoder, decoding video using at least some of the encoded data, wherein the decoding comprises computing a motion vector predictor for a current macroblock in a picture, including:

calculating an initial predictor for the current macroblock based on one or more neighbor motion vector candidates of one or more neighboring macroblocks;

comparing the initial predictor with at least one of the one or more neighbor motion vector candidates; and

based at least in part on results of the comparing, selecting one of the one or more neighbor motion vector candidates as the motion vector predictor for the current macroblock, comprising:

receiving a hybrid motion indicator bit signaled in the bit stream; and

using the indicator bit to select which of the one or more neighbor motion vector candidates to use as the motion vector predictor for the current macroblock;

wherein receiving the indicator bit is contingent upon the results of the comparing indicating selection of one of the one or more neighbor motion vector candidates as the motion vector predictor for the current macroblock;

wherein the current macroblock is skipped, wherein the skipped macroblock uses the selected one of the one or more neighbor motion vector candidates as the motion vector predictor for the skipped macroblock, and wherein the skipped macroblock has no residual information.

8. The computing device of claim 7 wherein the hybrid motion indicator bit is present in the bit stream for some of the macroblocks of the picture, but absent from the bit stream for other macroblocks of the picture.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034564/0001 →
Continuity (2)
Division 10622841 · Jul 18, 2003
Related Publication 20090074073A1 · Mar 19, 2009