CA2502004C

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

Abstract

A method and apparatus for performing motion estimation in a digital video system is disclosed (Fig.1). Specifically, the present invention discloses a system that quickly calculates estimated motion vectors in a very efficient manner (Fig.1, item 160). 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 (Fig.1, items 150, 160). This step scales up a numerator for a ratio (Fig.1, item 120). Next, the system determines a scaled ratio by divi ding that scaled numerator by a second first display time difference between the 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 (Fig.1, item 180).

CA2502004C, drawing sheet 1
Sheet 1 of 5

Term

Term ended

Expired 7 August 2023, 3.1 years ago.

  1. Priority
  2. Filed
  3. Granted
  4. Expired
  5. Today

91 claims: 13 independent, 78 dependent

  1. 1
    CA 02502004 2011-07-15 The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:1. For a sequence of video pictures comprising a first video picture, a second video picture, and a third video picture, a 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 an order value for a video picture specifies a display order for the video picture;and computing a motion vector for the second video picture based on the scaling value and a motion vector for the third video picture, wherein computing the motion vector for the second video picture comprises performing a bit shifting operation.
  2. 20
    For a sequence of video pictures comprising a first video picture, a second video picture, and a third video picture, a method comprising:computing a scaling value that is based on (i) a power of two value, (ii) a first order difference value between an order value for the third video picture and an order value for the first video picture, and (iii) a second order difference value between an order value for the second video picture and the order value for the first video picture, wherein the order value for the second video picture is encoded in a slice header associated with the second video picture;and computing a motion vector for the second video picture based on the scaling value and a motion vector for the third video picture, wherein computing the motion vector for the second video picture comprises performing a bit shifting operation.
  3. 26
    For a sequence of video pictures comprising a first video picture, a second video picture, and a third video picture, a 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 an order value for a video picture is encoded in a slice header of a bitstream associated with the video picture;and computing a particular motion vector for the second video picture based on the scaling value and a motion vector for the third video picture, wherein computing the particular motion vector comprises performing a division by a power of two value.
  4. 32
    A method comprising:computing a scaling value based on (i) a first order difference value between an order value for a first video picture and an order value for a second video picture, and (ii) a particular value that is based on a power of two value and a second order difference value between an order value for a third video picture and the order value for the second video picture, wherein the order value for the second video picture is encoded in a slice header of a bitstream associated with the second video picture;and using said scaling value to compute a motion vector for the second video picture by performing a bit shifting operation.
  5. 38
    For a sequence of video pictures comprising a first video picture, a second video picture, and a third video picture, 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 the order value for the second picture is encoded in a bitstream more than once;and computing a motion vector for the second video picture by multiplying the scaling value by a motion vector for the third video picture and performing a division operation that is based on a power of two value.
  6. 43
    The method of 38, wherein the order value is compressed in the bitstream using variable length coding.
  7. 45
    For a sequence of video pictures comprising a first video picture, a second video picture, and a third video picture, a 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, (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, and (iii) directly proportional to a power of two value, wherein an order value for a video picture specifies a display order for the video picture;and computing a motion vector for the second video picture by multiplying the scaling value and a motion vector for the third video picture and performing a division operation based on said power of two value.
  8. 52
    For a sequence of video pictures comprising a first video picture, a second video picture, and a third video picture, a 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, wherein the order value for the second video picture specifies a display order for the second video picture;computing a particular motion vector for the second video picture based on the scaling value and a motion vector for the third video picture, wherein computing the particular motion vector for the second video picture comprises performing a bit shifting operation.
  9. 59
    For a sequence of video pictures comprising a first video picture, a second video picture, and a third video picture, a method comprising:subject to a truncation operation, 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 the order value for the second video picture is encoded in a slice header of a bitstream associated with the second video picture;and computing a motion vector for the second video picture by multiplying the scaling value by a motion vector for the third video picture and performing a bit shifting operation.
  10. 65
    For a sequence of video pictures comprising a first video picture, a second video picture, and a third video picture, 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 the order value for the second video picture is encoded in a bitstream by using an exponent of a power of two integer;and computing a motion vector for the second video picture by multiplying the scaling value by a motion vector for the third video picture and performing a bit shifting operation.
  11. 70
    The method of 69, wherein the order value is compressed in the bitstream using variable length coding. -34CA 02502004 2011-07-15
  12. 72
    A method of decoding a bitstream comprising encoded first, second, and third video pictures, the method comprising:receiving an integer value representing an exponent of a particular power of two integer;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 the order value for the second video picture is derived from the particular power of two integer;computing a motion vector for the second video picture by multiplying the scaling value by a motion vector for the third video picture and performing a bit shifting operation;and decoding the second video picture by using the computed motion vector.
  13. 81
    A method for encoding a sequence of video pictures comprising a first video picture, a second video picture, and a third video picture, 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;computing a particular motion vector for the second video picture based on the scaling value and a motion vector for the third video picture, wherein computing the particular motion vector for the second video picture comprises performing a bit shifting operation;encoding the second video picture in a bitstream by using the computed motion vector;and encoding the order value for the second video picture in the bitstream by using an exponent of a power of integer.