# US 10,123,037 B2 · Method and apparatus for variable accuracy inter-picture timing specification for digital video encoding with reduced requirements for division operations

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,123,037 B2
- Document ID: US10123037B2
- Status: Granted
- Kind: B2
- Application number: 15/377,885
- Filed: 2016-12-13
- Published: 2017-03-30
- Granted: 2018-11-06
- Earliest claimed: 2002-07-24
- Assignees: Apple Inc.
- Applicants: Apple Inc.
- Inventors: Barin Geoffry Haskell; David William Singer; Adriana Dumitras; Atul Puri
- Web page: https://patentgrep.com/patent/US10123037B2

## CPC

- H04N 19/52: by predictive encoding
- H04N 19/107: between spatial and temporal predictive coding, e.g. picture refresh
- H04N 19/124: Quantisation
- H04N 19/13: Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
- H04N 19/132: Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
- H04N 19/137: Motion inside a coding unit, e.g. average field, frame or block difference
- H04N 19/139: Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
- H04N 19/146: Data rate or code amount at the encoder output
- H04N 19/15: by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
- H04N 19/152: by measuring the fullness of the transmission buffer
- H04N 19/159: Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
- H04N 19/176: the region being a block, e.g. a macroblock
- H04N 19/196: being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters (processing of motion vectors H04N19/513)
- H04N 19/40: using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
- H04N 19/46: Embedding additional information in the video signal during the compression process (H04N19/517, H04N19/68, H04N19/70 take precedence)
- H04N 19/463: by compressing encoding parameters before transmission
- H04N 19/48: using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data (motion estimation in a transform domain H04N19/547; processing of decoded motion vectors H04N19/513)
- H04N 19/51: Motion estimation or motion compensation
- H04N 19/513: Processing of motion vectors
- H04N 19/577: Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
- H04N 19/587: involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence
- H04N 19/61: in combination with predictive coding
- H04N 19/625: using discrete cosine transform [DCT]
- H04N 19/172: the region being a picture, frame or field
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## 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

### Claim 1

For a stream comprising first, second, and third video pictures, a method comprising:
computing a scaling value that is based on (i) a particular 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;
computing a motion vector associated with the second video picture by bit-shifting a product of the scaling value and a motion vector associated with the third video picture, wherein a number of bits shifted by said bit-shifting is based on said particular power of two value; and
decoding the second video picture by using the computed motion vector.

### Claim 2 (depends on 1)

The method of claim 1, wherein an order value for a video picture is representative of a temporal relationship for the video picture with respect to another video picture.

### Claim 3 (depends on 1)

The method of claim 1, wherein an order value for a video picture is representative of a position for the video picture in a sequence of video pictures.

### Claim 4 (depends on 3)

The method of claim 3, wherein the sequence is a sequence for outputting video pictures.

### Claim 5 (depends on 1)

The method of claim 1, wherein the scaling value is directly proportional to the second order difference value.

### Claim 6 (depends on 1)

The method of claim 1, wherein the scaling value is inversely proportional to the first order difference value.

### Claim 7 (depends on 1)

The method of claim 1, wherein the order value for the second video picture is derived from a value stored in a slice header that is associated with the second video picture.

### Claim 8 (depends on 1)

The method of claim 1, wherein computing the motion vector associated with the second video picture comprises performing a mathematical operation that is equivalent to performing a multiplication and a division by said particular power of two value.
