Efficient Fixed-Point Approximations of Forward and Inverse Discrete Cosine Transforms
First Claim
1. A method comprising:
- scaling each coefficient in an 8×
8 matrix of encoded coefficients by one of a factor A, a factor B, a factor C, a factor D, a factor E, a factor F, a factor G, a factor H, a factor I, or a factor J in order to produce a matrix of scaled coefficients, wherein A=1024,B=1138, C=1730,D=1609,E=1264,F=1922, G=1788,H=2923, I=2718, and J=2528;
using repeated applications of a fixed-point scaled one-dimensional transform to transform the matrix of scaled coefficients into a matrix of transformed coefficients;
right-shifting transformed coefficients in the matrix of transformed coefficients in order to produce a matrix of adjusted coefficients;
wherein each adjusted coefficient in the matrix of adjusted coefficients approximates a corresponding value in a matrix of values that would be produced by applying an ideal two-dimensional inverse discrete cosine transform (“
IDCT”
) to the matrix of encoded coefficients;
displaying an 8×
8 block of pixels, wherein each pixel in the 8×
8 block of pixels includes a pixel component value based on an adjusted coefficient in the matrix of adjusted coefficients.
1 Assignment
0 Petitions
Accused Products
Abstract
Techniques are described to approximate computation of an inverse discrete cosine transform using fixed-point calculations. According to these techniques, matrixes of scaled coefficients are generated by multiplying coefficients in matrixes of encoded coefficients by scale factors. Next, matrixes of biased coefficients are generated by adding a midpoint bias value to a DC coefficient of the matrix of scaled coefficients. Fixed-point arithmetic is then used to apply a transform to the matrixes of biased coefficients. Values in the resulting matrixes are then right-shifted in order to derive matrixes of pixel component values. Matrixes of pixel component values are then combined to create matrixes of pixels. The matrixes of pixels generated by these techniques closely resemble matrixes of pixels decompressed using the ideal inverse discrete cosine transform (“IDCT”).
50 Citations
66 Claims
-
1. A method comprising:
-
scaling each coefficient in an 8×
8 matrix of encoded coefficients by one of a factor A, a factor B, a factor C, a factor D, a factor E, a factor F, a factor G, a factor H, a factor I, or a factor J in order to produce a matrix of scaled coefficients,wherein A=1024,B=1138, C=1730,D=1609,E=1264,F=1922, G=1788,H=2923, I=2718, and J=2528;
using repeated applications of a fixed-point scaled one-dimensional transform to transform the matrix of scaled coefficients into a matrix of transformed coefficients;
right-shifting transformed coefficients in the matrix of transformed coefficients in order to produce a matrix of adjusted coefficients;
wherein each adjusted coefficient in the matrix of adjusted coefficients approximates a corresponding value in a matrix of values that would be produced by applying an ideal two-dimensional inverse discrete cosine transform (“
IDCT”
) to the matrix of encoded coefficients;
displaying an 8×
8 block of pixels, wherein each pixel in the 8×
8 block of pixels includes a pixel component value based on an adjusted coefficient in the matrix of adjusted coefficients. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
2. The method of claim 1, wherein repeatedly applying the fixed-point scaled one-dimensional transform comprises:
-
applying the fixed-point scaled one-dimensional transform to each row vector of the matrix of scaled coefficients to produce a matrix of intermediate coefficients;
applying the fixed-point scaled one-dimensional transform to each column vector of the matrix of intermediate coefficients to produce a matrix of transformed coefficients; and
-
-
3. The method of claim 1, wherein displaying the 8×
- 8 block of pixels comprises displaying the 8×
8 block of pixels as part of a video frame in a video sequence.
- 8 block of pixels comprises displaying the 8×
-
4. The method of claim 1, wherein displaying the 8×
- 8 block of pixels comprises displaying the 8×
8 block of pixels as part of a still image.
- 8 block of pixels comprises displaying the 8×
-
5. The method of claim 1, wherein scaling coefficients in the matrix of coefficients comprises:
-
scaling a coefficient at position [0,0] of the matrix of encoded coefficients by the factor A;
scaling a coefficient at position [0,1 ] of the matrix of encoded coefficients by the factor B;
scaling a coefficient at position [0,2] of the matrix of encoded coefficients by the factor C;
scaling a coefficient at position [0,3] of the matrix of encoded coefficients by the factor D;
scaling a coefficient at position [0,4] of the matrix of encoded coefficients by the factor A;
scaling a coefficient at position [0,5] of the matrix of encoded coefficients by the factor D;
scaling a coefficient at position [0,6] of the matrix of encoded coefficients by the factor C;
scaling a coefficient at position [0,7] of the matrix of encoded coefficients by the factor B;
scaling a coefficient at position [1,0] of the matrix of encoded coefficients by the factor B;
scaling a coefficient at position [1,1 ] of the matrix of encoded coefficients by the factor E;
scaling a coefficient at position [1,2] of the matrix of encoded coefficients by the factor F;
scaling a coefficient at position [1,3] of the matrix of encoded coefficients by the factor G;
scaling a coefficient at position [1,4] of the matrix of encoded coefficients by the factor B;
scaling a coefficient at position [1,5] of the matrix of encoded coefficients by the factor G;
scaling a coefficient at position [1,6] of the matrix of encoded coefficients by the factor F;
scaling a coefficient at position [1,7] of the matrix of encoded coefficients by the factor E;
scaling a coefficient at position [2,0] of the matrix of encoded coefficients by the factor C;
scaling a coefficient at position [2,1] of the matrix of encoded coefficients by the factor F;
scaling a coefficient at position [2,2] of the matrix of encoded coefficients by the factor H;
scaling a coefficient at position [2,3] of the matrix of encoded coefficients by the factor I;
scaling a coefficient at position [2,4] of the matrix of encoded coefficients by the factor C;
scaling a coefficient at position [2,5] of the matrix of encoded coefficients by the factor I;
scaling a coefficient at position [2,6] of the matrix of encoded coefficients by the factor H;
scaling a coefficient at position [2,7] of the matrix of encoded coefficients by the factor F;
scaling a coefficient at position [3,0] of the matrix of encoded coefficients by the factor D;
scaling a coefficient at position [3,1] of the matrix of encoded coefficients by the factor G;
scaling a coefficient at position [3,2] of the matrix of encoded coefficients by the factor I, scaling a coefficient at position [3,3] of the matrix of encoded coefficients by the factor J;
scaling a coefficient at position [3,4] of the matrix of encoded coefficients by the factor D;
scaling a coefficient at position [3,5] of the matrix of encoded coefficients by the factor J, scaling a coefficient at position [3,6] of the matrix of encoded coefficients by the factor I, scaling a coefficient at position [3,7] of the matrix of encoded coefficients by the factor G;
scaling a coefficient at position [4,0] of the matrix of encoded coefficients by the factor A;
scaling a coefficient at position [4,1] of the matrix of encoded coefficients by the factor B;
scaling a coefficient at position [4,2] of the matrix of encoded coefficients by the factor C;
scaling a coefficient at position [4,3] of the matrix of encoded coefficients by the factor D;
scaling a coefficient at position [4,4] of the matrix of encoded coefficients by the factor A;
scaling a coefficient at position [4,5] of the matrix of encoded coefficients by the factor D;
scaling a coefficient at position [4,6] of the matrix of encoded coefficients by the factor C;
scaling a coefficient at position [4,7] of the matrix of encoded coefficients by the factor B;
scaling a coefficient at position [5,0] of the matrix of encoded coefficients by the factor D;
scaling a coefficient at position [5,1] of the matrix of encoded coefficients by the factor G;
scaling a coefficient at position [5,2] of the matrix of encoded coefficients by the factor I, scaling a coefficient at position [5,3] of the matrix of encoded coefficients by the factor J;
scaling a coefficient at position [5,4] of the matrix of encoded coefficients by the factor D;
scaling a coefficient at position [5,5] of the matrix of encoded coefficients by the factor J, scaling a coefficient at position [5,6] of the matrix of encoded coefficients by the factor I, scaling a coefficient at position [5,7] of the matrix of encoded coefficients by the factor G;
scaling a coefficient at position [6,0] of the matrix of encoded coefficients by the factor C;
scaling a coefficient at position [6,1] of the matrix of encoded coefficients by the factor F;
scaling a coefficient at position [6,2] of the matrix of encoded coefficients by the factor H;
scaling a coefficient at position [6,3] of the matrix of encoded coefficients by the factor I;
scaling a coefficient at position [6,4] of the matrix of encoded coefficients by the factor C;
scaling a coefficient at position [6,5] of the matrix of encoded coefficients by the factor I;
scaling a coefficient at position [6,6] of the matrix of encoded coefficients by the factor H;
scaling a coefficient at position [6,7] of the matrix of encoded coefficients by the factor F;
scaling a coefficient at position [7,0] of the matrix of encoded coefficients by the factor B;
scaling a coefficient at position [7,1] of the matrix of encoded coefficients by the factor E;
scaling a coefficient at position [7,2] of the matrix of encoded coefficients by the factor F;
scaling a coefficient at position [7,3] of the matrix of encoded coefficients by the factor G;
scaling a coefficient at position [7,4] of the matrix of encoded coefficients by the factor B;
scaling a coefficient at position [7,5] of the matrix of encoded coefficients by the factor G;
scaling a coefficient at position [7,6] of the matrix of encoded coefficients by the factor F;
scaling a coefficient at position [7,7] of the matrix of encoded coefficients by the factor E.
-
-
6. The method of claim 5, wherein applying the transform to either a row vector or a column vector comprises:
-
calculating a value x0′
by adding x0 and x4;
calculating a value x4′
by adding x0 and −
x4;
calculating a value (x2*α
) by multiplying x2 by a value α
;
calculating a value (x6*β
) by multiplying x6 by a value β
;
calculating a value (x2*β
) by multiplying x2 by the value β
;
calculating a value (x6*α
) by multiplying x6 by a value α
;
calculating a value x2′
by adding (x2*α
) and −
(x6*β
);
calculating a value x6′
by adding (x6*α
) and (x2*β
);
calculating a value x0″
by adding x0′ and
x6′
;
calculating a value x4″
by adding x4′ and
x2′
;
calculating a value x2″
by adding x4′ and
−
x2′
;
calculating a value x6″
by adding x0′ and
−
x6′
;
calculating a value x7′
by adding x1 and −
x7;
calculating a value x1′
by adding x1 and x7;
calculating a value x3′
by multiplying x3 and square root of two;
calculating a value x5′
by multiplying x5 and square root of two;
calculating a value x7″
by adding x7′ and
x5′
;
calculating a value x3″
by adding x1′ and
−
x3′
;
calculating a value x5″
by adding x7′ and
−
x5′
;
calculating a value x1″
by adding x3′ and
x1′
;
calculating a value (x7″
*ε
) by multiplying x7″ and
a value ε
;
calculating a value (x7″
*ξ
) by multiplying x7″ and
a value ξ
;
calculating a value (x3″
*γ
) by multiplying x3″ and
a value γ
;
calculating a value (x3″
*δ
) by multiplying x3″ and
a value δ
;
calculating a value (x5″
*δ
) by multiplying x5″ and
the value δ
;
calculating a value (x5″
*γ
) by multiplying x5″ and
the value γ
;
calculating a value (x1″
*ξ
) by multiplying x1″ and
the value ξ
;
calculating a value (x1″
*ε
) by multiplying x1″ and
the value ε
;
calculating a value x7′
″
by adding (x7″
*ε
) and −
(x1″
*ξ
);
calculating a value x3′
″
by adding (x3″
*γ
) and −
(x5″
*δ
);
calculating a value x5′
″
by adding (x5″
*γ
) and (x3″
*δ
);
calculating a value x1′
″
by adding (x1″
*ε
) and (x7″
*ξ
);
calculating a value X0 by adding x7′
″ and
x0″
;
calculating a value X1 by adding x4″ and
x5′
″
;
calculating a value X2 by adding x2″ and
x3′
″
;
calculating a value X3 by adding x6″ and
x7′
″
;
calculating a value X4 by adding x6″ and
−
x1′
″
;
calculating a value X5 by adding x2″ and
−
x3′
″
;
calculating a value X6 by adding x4″ and
−
x5′
″
; and
calculating a value X7 by adding x0″ and
−
x1′
″
;
wherein x0, x1, x2, x3, x4, x5, x6, x7 are coefficients in a row vector or a column vector, wherein X1, X2, X3, X4, X5, X6, and X7 are output values of the transform; and
wherein α
= 41/128, β
= 99/128, γ
= 113/128, δ
= 719/4096, ε
= 1533/2048, and ξ
=½
.
-
-
7. The method of claim 6, wherein using repeated applications of the fixed-point scaled one-dimensional transform comprises applying the transform to coefficients in one of the row vectors or one of the column vectors without using multiplication or division operations.
-
8. The method of claim 7,
wherein calculating a value (x1*ε - ) by multiplying x1 and the value ε and
wherein calculating the value (x1*ξ
) by x1 and the value ξ
comprises performing the following sequence of arithmetic operations;
calculating a value y1, wherein γ
1=(x1>
>
9)−
x1;
calculating the value (x1*ξ
) by right-shifting x3 by one position; and
calculating the value (x1*ε
) by subtracting γ
1 from (γ
1>
>
2); and
wherein calculating a value (x7*ε
) by multiplying x7 and the value ε and
wherein calculating the value (x7*ξ
) by x7 and the value ξ
comprises performing the following sequence of arithmetic operations;
calculating a value y1′
, wherein γ
1′
=(x7>
>
9)−
x7;
calculating the value (x7*ξ
) by right-shifting x7 by one position; and
calculating the value (x7*ε
) by subtracting y1′
from (y1′
>
>
2); and
wherein calculating a value (x1″
*ε
) by multiplying x1″ and
the value ε and
wherein calculating the value (x1″
*ξ
) by x1″ and
the value ξ
comprises performing the following sequence of arithmetic operations;
calculating a value y1″
, wherein y1″
=(x1″
>
>
9)−
x1″
;
calculating the value (x1″
*ξ
) by right-shifting x1″
by one position; and
calculating the value (x1″
*ε
) by subtracting y1″
from (y1″
>
>
2); and
wherein calculating a value (x7″
*ε
) by multiplying x7″ and
the value ε and
wherein calculating the value (x7″
*ξ
) by x7″ and
the value ξ
comprises performing the following sequence of arithmetic operations;
calculating a value y1′
″
, wherein y1′
″
=(x7″
>
>
9)−
x7″
;
calculating the value (x7″
*ξ
) by right-shifting x7″
by one position; and
calculating the value (x7″
*ε
) by subtracting y1′
″
from (y1′
″
>
>
2).
- ) by multiplying x1 and the value ε and
-
9. The method of claim 7,
wherein calculating a value (x3*γ - ) by multiplying x3 and a value γ and
wherein calculating a value (x3*δ
) by multiplying x3 and a value δ
comprises performing the following sequence of operations;
calculating a value y2, wherein y2=(x3>
>
3)−
(x3>
>
7);
calculating a value y3, wherein y3=y2−
(x3>
>
11);
calculating the value (x3*δ
)=y2+(y3>
>
1); and
calculating the value (x3*γ
) by subtracting y2 from x3; and
wherein calculating a value (x5*δ
) by multiplying x5 and the value δ and
wherein calculating a value (x5*γ
) by multiplying x5 and the value γ
comprises performing the following sequence of operations;
calculating a value y2′
, wherein y2′
=(x5>
>
3)−
(x5>
>
7);
calculating a value y3′
, wherein y3′
=y2′
−
(x5>
>
11);
calculating the value (x5*δ
) by adding y2′ and
(y3′
>
>
1); and
calculating the value (x5*γ
) by subtracting γ
2′
from x5; and
wherein calculating a value (x3″
*γ
) by multiplying x3″ and
a value γ and
wherein calculating a value (x3″
*δ
) by multiplying x3″ and
a value δ
comprises performing the following sequence of operations;
calculating a value y2″
, wherein y2″
=(x3″
>
>
3)−
(x3″
>
>
7);
calculating a value y3″
, wherein y3″
=y2″
−
(x3″
>
>
11);
calculating the value (x3″
*δ
)=y2″
+(y3″
>
>
1); and
calculating the value (x3″
*γ
) by subtracting y2″
from x3″
; and
wherein calculating a value (x5″
*δ
) by multiplying x5″ and
the value δ and
wherein calculating a value (x5″
*γ
) by multiplying x5″ and
the value γ
comprises performing the following sequence of operations;
calculating a value y2′
″
, wherein y2′
″
=(x5″
>
>
3)−
(x5″
>
>
7);
calculating a value y3′
″
, wherein y3′
″
=y2′
″
−
(x5″
>
>
11);
calculating the value (x5″
*δ
) by adding y2′
″ and
(y3′
″
>
>
1); and
calculating the value (x5″
*γ
) by subtracting y2′
″
from x5″
.
- ) by multiplying x3 and a value γ and
-
10. The method of claim 7,
wherein calculating a value (x2*α - ) by multiplying x2 by a value α and
wherein calculating a value (x2*β
) by multiplying x2 by a value β
comprises performing the following sequence of operations;
calculating a value y1, wherein y1=x2+(x2>
>
5);
calculating a value y2, wherein y2=y1>
>
2;
calculating the value (x2*α
) by adding y2 and (x2>
>
4); and
calculating the value (x2*β
) by subtracting y2 from y1; and
wherein calculating a value (x6*α
) by multiplying x6 by a value α and
wherein calculating a value (x6*β
) by multiplying x6 by a value β
comprises performing the following sequence of operations;
calculating a value y1′
, wherein y1′
=x2+(x6>
>
5);
calculating a value y2′
, wherein y2′
=y1′
>
>
2;
calculating the value (x6*α
) by adding y2′ and
(x6>
>
4); and
calculating the value (x6*β
) by subtracting y2′
from y1′
; and
wherein calculating a value (x2″
*α
) by multiplying x2″
by a value α and
wherein calculating a value (x2″
*β
) by multiplying x2″
by a value β
comprises performing the following sequence of operations;
calculating a value y1″
, wherein y1″
=x2″
+(x2″
>
>
5);
calculating a value y2″
, wherein y2″
=y1″
>
>
2;
calculating the value (x2″
*α
) by adding y2″ and
(x2″
>
>
4); and
calculating the value (x2″
*β
) by subtracting y2″
from y1″
; and
wherein calculating a value (x6″
*α
) by multiplying x6″
by a value α and
wherein calculating a value (x6″
*β
) by multiplying x6″
by a value β
comprises performing the following sequence of operations;
calculating a value y1′
″
, wherein y1′
″
=x2+(x6″
>
>
5);
calculating a value y2′
″
, wherein y2′
″
=y1′
″
>
>
2;
calculating the value (x6″
*α
) by adding y2′
″ and
(x6″
>
>
4); and
calculating the value (x6″
*β
) by subtracting y2′
″
from y1′
″
.
- ) by multiplying x2 by a value α and
-
11. The method of claim 6, wherein the values x0, x1, x2, x3, x4, x5, x6, x7, x0′
- , x1′
, x2′
, x3′
, x4′
, x5′
, x6′
, x7′
, x0″
, x1″
, x2″
, x3″
, x4″
, x5″
, x6″
, x7″
, X1′
″
x3′
″
, x5′
″
, x7′
″
, (x2*α
), (x6*β
), (x2β
), (x6*α
), (x7″
*ε
), (x7″
*ξ
), (x3″
*γ
), (x3″
*δ
), (x5″
*δ
), (x5″
*γ
), (x1″
*ξ
), and (x1″
*ε
) are represented using fixed-point numbers that include P bits in the mantissa portions of the fixed-point numbers.
- , x1′
-
12. The method of claim 11, wherein P is equal to 10.
-
13. The method of claim 1, wherein the method further comprises receiving a bitstream that includes the matrix of coefficients.
-
14. The method of claim 1, wherein the method further comprises adding a midpoint bias term to a DC coefficient of the matrix, wherein the midpoint bias value term is equal to 2 to the power of 12.
-
15. The method of claim 1, wherein the method further comprises:
-
right-shifting each coefficient in the matrix of transformed coefficients by thirteen positions to generate a matrix of pixel component values; and
constructing the block of pixels by incorporating pixel component values in the matrix of pixel component values into pixels in the block of pixels.
-
-
16. The method of claim 1, wherein scaling each coefficients in the 8×
- 8 matrix of encoded coefficients comprises scaling the coefficients in the matrix of encoded coefficients without using multiplication or division operations.
-
2. The method of claim 1, wherein repeatedly applying the fixed-point scaled one-dimensional transform comprises:
-
-
17. A device comprising:
-
a scaling module that scales each coefficient in an 8×
8 matrix of encoded coefficients by one of a factor A, a factor B, a factor C, a factor D, a factor E, a factor F, a factor G, a factor H, a factor I, or a factor J in order to produce a matrix of scaled coefficients;
wherein A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718, and J=2528;
an inverse transform module that uses repeated applications of a fixed-point scaled one-dimensional transform to transform the matrix of scaled coefficients into a matrix of transformed coefficients;
a right-shift module that right-shifts transformed coefficients in the matrix of transformed coefficients in order to produce a matrix of adjusted coefficients; and
wherein each adjusted coefficient in the matrix of adjusted coefficients approximates a corresponding value in a matrix of values that would be produced by applying an ideal two-dimensional inverse discrete cosine transform (“
IDCT”
) to the matrix of encoded coefficients;
an output module that outputs an 8×
8 block of pixels, wherein each pixel in the block of pixels includes a pixel component value based on an adjusted coefficient in the matrix of adjusted coefficients. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33)
-
18. The device of claim 17, wherein the inverse transform module applies the fixed-point scaled one-dimensional transform to each row vector of the matrix of scaled coefficients to produce a matrix of intermediate coefficients and applies the fixed-point scaled one-dimensional transform to each column vector of the matrix of intermediate coefficients to produce a matrix of transformed coefficients.
-
19. The device of claim 17, wherein the output module displays the 8×
- 8 block of pixels as part of a video frame in a video sequence.
-
20. The device of claim 19, wherein the output module display the 8×
- 8 block of pixels as part of a still image.
-
21. The device of claim 17, wherein the scaling module:
-
scales a coefficient at position [0,0] of the matrix of encoded coefficients by the factor A;
scales a coefficient at position [0,1] of the matrix of encoded coefficients by the factor B;
scales a coefficient at position [0,2] of the matrix of encoded coefficients by the factor C;
scales a coefficient at position [0,3] of the matrix of encoded coefficients by the factor D;
scales a coefficient at position [0,4] of the matrix of encoded coefficients by the factor A;
scales a coefficient at position [0,5] of the matrix of encoded coefficients by the factor D;
scales a coefficient at position [0,6] of the matrix of encoded coefficients by the factor C;
scales a coefficient at position [0,7] of the matrix of encoded coefficients by the factor B;
scales a coefficient at position [1,0] of the matrix of encoded coefficients by the factor B;
scales a coefficient at position [1,1] of the matrix of encoded coefficients by the factor E;
scales a coefficient at position [1,2] of the matrix of encoded coefficients by the factor F;
scales a coefficient at position [1,3] of the matrix of encoded coefficients by the factor G;
scales a coefficient at position [1,4] of the matrix of encoded coefficients by the factor B;
scales a coefficient at position [1,5] of the matrix of encoded coefficients by the factor G;
scales a coefficient at position [1,6] of the matrix of encoded coefficients by the factor F;
scales a coefficient at position [1,7] of the matrix of encoded coefficients by the factor E;
scales a coefficient at position [2,0] of the matrix of encoded coefficients by the factor C;
scales a coefficient at position [2,1] of the matrix of encoded coefficients by the factor F;
scales a coefficient at position [2,2] of the matrix of encoded coefficients by the factor H;
scales a coefficient at position [2,3] of the matrix of encoded coefficients by the factor I, scales a coefficient at position [2,4] of the matrix of encoded coefficients by the factor C;
scales a coefficient at position [2,5] of the matrix of encoded coefficients by the factor I;
scales a coefficient at position [2,6] of the matrix of encoded coefficients by the factor H;
scales a coefficient at position [2,7] of the matrix of encoded coefficients by the factor F;
scales a coefficient at position [3,0] of the matrix of encoded coefficients by the factor D;
scales a coefficient at position [3,1] of the matrix of encoded coefficients by the factor G;
scales a coefficient at position [3,2] of the matrix of encoded coefficients by the factor I;
scales a coefficient at position [3,3] of the matrix of encoded coefficients by the factor J;
scales a coefficient at position [3,4] of the matrix of encoded coefficients by the factor D;
scales a coefficient at position [3,5] of the matrix of encoded coefficients by the factor J;
scales a coefficient at position [3,6] of the matrix of encoded coefficients by the factor I;
scales a coefficient at position [3,7] of the matrix of encoded coefficients by the factor G;
scales a coefficient at position [4,0] of the matrix of encoded coefficients by the factor A;
scales a coefficient at position [4,1] of the matrix of encoded coefficients by the factor B;
scales a coefficient at position [4,2] of the matrix of encoded coefficients by the factor C;
scales a coefficient at position [4,3] of the matrix of encoded coefficients by the factor D;
scales a coefficient at position [4,4] of the matrix of encoded coefficients by the factor A;
scales a coefficient at position [4,5] of the matrix of encoded coefficients by the factor D;
scales a coefficient at position [4,6] of the matrix of encoded coefficients by the factor C;
scales a coefficient at position [4,7] of the matrix of encoded coefficients by the factor B;
scales a coefficient at position [5,0] of the matrix of encoded coefficients by the factor D;
scales a coefficient at position [5,1] of the matrix of encoded coefficients by the factor G;
scales a coefficient at position [5,2] of the matrix of encoded coefficients by the factor I;
scales a coefficient at position [5,3] of the matrix of encoded coefficients by the factor J;
scales a coefficient at position [5,4] of the matrix of encoded coefficients by the factor D;
scales a coefficient at position [5,5] of the matrix of encoded coefficients by the factor J;
scales a coefficient at position [5,6] of the matrix of encoded coefficients by the factor I;
scales a coefficient at position [5,7] of the matrix of encoded coefficients by the factor G;
scales a coefficient at position [6,0] of the matrix of encoded coefficients by the factor C;
scales a coefficient at position [6,1] of the matrix of encoded coefficients by the factor F;
scales a coefficient at position [6,2] of the matrix of encoded coefficients by the factor H;
scales a coefficient at position [6,3] of the matrix of encoded coefficients by the factor I;
scales a coefficient at position [6,4] of the matrix of encoded coefficients by the factor C;
scales a coefficient at position [6,5] of the matrix of encoded coefficients by the factor I;
scales a coefficient at position [6,6] of the matrix of encoded coefficients by the factor H;
scales a coefficient at position [6,7] of the matrix of encoded coefficients by the factor F;
scales a coefficient at position [7,0] of the matrix of encoded coefficients by the factor B;
scales a coefficient at position [7,1] of the matrix of encoded coefficients by the factor E;
scales a coefficient at position [7,2] of the matrix of encoded coefficients by the factor F;
scales a coefficient at position [7,3] of the matrix of encoded coefficients by the factor G;
scales a coefficient at position [7,4] of the matrix of encoded coefficients by the factor B;
scales a coefficient at position [7,5] of the matrix of encoded coefficients by the factor G;
scales a coefficient at position [7,6] of the matrix of encoded coefficients by the factor F; and
scales a coefficient at position [7,7] of the matrix of encoded coefficients by the factor E.
-
-
22. The device of claim 17, wherein the inverse transform module applies the transform to a row vector or a column vector by:
-
calculating a value x0′
by adding x0 and x4;
calculating a value x4′
by adding x0 and −
x4;
calculating a value (x2*α
) by multiplying x2 by a value α
;
calculating a value (x6*β
) by multiplying x6 by a value β
;
calculating a value (x2*β
) by multiplying x2 by the value β
;
calculating a value (x6*α
) by multiplying x6 by a value α
;
calculating a value x2′
by adding (x2*α
) and −
(x6*β
);
calculating a value x6′
by adding (x6*α
) and (x2*β
);
calculating a value x0″
by adding x0′ and
x6′
;
calculating a value x4″
by adding x4′ and
x2′
;
calculating a value x2″
by adding x4′ and
−
x2′
;
calculating a value x6″
by adding x0′ and
−
x6′
;
calculating a value x7′
by adding x1 and −
x7;
calculating a value x1′
by adding x1 and x7;
calculating a value x3′
by multiplying x3 and square root of two;
calculating a value x5′
by multiplying x5 and square root of two;
calculating a value x7″
by adding x7′ and
x5′
;
calculating a value x3″
by adding x1′ and
−
x3′
;
calculating a value x5″
by adding x7′ and
−
x5′
;
calculating a value x1″
by adding X3′ and
x1′
;
calculating a value (x7″
*ε
) by multiplying x7″ and
a value ε
;
calculating a value (x7″
*ξ
) by multiplying x7″ and
a value ξ
;
calculating a value (x3″
*γ
) by multiplying x3″ and
a value γ
;
calculating a value (x3″
*γ
) by multiplying x3″ and
a value δ
;
calculating a value (x5″
*δ
) by multiplying x5″ and
the value δ
;
calculating a value (X5 ″
*γ
) by multiplying x5″ and
the value γ
;
calculating a value (x1″
*ξ
) by multiplying x1″ and
the value ξ
;
calculating a value (x1″
*ε
) by multiplying x1″ and
the value ε
;
calculating a value x7′
″
by adding (x7″
*ε
) and −
(x1″
*ξ
);
calculating a value X3′
″
by adding (x3″
*γ
) and −
(X5″
*δ
);
calculating a value x5′
″
by adding (x5″
*γ
) and (x3″
*δ
);
calculating a value x1′
″
by adding (x1″
*ε
) and (X7″
*ξ
);
calculating a value X0 by adding x7′
″ and
x0″
;
calculating a value X1 by adding x4″ and
x5′
″
;
calculating a value X2 by adding x2″ and
x3′
″
;
calculating a value X3 by adding x6″ and
x7′
″
;
calculating a value X4 by adding x6″ and
−
x1′
″
;
calculating a value X5 by adding X2″ and
−
x3′
″
;
calculating a value X6 by adding x4″ and
−
x5′
″
; and
calculating a value X7 by adding x0″ and
−
x1′
″
;
wherein x0, x1, x2, x3, x4, x5, x6, x7 are coefficients in a row vector or a column vector, wherein X1, X2, X3, X4, X5, X6, and X7 are output values of the transform; and
wherein α
= 41/128, β
= 99/128, γ
= 113/128, δ
= 719/4096, ε
= 1533/2048, and ξ
=½
.
-
-
23. The device of claim 22, wherein the inverse transform module applies the transform to the matrix of coefficients without using multiplication or division operations.
-
24. The device of claim 23,
wherein the inverse transform module calculates a value (x1*ε - ) by multiplying x1 and the value ε and
wherein calculating the value (x1*ξ
) by x1 and the value ξ
by performing the following sequence of arithmetic operations;
calculating a value y1, wherein y1=(x1>
>
9)−
x1;
calculating the value (x1*ξ
) by right-shifting x3 by one position; and
calculating the value (x1*ε
) by subtracting y1 from (y1>
>
2); and
wherein the inverse transform module calculates a value (x7*ε
) by multiplying x7 and the value ε and
wherein calculating the value (x7*ξ
) by x7 and the value ξ
by performing the following sequence of arithmetic operations;
calculating a value y1′
, wherein y1′
=(x7>
>
9)−
x7;
calculating the value (x7*ξ
) by right-shifting x7 by one position; and
calculating the value (x7*ε
) by subtracting y1′
from (y1′
>
>
2); and
wherein the inverse transform module calculates a value (x1″
*ε
) by multiplying x1″ and
the value ε and
wherein calculating the value (x1″
*ξ
) by x1″ and
the value ξ
by performing the following sequence of arithmetic operations;
calculating a value y1″
, wherein y1″
=(x1″
>
>
9)−
x1″
;
calculating the value (x1″
*ξ
) by right-shifting x1″
by one position; and
calculating the value (x1″
*ε
) by subtracting y1″
from (y1″
>
>
2); and
wherein the inverse transform module calculates a value (x7″
*ε
) by multiplying x7″ and
the value ε and
wherein calculating the value (x7″
*ξ
) by x7″ and
the value ξ
by performing the following sequence of arithmetic operations;
calculating a value y1′
″
, wherein y1′
″
=(x7″
>
>
9)−
x7″
;
calculating the value (x7″
*ξ
) by right-shifting x7″
by one position; and
calculating the value (x7″
*ε
) by subtracting y1′
″
from (y1′
″
>
>
2).
- ) by multiplying x1 and the value ε and
-
25. The device of claim 23,
wherein the inverse transform module calculates a value (x3*γ - ) by multiplying x3 and a value γ and
wherein calculating a value (x3*δ
) by multiplying x3 and a value δ
by performing the following sequence of operations;
calculating a value y2, wherein y2=(x3>
>
3)−
(x3>
>
7);
calculating a value y3, wherein y3=y2−
(x3>
>
11);
calculating the value (x3*δ
)=y2+(y3>
>
1); and
calculating the value (x3*γ
) by subtracting y2 from x3; and
wherein the inverse transform module calculates a value (x5*δ
) by multiplying x5 and the value δ and
wherein calculating a value (x5*γ
) by multiplying x5 and the value γ
by performing the following sequence of operations;
calculating a value y2′
, wherein y2′
=(x5>
>
3)−
(x5>
>
7);
calculating a value y3′
, wherein y3′
=y2′
−
(x5>
>
11);
calculating the value (x5*δ
) by adding y2′ and
(y3′
>
>
1); and
calculating the value (x5*γ
) by subtracting y2′
from x5; and
wherein the inverse transform module calculates a value (x3″
*γ
) by multiplying x3″ and
a value γ and
wherein calculating a value (x3″
*δ
) by multiplying x3′
″ and
a value δ
by performing the following sequence of operations;
calculating a value y2″
, wherein y2″
=(x3″
>
>
3)−
(x3″
>
>
7);
calculating a value y3″
, wherein y3″
=y2″
−
(x3″
>
>
11);
calculating the value (x3″
*δ
)=y2″
+(y3″
>
>
1); and
calculating the value (x3″
*γ
) by subtracting y2″
from x3″
; and
wherein the inverse transform module calculates a value (x5″
*δ
) by multiplying x5″ and
the value δ and
wherein calculating a value (x5″
*γ
) by multiplying x5″ and
the value γ
by performing the following sequence of operations;
calculating a value y2′
″
, wherein y2′
″
=(x5″
>
>
3)−
(x5″
>
>
7);
calculating a value y3′
″
, wherein y3′
″
=y2′
−
(x5″
>
>
11);
calculating the value (x5″
*δ
) by adding y2′
″ and
(y3′
″
>
>
1); and
calculating the value (x5″
*γ
) by subtracting Y2′
″
from x5″
.
- ) by multiplying x3 and a value γ and
-
26. The device of claim 23,
wherein the inverse transform module calculates the value (x2*α - ) by multiplying x2 by a value α and
calculates the value (x2*β
) by multiplying x2 by the value β
by performing the following sequence of operations;
calculating a value y1, wherein y1=x2+(x2>
>
5);
calculating a value y2, wherein y2=y1>
>
2;
calculating the value (x2*α
) by adding y2 and (x2>
>
4); and
calculating the value (x2*β
) by subtracting y2 from y1; and
wherein the inverse transform module calculates the value (x6*α
) by multiplying x6 by a value α and
calculates the value (x6*β
) by multiplying x6 by the value β
by performing the following sequence of operations;
calculating a value y1′
, wherein y1′
=x6+(x6>
>
5);
calculating a value y2′
, wherein y2′
=y1′
>
>
2;
calculating the value (x6*α
) by adding y2′ and
(x6>
>
4); and
calculating the value (x6*β
) by subtracting y2′
from y1′
; and
wherein the inverse transform module calculates a value (x2″
*α
) by multiplying x2″
by a value α and
wherein calculating a value (x2″
*β
) by multiplying x2″
by a value β
by performing the following sequence of operations;
calculating a value y1″
, wherein y1″
=x2″
+(x2″
>
>
5);
calculating a value y2″
, wherein y2″
=y1″
>
>
2;
calculating the value (x2″
*α
) by adding y2″ and
(x2″
>
>
4); and
calculating the value (x2″
*β
) by subtracting y2″
from y1″
; and
wherein the inverse transform module calculate a value (x6″
*α
) by multiplying x6″
by a value α and
wherein calculating a value (x6″
*β
) by multiplying x6″
by a value β
by performing the following sequence of operations;
calculating a value y1′
″
, wherein y1′
″
=x2+(x6″
>
>
5);
calculating a value y2′
″
, wherein y2′
″
=y1′
″
>
>
2;
calculating the value (x6″
*α
) by adding y2′
″ and
(x6″
>
>
4); and
calculating the value (x6″
*β
) by subtracting y2′
″
from y1′
″
.
- ) by multiplying x2 by a value α and
-
27. The device of claim 22, wherein the values x0, x1, x2, x3, x4, x5, x6, x7, x0′
- , x1′
, x2′
, x3′
, x4′
, x5′
, x6′
, x7′
, x0″
, x1″
, x2″
, x3″
, x4″
, x5″
, x6″
, x7″
, x1′
″
x3′
″
, x5′
″
, x7′
″
, (x2*α
), (x6*β
), (x2*β
), (x6*α
), (x7″
*ε
), (x7″
*ξ
), (x3″
*γ
), (x3″
*δ
), (x5″
*δ
), (x5″
*γ
), (x1″
*ξ
), and (x1″
*ε
) are represented using fixed-point numbers that include P bits in the mantissa portions of the fixed-point numbers.
- , x1′
-
28. The device of claim 27, wherein P is equal to 10.
-
29. The device of claim 17, wherein the device comprises a network interface that receives data from which the matrix of encoded coefficients is derived.
-
30. The device of claim 17, wherein the device comprises a coefficient biasing module that adds a midpoint bias term to a DC coefficient, wherein the midpoint bias term is equal to 2 to the power of 12.
-
31. The device of claim 30, wherein the device further comprises:
-
a right-shift module that right-shifts each coefficient in the matrix of transformed coefficients by thirteen positions to generate a matrix of pixel component values; and
a pixel reconstruction module that constructs the block of pixels by incorporating pixel component values in the matrix of pixel component values into pixels in the block of pixels.
-
-
32. The device of claim 17, wherein the device further comprises a media presentation unit to display the block of pixels.
-
33. The device of claim 17, wherein the scaling module scales the encoded coefficients without using multiplication or division operations.
-
18. The device of claim 17, wherein the inverse transform module applies the fixed-point scaled one-dimensional transform to each row vector of the matrix of scaled coefficients to produce a matrix of intermediate coefficients and applies the fixed-point scaled one-dimensional transform to each column vector of the matrix of intermediate coefficients to produce a matrix of transformed coefficients.
-
-
34. A device comprising:
-
means for scaling coefficients in an 8×
8 matrix of encoded coefficients by one of a factor A, a factor B, a factor C, a factor D, a factor E, a factor F, a factor G, a factor H, a factor I, or a factor J in order to produce a matrix of scaled coefficients, wherein A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718, and J=2528;
means for using repeated applications of a fixed-point scaled one-dimensional transform to transform the matrix of scaled coefficients into a matrix of transformed coefficients;
means for right-shifting transformed coefficients in the matrix of transformed coefficients in order to produce a matrix of adjusted coefficients;
wherein each adjusted coefficient in the matrix of adjusted coefficients approximates a corresponding value in a matrix of values that would be produced by applying an ideal two-dimensional inverse discrete cosine transform (“
IDCT”
) to the matrix of encoded coefficients; and
means for outputting an 8×
8 block of pixels, wherein each pixel in the block of pixels includes a pixel component value based on an adjusted coefficient in the matrix of adjusted coefficients. - View Dependent Claims (35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50)
-
35. The device of claim 34, wherein the means for using repeatedly applications of the fixed-point scaled one-dimensional transform comprises:
-
means for applying the fixed-point scaled one-dimensional transform to each row vector of the matrix of scaled coefficients to produce a matrix of intermediate coefficients and means for applying the fixed-point scaled one-dimensional transform to each column vector of the matrix of intermediate coefficients to produce a matrix of transformed coefficients.
-
-
36. The device of claim 34, wherein the means for outputting the 8×
- 8 block of pixels displays the 8×
8 block of pixels as part of a video frame in a video sequence.
- 8 block of pixels displays the 8×
-
37. The device of claim 34, wherein the means for outputting the 8×
- 8 block of pixels displays the 8×
8 block of pixels as part of a still image.
- 8 block of pixels displays the 8×
-
38. The device of claim 34, wherein the means for scaling coefficients comprises:
-
means for scaling a coefficient at position [0,0] of the matrix of encoded coefficients by the factor A;
means for scaling a coefficient at position [0,1] of the matrix of encoded coefficients by the factor B;
means for scaling a coefficient at position [0,2] of the matrix of encoded coefficients by the factor C;
means for scaling a coefficient at position [0,3] of the matrix of encoded coefficients by the factor D;
means for scaling a coefficient at position [0,4] of the matrix of encoded coefficients by the factor A;
means for scaling a coefficient at position [0,5] of the matrix of encoded coefficients by the factor D;
means for scaling a coefficient at position [0,6] of the matrix of encoded coefficients by the factor C;
means for scaling a coefficient at position [0,7] of the matrix of encoded coefficients by the factor B;
means for scaling a coefficient at position [1,0] of the matrix of encoded coefficients by the factor B;
means for scaling a coefficient at position [1,1] of the matrix of encoded coefficients by the factor E;
means for scaling a coefficient at position [1,2] of the matrix of encoded coefficients by the factor F;
means for scaling a coefficient at position [1,3] of the matrix of encoded coefficients by the factor G;
means for scaling a coefficient at position [1,4] of the matrix of encoded coefficients by the factor B;
means for scaling a coefficient at position [1,5] of the matrix of encoded coefficients by the factor G;
means for scaling a coefficient at position [1,6] of the matrix of encoded coefficients by the factor F;
means for scaling a coefficient at position [1,7] of the matrix of encoded coefficients by the factor E;
means for scaling a coefficient at position [2,0] of the matrix of encoded coefficients by the factor C;
means for scaling a coefficient at position [2,1] of the matrix of encoded coefficients by the factor F;
means for scaling a coefficient at position [2,2] of the matrix of encoded coefficients by the factor H;
means for scaling a coefficient at position [2,3] of the matrix of encoded coefficients by the factor I, means for scaling a coefficient at position [2,4] of the matrix of encoded coefficients by the factor C;
means for scaling a coefficient at position [2,5] of the matrix of encoded coefficients by the factor I, means for scaling a coefficient at position [2,6] of the matrix of encoded coefficients by the factor H;
means for scaling a coefficient at position [2,7] of the matrix of encoded coefficients by the factor F;
means for scaling a coefficient at position [3,0] of the matrix of encoded coefficients by the factor D;
means for scaling a coefficient at position [3,1] of the matrix of encoded coefficients by the factor G;
means for scaling a coefficient at position [3,2] of the matrix of encoded coefficients by the factor I, means for scaling a coefficient at position [3,3] of the matrix of encoded coefficients by the factor J;
means for scaling a coefficient at position [3,4] of the matrix of encoded coefficients by the factor D;
means for scaling a coefficient at position [3,5] of the matrix of encoded coefficients by the factor J;
means for scaling a coefficient at position [3,6] of the matrix of encoded coefficients by the factor I, means for scaling a coefficient at position [3,7] of the matrix of encoded coefficients by the factor G;
means for scaling a coefficient at position [4,0] of the matrix of encoded coefficients by the factor A;
means for scaling a coefficient at position [4,1] of the matrix of encoded coefficients by the factor B;
means for scaling a coefficient at position [4,2] of the matrix of encoded coefficients by the factor C;
means for scaling a coefficient at position [4,3] of the matrix of encoded coefficients by the factor D;
means for scaling a coefficient at position [4,4] of the matrix of encoded coefficients by the factor A;
means for scaling a coefficient at position [4,5] of the matrix of encoded coefficients by the factor D;
means for scaling a coefficient at position [4,6] of the matrix of encoded coefficients by the factor C;
means for scaling a coefficient at position [4,7] of the matrix of encoded coefficients by the factor B;
means for scaling a coefficient at position [5,0] of the matrix of encoded coefficients by the factor D;
means for scaling a coefficient at position [5,1] of the matrix of encoded coefficients by the factor G;
means for scaling a coefficient at position [5,2] of the matrix of encoded coefficients by the factor I, means for scaling a coefficient at position [5,3] of the matrix of encoded coefficients by the factor J;
means for scaling a coefficient at position [5,4] of the matrix of encoded coefficients by the factor D;
means for scaling a coefficient at position [5,5] of the matrix of encoded coefficients by the factor J;
means for scaling a coefficient at position [5,6] of the matrix of encoded coefficients by the factor I, means for scaling a coefficient at position [5,7] of the matrix of encoded coefficients by the factor G;
means for scaling a coefficient at position [6,0] of the matrix of encoded coefficients by the factor C;
means for scaling a coefficient at position [6,1] of the matrix of encoded coefficients by the factor F;
means for scaling a coefficient at position [6,2] of the matrix of encoded coefficients by the factor H;
means for scaling a coefficient at position [6,3] of the matrix of encoded coefficients by the factor I, means for scaling a coefficient at position [6,4] of the matrix of encoded coefficients by the factor C;
means for scaling a coefficient at position [6,5] of the matrix of encoded coefficients by the factor I, means for scaling a coefficient at position [6,6] of the matrix of encoded coefficients by the factor H;
means for scaling a coefficient at position [6,7] of the matrix of encoded coefficients by the factor F;
means for scaling a coefficient at position [7,0] of the matrix of encoded coefficients by the factor B;
means for scaling a coefficient at position [7,1] of the matrix of encoded coefficients by the factor E;
means for scaling a coefficient at position [7,2] of the matrix of encoded coefficients by the factor F;
means for scaling a coefficient at position [7,3] of the matrix of encoded coefficients by the factor G;
means for scaling a coefficient at position [7,4] of the matrix of encoded coefficients by the factor B;
means for scaling a coefficient at position [7,5] of the matrix of encoded coefficients by the factor G;
means for scaling a coefficient at position [7,6] of the matrix of encoded coefficients by the factor F; and
means for scaling a coefficient at position [7,7] of the matrix of encoded coefficients by the factor E.
-
-
39. The device of claim 38, wherein the means for applying the transform comprise:
-
means for calculating a value x0′
by adding x0 and x4;
means for calculating a value x4′
by adding x0 and −
x4;
means for calculating a value (x2*α
) by multiplying x2 by a value α
;
means for calculating a value (x6*β
) by multiplying x6 by a value β
;
means for calculating a value (x2*β
) by multiplying x2 by the value β
;
means for calculating a value (x6*α
) by multiplying x6 by a value α
;
means for calculating a value x2′
by adding (x2*α
) and −
(x6*β
);
means for calculating a value x6′
by adding (x6*α
) and (x2*β
);
means for calculating a value x0″
by adding x0′ and
x6′
;
means for calculating a value x4″
by adding x4′ and
x2′
;
means for calculating a value x2″
by adding x4′ and
−
x2′
;
means for calculating a value x6″
by adding x0′ and
−
x6′
;
means for calculating a value x7′
by adding x1 and −
x7;
means for calculating a value x1′
by adding x1 and x7;
means for calculating a value x3′
by multiplying x3 and square root of two;
means for calculating a value x5′
by multiplying x5 and square root of two;
means for calculating a value x7″
by adding x7′ and
x5′
;
means for calculating a value x3″
by adding x1′ and
−
x3′
;
means for calculating a value x5″
by adding x7′ and
−
x5′
;
means for calculating a value x1″
by adding x3′ and
x1′
;
means for calculating a value (x7″
*ε
) by multiplying x7″ and
a value ε
;
means for calculating a value (x7″
*ξ
) by multiplying x7″ and
a value ξ
;
means for calculating a value (x3″
*γ
) by multiplying x3″ and
a value γ
;
means for calculating a value (x3″
*δ
) by multiplying x3″ and
a value δ
;
means for calculating a value (x5″
*δ
) by multiplying x5 ″ and
the value δ
;
means for calculating a value (x5″
*γ
) by multiplying x5″ and
the value γ
;
means for calculating a value (x1″
*ξ
) by multiplying x1″ and
the value ξ
;
means for calculating a value (x1″
*ε
) by multiplying x1″ and
the value ε
;
means for calculating a value x7′
″
by adding (x7′
″
*ε
) and −
(x1″
*ξ
);
means for calculating a value x3′
″
by adding (x3′
*γ
) and −
(x5″
*δ
);
means for calculating a value x5′
″
by adding (x5″
*γ
) and (x3″
*δ
);
means for calculating a value x1′
″
by adding (x1″
*ε
) and (x7″
*ξ
);
means for calculating a value X0 by adding x7′
″ and
x0″
;
means for calculating a value X1 by adding X4″ and
X5′
″
;
means for calculating a value X2 by adding x2″ and
x3′
″
;
means for calculating a value X3 by adding x6″ and
x7′
″
;
means for calculating a value X4 by adding x6″ and
−
x1′
″
;
means for calculating a value X5 by adding x2″ and
−
x3′
″
;
means for calculating a value X6 by adding x4″ and
−
x5′
″
; and
means for calculating a value X7 by adding x0″ and
−
x1′
″
;
wherein x0, x1, x2, x3, x4, x5, x6, x7 are coefficients in a row vector or a column vector, wherein X1, X2, X3, X4, X5, X6, and X7 are output values of the transform; and
wherein α
= 41/128, β
= 99/128, γ
= 113/128, δ
= 719/4096, ε
= 1533/2048, and ξ
=½
.
-
-
40. The device of claim 39, wherein the means for using repeated applications of the transform applies the transform to the matrix of coefficients without using multiplication or division operations.
-
41. The device of claim 40,
wherein the means for calculating a value (x1*ξ - ) by multiplying x1 and the value ε and
wherein the means for calculating the value (x1*ξ
) by x1 and the value ξ
comprise;
means for calculating a value y1, wherein y1=(x1>
>
9)−
x1;
means for calculating the value (x1*ξ
) by right-shifting x3 by one position; and
means for calculating the value (x1*ε
) by subtracting y1 from (y1>
>
2); and
wherein the means for calculating a value (x7*ε
) by multiplying x7 and the value ε and
wherein the means for calculating the value (x7*ξ
) by x7 and the value ξ
comprise;
means for calculating a value y1′
, wherein y1′
=(x7>
>
9)−
x7;
means for calculating the value (x7*ξ
) by right-shifting x7 by one position; and
means for calculating the value (x7*ε
) by subtracting y1′
from (y1′
>
>
2); and
wherein the means for calculating a value (x1″
*ε
) by multiplying x1″ and
the value ε and
wherein the means for calculating the value (x1″
*ξ
) by x1″ and
the value ξ
comprise;
means for calculating a value y1″
, wherein y1″
=(x1″
>
>
9)−
x1″
;
means for calculating the value (x1″
*ξ
) by right-shifting x1″
by one position; and
means for calculating the value (x1″
*ε
) by subtracting y1″
from (y1″
>
>
2); and
wherein the means for calculating a value (x7″
*ε
) by multiplying x7″ and
the value ε and
wherein the means for calculating the value (x7″
*ξ
) by x7″ and
the value ξ
comprise;
means for calculating a value y1′
″
, wherein y1′
″
=(x7″
>
>
9)−
x7″
;
means for calculating the value (x7″
*ξ
) by right-shifting x7″
by one position; and
means for calculating the value (x7″
*ε
) by subtracting y1′
″
from (y1′
″
>
>
2).
- ) by multiplying x1 and the value ε and
-
42. The device of claim 40,
wherein the means for calculating a value (x3*γ - ) by multiplying x3 and a value γ and
wherein the means for calculating a value (X3*δ
) by multiplying X3 and a value δ
comprise;
means for calculating a value y2, wherein y2=(x3>
>
3)−
(x3>
>
7);
means for calculating a value y3, wherein y3=y2−
(x3>
>
11);
means for calculating the value (x3*δ
)=y2+(y3>
>
1); and
means for calculating the value (x3*γ
) by subtracting y2 from x1; and
wherein the means for calculating a value (x5*δ
) by multiplying x5 and the value δ and
wherein the means for calculating a value (x5*γ
) by multiplying x5 and the value γ
comprise;
means for calculating a value y2′
, wherein y2′
=(x5>
>
3)−
(x5>
>
7);
means for calculating a value y3′
, wherein y3′
=y2′
−
(x5>
>
11);
means for calculating the value (x5*δ
) by adding y2′ and
(y3′
>
>
1); and
means for calculating the value (x5*γ
) by subtracting y2′
from x7; and
wherein the means for calculating a value (x3″
*γ
) by multiplying x3″ and
a value γ and
wherein the means for calculating a value (x3″
*δ
) by multiplying x3″ and
a value δ
comprise;
means for calculating a value y2″
, wherein y2″
=(x1″
>
>
3)−
(x1″
>
>
7);
means for calculating a value y3″
, wherein y3″
=y2″
−
(x1″
>
>
11);
means for calculating the value (x1″
*δ
)=y2″
+(y3″
>
>
1); and
means for calculating the value (x1″
*γ
) by subtracting y2″
from x1″
; and
wherein the means for calculating a value (x5″
*δ
) by multiplying x5″ and
the value δ and
wherein the means for calculating a value (x5″
*γ
) by multiplying x5″ and
the value γ
comprise;
means for calculating a value y2′
″
, wherein y2′
″
=(x5″
>
>
3)−
(x5″
>
>
7);
means for calculating a value y3′
″
, wherein y3′
″
=y2′
″
−
(x5″
>
>
11);
means for calculating the value (x5″
*δ
) by adding y2′
″ and
(y3′
″
>
1); and
means for calculating the value (x5″
*γ
) by subtracting y2′
″
from x5″
.
- ) by multiplying x3 and a value γ and
-
43. The device of claim 40,
wherein the means for calculating the value (x2*α - ) by multiplying x2 by a value α and
wherein the means for calculating the value (x2*β
) by multiplying x2 by the value β
comprise;
means for calculating a value y1, wherein y1′
=x2+(x2>
>
5);
means for calculating a value y2, wherein y2=y1>
>
2;
means for calculating the value (x2*α
) by adding y2 and (x2>
>
4); and
means for calculating the value (x2*β
) by subtracting y2 from y1; and
wherein the means for calculating the value (x6*α
) by multiplying x6 by a value α and
wherein the means for calculating the value (x6*β
) by multiplying x6 by the value β
comprise;
means for calculating a value y1′
, wherein y1′
=x6+(x6>
>
5);
means for calculating a value y2′
, wherein y2′
=y1′
>
>
2;
means for calculating the value (x2*α
) by adding y2′ and
(x6>
>
4); and
means for calculating the value (x2*β
) by subtracting y2′
from y1′
; and
wherein the means for calculating a value (x2′
*α
) by multiplying x2″
by a value α and
wherein the means for calculating a value (x2″
*β
) by multiplying x2′
″
by a value β
comprises;
means for calculating a value y1″
, wherein y1″
=x2″
+(x2″
>
>
5);
means for calculating a value y2″
, wherein y2″
=y1″
>
>
2;
means for calculating the value (x2′
*α
) by adding y2″ and
(x2″
>
>
4); and
means for calculating the value (x2″
*β
) by subtracting y2″
from y1″
; and
wherein the means for calculating a value (x6″
*α
) by multiplying x6″
by a value α and
wherein the means for calculating a value (x6″
*β
) by multiplying x6″
by a value β
comprises;
means for calculating a value y1′
″
, wherein y1′
″
=x6″
+(x6″
>
>
5);
means for calculating a value y2′
″
, wherein y2′
″
=y1′
″
>
>
2;
means for calculating the value (x6″
*α
) by adding y2′
″ and
(x6″
>
>
4); and
means for calculating the value (x6′
*β
) by subtracting y2′
″
from y1′
″
.
- ) by multiplying x2 by a value α and
-
44. The device of claim 39, wherein the values x0, x1, x2, x3, x4, x5, x6, x7, x0′
- , x1′
, x2′
, x3′
, x4′
, x5′
, x6′
, x7′
, x0″
, x1″
, x2″
, x3″
, x4″
, x5″
, x6″
, x7″
, x1′
″
x3′
″
, x5′
″
, x7′
″
, (x2*α
), (x6*β
), (x2*β
), (x6*α
), (x7″
*ε
), (x7″
*ξ
), (x3″
*γ
), (x3″
*δ
), (x5″
*δ
), (x5″
*γ
), (x1″
*ξ
), and (x1″
*ε
) are represented using fixed-point numbers that include P bits in the mantissa portions of the fixed-point numbers.
- , x1′
-
45. The device of claim 44, wherein P is equal to 10.
-
46. The device of claim 34, wherein the device comprises means for receiving a media file that includes data from which the matrix of encoded coefficients is derived.
-
47. The device of claim 34, wherein the device comprises means for adding a midpoint bias term to a DC coefficient, wherein the midpoint bias term is equal to 2 to the power of 12.
-
48. The device of claim 34, wherein the device further comprises:
-
means for right-shifting each coefficient in the matrix of transformed coefficients by thirteen positions to generate a matrix of pixel component values; and
means for constructing the block of pixels by incorporating pixel component values in the matrix of pixel component values into pixels in the block of pixels.
-
-
49. The device of claim 34, wherein the device further comprises means for displaying the block of pixels.
-
50. The device of claim 34, wherein the means for scaling encoded coefficients scales the encoded coefficients without using multiplication or division operations.
-
35. The device of claim 34, wherein the means for using repeatedly applications of the fixed-point scaled one-dimensional transform comprises:
-
-
51. A computer-readable medium comprising instructions, when executed the instructions cause a programmable processor to:
-
scale each coefficient in an 8×
8 matrix of encoded coefficients by one of a factor A, a factor B, a factor C, a factor D, a factor E, a factor F, a factor G, a factor H, a factor I, or a factor J in order to produce a matrix of scaled coefficients,wherein A=1024, B=1138, C=1730, D=1609, E=1264, F=1922, G=1788, H=2923, I=2718, and J=2528;
use repeated applications a fixed-point scaled one-dimensional transform to transform the matrix of scaled coefficients into a matrix of transformed coefficients, right-shift transformed coefficients in the matrix of transformed coefficients in order to produce a matrix of adjusted coefficients;
wherein each adjusted coefficient in the matrix of adjusted coefficients approximates a corresponding value in a matrix of values that would be produced by applying an ideal two-dimensional inverse discrete cosine transform (“
IDCT”
) to the matrix of encoded coefficients; and
output signals that cause a display unit to display an 8×
8 block of pixels, wherein each pixel in the block of pixels includes a pixel component value based on an adjusted coefficient in the matrix of adjusted coefficients. - View Dependent Claims (52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66)
-
52. The computer-readable medium of claim 51, wherein the instructions cause the programmable processor to repeatedly apply the fixed-point scaled one-dimensional transform by causing the programmable processor to:
-
apply the transform to each row vector of the matrix of scaled coefficients to produce a matrix of intermediate coefficients;
apply the transform to each column vector of the matrix of intermediate coefficients to produce a matrix of transformed coefficients.
-
-
53. The computer-readable medium of claim 51, wherein the instructions that cause the programmable processor to output signals that cause the display unit to display the 8×
- 8 block of pixels cause the programmable processor to output signals that cause the display unit to display the 8×
8 block of pixels as part of a video frame in a video sequence.
- 8 block of pixels cause the programmable processor to output signals that cause the display unit to display the 8×
-
54. The computer-readable medium of claim 51, wherein the instructions that cause the programmable processor to output signals that cause the display unit to display the 8×
- 8 block of pixels cause the programmable processor to output signals that cause the display unit to display the 8×
8 block of pixels as part of a still image.
- 8 block of pixels cause the programmable processor to output signals that cause the display unit to display the 8×
-
55. The computer-readable medium of claim 51, wherein the instructions that cause the processor to scale the coefficients in the matrix of coefficients cause the processor to:
-
scale a coefficient at position [0,0] of the matrix of encoded coefficients by the factor A;
scale a coefficient at position [0,1 ] of the matrix of encoded coefficients by the factor B;
scale a coefficient at position [0,2] of the matrix of encoded coefficients by the factor C;
scale a coefficient at position [0,3] of the matrix of encoded coefficients by the factor D;
scale a coefficient at position [0,4] of the matrix of encoded coefficients by the factor A;
scale a coefficient at position [0,5] of the matrix of encoded coefficients by the factor D;
scale a coefficient at position [0,6] of the matrix of encoded coefficients by the factor C;
scale a coefficient at position [0,7] of the matrix of encoded coefficients by the factor B;
scale a coefficient at position [1,0] of the matrix of encoded coefficients by the factor B;
scale a coefficient at position [1,1] of the matrix of encoded coefficients by the factor E;
scale a coefficient at position [1,2] of the matrix of encoded coefficients by the factor F;
scale a coefficient at position [1,3] of the matrix of encoded coefficients by the factor G;
scale a coefficient at position [1,4] of the matrix of encoded coefficients by the factor B;
scale a coefficient at position [1,5] of the matrix of encoded coefficients by the factor G;
scale a coefficient at position [1,6] of the matrix of encoded coefficients by the factor F;
scale a coefficient at position [1,7] of the matrix of encoded coefficients by the factor E;
scale a coefficient at position [2,0] of the matrix of encoded coefficients by the factor C;
scale a coefficient at position [2,1] of the matrix of encoded coefficients by the factor F;
scale a coefficient at position [2,2] of the matrix of encoded coefficients by the factor H;
scale a coefficient at position [2,3] of the matrix of encoded coefficients by the factor I;
scale a coefficient at position [2,4] of the matrix of encoded coefficients by the factor C;
scale a coefficient at position [2,5] of the matrix of encoded coefficients by the factor I;
scale a coefficient at position [2,6] of the matrix of encoded coefficients by the factor H;
scale a coefficient at position [2,7] of the matrix of encoded coefficients by the factor F;
scale a coefficient at position [3,0] of the matrix of encoded coefficients by the factor D;
scale a coefficient at position [3,1] of the matrix of encoded coefficients by the factor G;
scale a coefficient at position [3,2] of the matrix of encoded coefficients by the factor I;
scale a coefficient at position [3,3] of the matrix of encoded coefficients by the factor J;
scale a coefficient at position [3,4] of the matrix of encoded coefficients by the factor D;
scale a coefficient at position [3,5] of the matrix of encoded coefficients by the factor J;
scale a coefficient at position [3,6] of the matrix of encoded coefficients by the factor I;
scale a coefficient at position [3,7] of the matrix of encoded coefficients by the factor G;
scale a coefficient at position [4,0] of the matrix of encoded coefficients by the factor A;
scale a coefficient at position [4,1] of the matrix of encoded coefficients by the factor B;
scale a coefficient at position [4,2] of the matrix of encoded coefficients by the factor C;
scale a coefficient at position [4,3] of the matrix of encoded coefficients by the factor D;
scale a coefficient at position [4,4] of the matrix of encoded coefficients by the factor A;
scale a coefficient at position [4,5] of the matrix of encoded coefficients by the factor D;
scale a coefficient at position [4,6] of the matrix of encoded coefficients by the factor C;
scale a coefficient at position [4,7] of the matrix of encoded coefficients by the factor B;
scale a coefficient at position [5,0] of the matrix of encoded coefficients by the factor D;
scale a coefficient at position [5,1] of the matrix of encoded coefficients by the factor G;
scale a coefficient at position [5,2] of the matrix of encoded coefficients by the factor I;
scale a coefficient at position [5,3] of the matrix of encoded coefficients by the factor J;
scale a coefficient at position [5,4] of the matrix of encoded coefficients by the factor D;
scale a coefficient at position [5,5] of the matrix of encoded coefficients by the factor J;
scale a coefficient at position [5,6] of the matrix of encoded coefficients by the factor I;
scale a coefficient at position [5,7] of the matrix of encoded coefficients by the factor G;
scale a coefficient at position [6,0] of the matrix of encoded coefficients by the factor C;
scale a coefficient at position [6,1] of the matrix of encoded coefficients by the factor F;
scale a coefficient at position [6,2] of the matrix of encoded coefficients by the factor H;
scale a coefficient at position [6,3] of the matrix of encoded coefficients by the factor I;
scale a coefficient at position [6,4] of the matrix of encoded coefficients by the factor C;
scale a coefficient at position [6,5] of the matrix of encoded coefficients by the factor I;
scale a coefficient at position [6,6] of the matrix of encoded coefficients by the factor H;
scale a coefficient at position [6,7] of the matrix of encoded coefficients by the factor F;
scale a coefficient at position [7,0] of the matrix of encoded coefficients by the factor B;
scale a coefficient at position [7,1] of the matrix of encoded coefficients by the factor E;
scale a coefficient at position [7,2] of the matrix of encoded coefficients by the factor F;
scale a coefficient at position [7,3] of the matrix of encoded coefficients by the factor G;
scale a coefficient at position [7,4] of the matrix of encoded coefficients by the factor B;
scale a coefficient at position [7,5] of the matrix of encoded coefficients by the factor G;
scale a coefficient at position [7,6] of the matrix of encoded coefficients by the factor F; and
toscale a coefficient at position [7,7] of the matrix of encoded coefficients by the factor E.
-
-
56. The computer-readable medium of claim 55, wherein the instructions that cause the processor to apply the transform to either a row vector or a column vector cause the processor to:
-
calculate a value x0′
by adding x0 and x4;
calculate a value x4′
by adding x0 and −
x4;
calculate a value (x2*α
) by multiplying x2 by a value α
;
calculate a value (x6*β
) by multiplying x6 by a value β
;
calculate a value (x2*β
) by multiplying x2 by the value β
;
calculate a value (x6*α
) by multiplying x6 by a value α
;
calculate a value x2′
by adding (x2*α
) and −
(x6*β
);
calculate a value x6′
by adding (x6*α
) and (x2*β
);
calculate a value x0″
by adding x0′ and
x6′
;
calculate a value x4″
by adding x4′ and
x2′
;
calculate a value x2″
by adding x4′ and
−
x2′
;
calculate a value x6″
by adding x0′ and
−
x6′
;
calculate a value x7′
by adding x1 and −
x7;
calculate a value x1′
by adding x1 and x7;
calculate a value x3′
by multiplying x3 and square root of two;
calculate a value x5′
by multiplying x5 and square root of two;
calculate a value x7″
by adding x7′ and
x5′
;
calculate a value x3″
by adding x1′ and
−
x3′
;
calculate a value x5″
by adding x7′ and
−
x5′
;
calculate a value x1″
by adding x3′ and
x1′
;
calculate a value (x7″
*ε
) by multiplying x7″ and
a value ε
;
calculate a value (x7″
*ξ
) by multiplying x7″ and
a value ξ
;
calculate a value (X3″
*γ
) by multiplying x3″ and
a value γ
;
calculate a value (x3″
*δ
) by multiplying x3″ and
a value δ
;
calculate a value (x5″
*δ
) by multiplying x5″ and
the value δ
;
calculate a value (x5″
*γ
) by multiplying x5″ and
the value γ
;
calculate a value (x1″
*ξ
) by multiplying x1″ and
the value ξ
;
calculate a value (x1″
*ε
) by multiplying x1″ and
the value ε
;
calculate a value x7′
″
by adding (x7″
*ε
) and −
(x1″
*ξ
);
calculate a value x3′
″
by adding (x3″
*γ
) and −
(x5″
*δ
);
calculate a value x5′
″
by adding (x5″
*γ
) and (x3″
*δ
);
calculate a value x1′
″
by adding (x1″
*ε
) and (x7″
*ξ
);
calculate a value X0 by adding x7′
″ and
x0″
;
calculate a value X1 by adding x4″ and
x5′
″
;
calculate a value X2 by adding x2″ and
x3′
″
;
calculate a value X3 by adding x6″ and
x7′
″
;
calculate a value X4 by adding x6″ and
−
x1′
″
;
calculate a value X5 by adding x2″ and
−
x3′
″
;
calculate a value X6 by adding x4″ and
−
x5′
″
; and
tocalculate a value X7 by adding x0″ and
−
x1′
″
;
wherein x0, x1, x2, x3, x4, x5, x6, X7 are coefficients in a row vector or a column vector, wherein X1, X2, X3, X4, X5, X6, and X7 are output values of the transform;
wherein α
= 41/128, β
= 99/128, γ
= 113/128, δ
= 719/4096, ε
= 1533/2048, and ξ
=½
.
-
-
57. The computer-readable medium of claim 56, wherein the instructions cause the processor to apply the transform by causing the processor to apply the transform to coefficients in one of the row vectors or one of the column vectors without using multiplication or division operations.
-
58. The computer-readable medium of claim 57,
wherein the instructions cause the programmable processor to calculate a value (x1*ε - ) by multiplying x1 and the value ε and
wherein the instructions cause the programmable processor to calculate the value (x1*ξ
) by x1 and the value ξ
by causing the programmable processor to;
calculate a value y1, wherein y1=(x1>
>
9)−
x1;
calculate the value (x1*ξ
) by right-shifting x3 by one position; and
calculate the value (x1*ε
) by subtracting y1 from (y1>
>
2); and
wherein the instructions cause the programmable processor to calculate a value (x7*ε
) by multiplying x7 and the value ε and
wherein the instructions cause the programmable processor to calculate the value (x7*ξ
) by x7 and the value ξ
by causing the programmable processor to;
calculate a value y1′
, wherein y1′
=(x7>
>
9)−
x7;
calculate the value (x7*ξ
) by right-shifting x7 by one position; and
calculate the value (x7*ε
) by subtracting y1′
from (y1′
>
>
2); and
wherein the instructions cause the programmable processor to calculate a value (x1″
*ε
) by multiplying x1″ and
the value ε and
wherein the instructions cause the programmable processor to calculate the value (x1″
*ξ
) by x1″ and
the value ξ
by causing the programmable processor to;
calculate a value y1″
, wherein y1′
=(x1″
>
>
9)−
x1″
;
calculate the value (x1″
*ξ
) by right-shifting x1″
by one position; and
calculate the value (x1″
*ε
) by subtracting y1″
from (y1″
>
>
2); and
wherein the instructions cause the programmable processor to calculate a value (x7″
*ε
) by multiplying x7″ and
the value ε and
wherein the instructions cause the programmable processor to calculate the value (x7″
*ξ
) by x7″ and
the value ξ
by causing the programmable processor to;
calculate a value y1′
″
, wherein y1′
″
=(x7>
>
9)−
x7″
;
calculate the value (x7″
*ξ
) by right-shifting x7″
by one position; and
calculate the value (x7″
*ε
) by subtracting y1′
″
from (y1′
″
>
>
2).
- ) by multiplying x1 and the value ε and
-
59. The computer-readable medium of claim 58,
wherein the instructions cause the programmable processor to calculate a value (x3*γ - ) by multiplying x3 and a value γ and
wherein the instructions cause the programmable processor to calculate a value (x3*δ
) by multiplying x3 and a value δ
by causing the programmable processor to;
calculate a value y2, wherein y2=(x3>
>
3)−
(x3>
>
7);
calculate a value y3, wherein y3=y2−
(x3>
>
11);
calculate the value (x3*δ
)=y2+(y3>
>
1); and
calculate the value (x3*γ
) by subtracting y2 from x3; and
wherein the instructions cause the programmable processor to calculate a value (x5*δ
) by multiplying x5 and the value δ and
wherein the instructions cause the programmable processor to calculate a value (x5*γ
) by multiplying x5 and the value γ
by causing the programmable processor to;
calculate a value y2′
, wherein y2′
=(x5>
>
3)−
(x5>
>
7);
calculate a value y3′
, wherein y3′
=y2′
−
(x5>
>
11);
calculate the value (x5*δ
) by adding y2′ and
(y3′
>
>
1); and
calculate the value (x5*γ
) by subtracting y2′
from x5; and
wherein the instructions cause the programmable processor to calculate a value (x3″
*γ
) by multiplying x3″ and
a value γ and
wherein the instructions cause the programmable processor to calculate a value (x3″
*δ
) by multiplying x3″ and
a value δ
by causing the programmable processor to;
calculate a value y2″
, wherein y2″
=(x3″
>
>
3)−
(x3″
>
>
7);
calculate a value y3″
, wherein y3″
=y2″
−
(x3″
>
>
11);
calculate the value (x3″
*δ
)=y2″
+(y3″
>
>
1); and
calculate the value (x3′
*γ
) by subtracting y2″
from x3″
; and
wherein the instructions cause the programmable processor to calculate a value (x5″
*δ
) by multiplying x5″ and
the value δ and
wherein the instructions cause the programmable processor to calculate a value (x5″
*γ
) by multiplying x5″ and
the value γ
by causing the programmable processor to;
calculate a value y2′
″
, wherein y2′
″
=(x5″
>
>
3)−
(x5″
>
>
7);
calculate a value y3′
″
, wherein y3′
″
=y2′
″
−
(x5″
>
>
11);
calculate the value (x5″
*δ
) by adding y2′
″ and
(y3′
″
>
>
1); and
calculate the value (x5″
*γ
) by subtracting y2′
″
from x5″
.
- ) by multiplying x3 and a value γ and
-
60. The computer-readable medium of claim 58,
wherein the instructions cause the programmable processor to calculate a value (x2*α - ) by multiplying x2 by a value α and
wherein the instructions cause the programmable processor to calculate a value (x2*β
) by multiplying x2 by a value β
by causing the programmable processor to;
calculate a value y1, wherein y1=x2+(x2>
>
5);
calculate a value y2, wherein y2=y1>
>
2;
calculate the value (x2*α
) by adding y2 and (x2>
>
4); and
calculate the value (x2*β
) by subtracting y2 from y1; and
wherein the instructions cause the programmable processor to calculate a value (x6*α
) by multiplying x6 by a value α and
wherein the instructions cause the programmable processor to calculate a value (x6*β
) by multiplying x6 by a value β
by causing the programmable processor to;
calculate a value y1′
, wherein y1′
=x6+(x6>
>
5);
calculate a value y2′
, wherein y2′
=y1′
>
>
2;
calculate the value (x6*α
) by adding y2′ and
(x6>
>
4); and
calculate the value (x6*β
) by subtracting y2′
from y1′
; and
wherein the instructions cause the programmable processor to calculate a value (x2″
*α
) by multiplying x2″
by a value α and
wherein the instructions cause the programmable processor to calculate a value (x2″
*β
) by multiplying x2″
by a value β
by causing the programmable processor to;
calculate a value y1″
, wherein y1″
=x2″
+(x2″
>
>
5);
calculate a value y2″
, wherein y2″
=y1″
>
>
2;
calculate the value (x2″
*α
) by adding y2″ and
(x2″
>
>
4); and
calculate the value (x2″
*β
) by subtracting y2″
from y1″
; and
wherein the instructions cause the programmable processor to calculate a value (x6″
*α
) by multiplying x6″
by a value α and
wherein the instructions cause the programmable processor to calculate a value (x6″
*β
) by multiplying x6″
by a value β
by causing the programmable processor to;
calculate a value y1′
″
, wherein y1′
″
=x6″
+(x6″
>
>
5);
calculate a value y2′
″
, wherein y2′
″
=y1′
″
>
>
2;
calculate the value (x6″
*α
) by adding y2′
″ and
(x6″
>
>
4); and
calculate the value (x6″
*β
) by subtracting y2′
″
from y1′
″
.
- ) by multiplying x2 by a value α and
-
61. The computer-readable medium of claim 56, wherein the values x0, x1, x2, x3, x4, x5, x6, x7, x0′
- , x1′
, x2′
, x3′
, x4′
, x5′
, x6′
, x7′
, x0″
, x1″
, x2″
, x3″
, x4″
, x5″
, x6″
, x7″
, x1′
″
x3′
″
, x5′
″
, x7′
″
, (x2*α
), (x6*β
), (x2*β
), (x6*α
), (x7″
*ε
), (x7″
*ξ
), (x3″
*γ
), (x3″
*δ
), (x5″
*δ
), (x5″
*γ
), (x1″
*ξ
), and (X1″
*ε
) are represented using fixed-point numbers that include P bits in the mantissa portions of the fixed-point numbers.
- , x1′
-
62. The computer-readable medium of claim 61, wherein P is equal to 10.
-
63. The computer-readable medium of claim 51, wherein the instructions further cause the processor to receive a bitstream that includes the matrix of encoded coefficients.
-
64. The computer-readable medium of claim 51, wherein the instructions further cause the processor to add a midpoint bias term to a DC coefficient of the matrix, wherein the midpoint bias value term is equal to 2 to the power of 12.
-
65. The computer-readable medium of claim 51, wherein the instructions further cause the processor to:
-
right-shift each coefficient in the matrix of transformed coefficients by thirteen positions to generate a matrix of pixel component values; and
construct the block of pixels by incorporating pixel component values in the matrix of pixel component values into pixels in the block of pixels.
-
-
66. The computer-readable medium of claim 51, wherein the instructions that cause the processor to scale the encoded coefficients cause the processor to scale the coefficients in the matrix of encoded coefficients without using multiplication or division operations.
-
52. The computer-readable medium of claim 51, wherein the instructions cause the programmable processor to repeatedly apply the fixed-point scaled one-dimensional transform by causing the programmable processor to:
-
Specification
- Resources
-
Current AssigneeQualcomm, Inc.
-
Original AssigneeQualcomm, Inc.
-
InventorsReznik, Yuriy
-
Granted Patent
-
Time in Patent OfficeDays
-
Field of Search
-
US Class Current375/240
-
CPC Class CodesG06F 17/147 Discrete orthonormal transf...H04N 19/60 using transform codingH04N 19/61 in combination with predict...