IP Library Granted Patent US 8,938,008
Granted Patent B2
US 8,938,008 · App. 13/161,480 · Granted Jan 20, 2015

Method and apparatus for variable accuracy inter-picture timing specification for digital video encoding with reduced requirements for division operations

Inventors: Barin Geoffry Haskell (Mountain View, CA); David William Singer (San Francisco, CA); Adriana Dumitras (Santa Clara, CA); Atul Puri (Redmond, WA)
Assignee: Apple Inc.
H04N19/00551H04N19/00369H04N19/00587H04N19/00733H04N19/0003H04N19/00278H04N19/00218H04N19/00781H04N19/0009H04N19/00684H04N19/00472H04N19/00721H04N19/00545H04N19/00563H04N19/00193H04N19/00187H04N7/50
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,938,008
App. No.
13/161,480
Granted
Jan 20, 2015
Kind
B2
Abstract

A method and apparatus for performing motion estimation in a digital video system is disclosed. Specifically, the present invention discloses a system that quickly calculates estimated motion vectors in a very efficient manner. In one embodiment, a first multiplicand is determined by multiplying a first display time difference between a first video picture and a second video picture by a power of two scale value. This step scales up a numerator for a ratio. Next, the system determines a scaled ratio by dividing that scaled numerator by a second first display time difference between said second video picture and a third video picture. The scaled ratio is then stored calculating motion vector estimations. By storing the scaled ratio, all the estimated motion vectors can be calculated quickly with good precision since the scaled ratio saves significant bits and reducing the scale is performed by simple shifts.

Claims (25)

1. A method for encoding a sequence of video pictures comprising first, second, and third video pictures, the method comprising:

computing a scaling value that is based on (i) a first order difference value between an order value for the third video picture and an order value for the first video picture, and (ii) a second order difference value between an order value for the second video picture and the order value for the first video picture, wherein computing the scaling value is subject to a truncation operation;

computing a motion vector for the second video picture based on the scaling value and a motion vector for the third video picture;

encoding the second video picture by using the computed motion vector; and

storing the encoded second video picture in a bitstream.

2. The method of claim 1 , wherein computing the scaling value is for performing an interpolation operation.

3. The method of claim 1 , wherein an order value for a particular video picture specifies a display order for the particular video picture.

4. The method of claim 1 , wherein computing the motion vector for the second video picture comprises performing a bit shifting operation.

5. The method of claim 4 , wherein the bit shifting operation shifts a binary value by 8 bit positions.

6. The method of claim 1 , wherein computing the motion vector for the second video picture comprises multiplying the scaling value with the motion vector for the third video picture.

7. The method of claim 1 , wherein computing the motion vector for the second video picture comprises performing a division operation by a power of two value.

8. The method of claim 7 , wherein the power of two value is two hundred and fifty-six (256).

9. The method of claim 1 , wherein the the computed scaling value is for encoding a plurality of macroblocks in the second video picture.

10. A method for encoding a sequence of video pictures comprising first, second, and third video pictures, the method comprising:

computing a scaling value that is (i) inversely proportional to a first order difference value between an order value for the third video picture and an order value for the first video picture and (ii) directly proportional to a second order difference value between an order value for the second video picture and the order value for the first video picture, wherein computing the scaling value is subject to a truncation operation;

computing a motion vector for the second video picture by multiplying the scaling value by a motion vector for the third video picture;

encoding the second video picture by using the computed motion vector; and

storing the encoded second video picture in a bitstream.

11. The method of claim 10 , wherein computing the scaling value is for performing an interpolation operation.

12. The method of claim 10 , wherein an order value for a particular video picture specifies a display order for the particular video picture.

13. The method of claim 10 , wherein computing the motion vector for the second video picture further comprises performing a bit shifting operation.

14. The method of claim 13 , wherein the bit shifting operation shifts a binary value by 8 bit positions.

15. The method of claim 10 , wherein computing the motion vector for the second video picture comprises performing a division operation by a power of two value.

16. The method of claim 15 , wherein the power of two value is two hundred and fifty-six (256).

17. The method of claim 10 , wherein the computed scaling value is for encoding a plurality of macroblocks in the second video picture.

Continuity (5)
Continuation 11621977 · Jan 10, 2007
Continuation 10792514 · Mar 2, 2004
Continuation 10313773 · Dec 6, 2002
Provisional Application 60398625 · Jul 24, 2002
Related Publication 20110243239A1 · Oct 6, 2011