IP Library Granted Patent US 7,379,956
Granted Patent B2
US 7,379,956 · App. 10/427,556 · Granted May 27, 2008

Encoding and decoding data arrays

Assignee: Apple Inc.
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 7,379,956
App. No.
10/427,556
Granted
May 27, 2008
Kind
B2
Abstract

Some embodiments of the invention provide a method of performing a Discrete Cosine Transform (“DCT”) encoding or decoding coefficients of a data array by (1) multiplying the coefficients by a scalar value before the encoding or decoding, and then (2) dividing the encoded or decoded coefficients by the scalar value. When used in conjunction with fixed-point arithmetic, this method increases the precision of the encoded and decoded results. In addition, some embodiments provide a method of performing a two-dimensional (2D) Inverse Discrete Cosine Transform (“iDCT”). This method splits a pre-multiplication operation of the iDCT into two or more separate stages. When used in conjunction with fixed-point arithmetic, this splitting increases the precision of the decoded results of the iDCT.

Claims (28)

1. A method comprising:

decoding an encoded video stream that has been encoded according to a two-dimensional (2D) transform encoding operation that is separable into two one-dimensional (1D) transform operations, the encoded video stream comprising a plurality of encoded values for a plurality of encoded video images, said decoding comprising:

parsing encoded values out of the data stream and creating a two-dimensional data array that stores the encoded values in a particular scan order, wherein the values in the created data array are encoded in both dimensions of the array;

multiplying each value in the data array by a scalar value, wherein the data array is an array of data values from a video image;

performing a first 1D inverse transform to the data array resulting from the multiplying;

transposing the data array resulting from the first 1D inverse transform;

performing a second 1D inverse transform to the data array resulting from the transposing; and

dividing by the scalar value each value in the data array resulting from the second 1D inverse transform to produce a data array comprising decoded values, the data array comprising decoded values being produced without a second transposing step.

2. The method of claim 1 , wherein the particular scan order is a transposed zig-zag scan order.

3. The method of claim 1 , wherein each of the plurality of the video images comprises one or more macroblocks.

4. The method of claim 3 , wherein each macroblock comprises sub-sections of luminance and chrominance blocks.

5. The method of claim 3 , wherein each macroblock is a block of 16 by 16 pixels.

6. The method of claim 1 , wherein the data array is an 8 by 8 pixel image block.

7. The method of claim 1 , wherein the data array is an n by m pixel image block, wherein n and m are integers.

8. A method comprising:

encoding a video image stored as a data array of coefficients, said encoding based on a two-dimensional (2D) transform operation that is separable into two one-dimensional (1D) transform operations, said encoding comprising:

multiplying each coefficient in the data array by a scalar value;

performing a first 1D transform on the data array resulting from the multiplying;

transposing the data array resulting from the first 1D transform;

performing a second 1D transform on the data array resulting from the transposing;

dividing by the scalar value each coefficient in the data array resulting from the second 1D transform; and

without performing another transposing step, generating a data stream based on the coefficients from the data array resulting from the dividing, wherein the data stream comprises an encoding of said video image.

9. The method of claim 8 further comprising, after performing the second 1D transform and before the dividing, performing a post-multiplication of the each coefficient in the data array resulting from the second 1D transform.

10. The method of claim 8 , wherein the video image comprises one or more macroblocks.

11. The method of claim 10 , wherein each macroblock comprises sub-sections of luminance and chrominance blocks.

12. The method of claim 10 , wherein each macroblock is a block of 16 by 16 pixels.

13. The method of claim 8 , wherein the data array is an 8 by 8 pixel image block.

14. The method of claim 8 , wherein the data array is an n by m pixel image block, wherein n and m are integers.

Assignments (2)
CHANGE OF NAME Recorded Feb 9, 2009
From: APPLE COMPUTER, INC.
To: APPLE INC.
Reel/Frame 022228/0434 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 30, 2003
From: KUMAR, ROGER; HANDLEY, MAYNARD; PUN, THOMAS; NIE, XIAOCHUN; WU, HSI-JUNG
To: APPLE COMPUTER, INC.
Reel/Frame 014052/0882 →
Continuity (2)
Provisional Application 6039615600 · Jul 14, 2002
Related Publication 20040010528A1 · Jan 15, 2004