Reduction of errors during computation of inverse discrete cosine transform
First Claim
1. A method comprising:
- using a series of butterfly structure operations on fixed-point numbers to apply a transform to a vector of source coefficients in order to generate a vector of transformed coefficients, wherein transformed coefficients in the vector of transformed coefficients are approximations of values that would be produced by transforming the vector of source coefficients using an ideal inverse discrete cosine transform;
causing a media presentation unit to output visible signals based on transformed coefficients in the vector of transformed coefficients, wherein differences between results generated by one of the butterfly structure operations and results that would be generated by an equivalent butterfly structure operation using unlimited precision arithmetic are centered around zero,generating, with the device, a matrix of scaled coefficients by scaling each coefficient in a matrix of input coefficients;
generating, with the, device, a matrix of biased coefficients that includes the vector of source coefficients by adding one or more bias values to a DC coefficient of the matrix of scaled coefficients;
using the series of butterfly structure operations on the fixed-point numbers to apply the transform to each row vector in the matrix of biased coefficients in order to generate a matrix of intermediate coefficients;
using the series of butterfly structure operations on the fixed-point numbers to apply the transform to each column vector in the matrix of intermediate coefficients in order to generate a matrix of transformed coefficients; and
generating, with the device, a matrix of pixel component values by right-shifting coefficients in the matrix of transformed coefficients by a first magnitude.
1 Assignment
0 Petitions
Accused Products
Abstract
Techniques are described to reduce rounding errors during computation of discrete cosine transform using fixed-point calculations. According to these techniques, an inverse discrete cosine transform a vector of coefficients is calculated using a series of butterfly structure operations on fixed-point numbers. Next, a midpoint bias value and a supplemental bias value are added to a DC coefficient of the matrix of scaled coefficients. Next, an inverse discrete cosine transform is applied to the resulting matrix of scaled coefficients. Values in the resulting matrix are then right-shifted in order to derive a matrix of pixel component values. As described herein, the addition of the supplemental bias value to the DC coefficient reduces rounding errors attributable to this right-shifting. As a result, a final version of a digital media file decompressed using these techniques may more closely resemble an original version of a digital media file.
35 Citations
57 Claims
-
1. A method comprising:
-
using a series of butterfly structure operations on fixed-point numbers to apply a transform to a vector of source coefficients in order to generate a vector of transformed coefficients, wherein transformed coefficients in the vector of transformed coefficients are approximations of values that would be produced by transforming the vector of source coefficients using an ideal inverse discrete cosine transform; causing a media presentation unit to output visible signals based on transformed coefficients in the vector of transformed coefficients, wherein differences between results generated by one of the butterfly structure operations and results that would be generated by an equivalent butterfly structure operation using unlimited precision arithmetic are centered around zero, generating, with the device, a matrix of scaled coefficients by scaling each coefficient in a matrix of input coefficients; generating, with the, device, a matrix of biased coefficients that includes the vector of source coefficients by adding one or more bias values to a DC coefficient of the matrix of scaled coefficients; using the series of butterfly structure operations on the fixed-point numbers to apply the transform to each row vector in the matrix of biased coefficients in order to generate a matrix of intermediate coefficients; using the series of butterfly structure operations on the fixed-point numbers to apply the transform to each column vector in the matrix of intermediate coefficients in order to generate a matrix of transformed coefficients; and generating, with the device, a matrix of pixel component values by right-shifting coefficients in the matrix of transformed coefficients by a first magnitude. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A device comprising:
-
one or more processors; and an inverse transform module executed by the one or more that uses a series of butterfly structure operations on fixed-point numbers to apply a transform to a vector of source coefficients in order to generate a vector of transformed coefficients,wherein transformed coefficients in the vector of transformed coefficients are approximations of values that would be produced by transforming the vector of source coefficients using an ideal inverse discrete cosine transform; wherein a media presentation unit is capable of presenting visible signals based on transformed coefficients in the vector of transformed coefficients, wherein differences between results generated by one of the butterfly structure operations and results that would be generated by an equivalent butterfly structure operation using unlimited precision arithmetic are centered around zero; a scaling module executed by the one or more processors that generates a matrix of scaled coefficients by scaling each coefficient in a matrix of input coefficients; a coefficient biasing module executed by the one or more processors that generates a matrix of biased coefficients that includes the vector of source coefficients by adding one or more bias values to a DC coefficient of the matrix of scaled coefficients; and wherein the inverse transform module generates a matrix of intermediate coefficients by using the series of butterfly structure operations on the fixed-point numbers to apply the transform to each row vector in the matrix of biased coefficients; wherein the inverse transform module generates a matrix of transformed coefficients by using the series of butterfly structure operations to apply the transform to each column vector in the matrix of intermediate coefficients; and a right-shift module executed by the one or more processors that generates a matrix of pixel component values by right-shifting coefficients in the matrix of transformed coefficients by a first magnitude, wherein the inverse transform module uses the series of butterfly structure operations to apply the transform to the vector of source coefficients. - View Dependent Claims (12, 13, 14, 15, 16, 17)
-
-
18. A device comprising:
-
means for using a series of butterfly structure operations on fixed-point numbers to apply a transform to a vector of source coefficients in order to calculate a vector of transformed coefficients, wherein transformed coefficients in the vector of transformed coefficients are approximations of values that would be produced by transforming the vector of source coefficients using an ideal inverse discrete cosine transform, wherein a media presentation unit is capable of presenting visible signals based the transformed coefficients in the vector of transformed coefficients, and wherein differences between results generated by one of the butterfly structure operations and results that would be generated by an equivalent butterfly structure operation using unlimited precision arithmetic are centered around zero; means for generating a matrix of scaled coefficients by scaling each coefficient in a matrix of input coefficients; means for generating a matrix of biased coefficients that includes the vector of source coefficients by adding one or more bias values to a DC coefficient of the matrix of scaled coefficients; and means for generating a matrix of intermediate coefficients by using the series of butterfly structure operations to apply the transform to each row vector in the matrix of biased coefficients; means for generating a matrix of transformed coefficients by using the series of butterfly structure operations to apply the transform to each column vector in the matrix of intermediate coefficients; and means for generating a matrix of pixel component values by right-shifting coefficients in the matrix of transformed coefficients by a first magnitude, wherein either the means for generating the matrix of intermediate coefficients or the means for generating the matrix of transformed coefficients comprises the means for using the series of butterfly structure operations to apply the transform to the vector of source coefficients. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A non-transitory computer-readable medium comprising instructions that when executed cause a processor to:
-
use a series of butterfly structure operations on fixed-point numbers to apply a transform to a vector of coefficients in order to generate a vector of transformed coefficients; wherein transformed coefficients in the vector of transformed coefficients are approximations of values that would be produced by transforming the vector of source coefficients using an ideal inverse discrete cosine transform; cause a media presentation unit to output visible signals based on transformed values in the vector of transformed values, wherein differences between results generated by one of the butterfly structure operations and results that would be generated by an equivalent butterfly structure operation using unlimited precision arithmetic are centered around zero; generate a matrix of biased coefficients that includes the vector of source coefficients by adding one or more bias values to a DC coefficients of the matrix of scaled coefficients; use the series of butterfly structure operations on fixed-point numbers to apply the transform to each row vector in the matrix of biased coefficients in order to generate a matrix of intermediate coefficients; use the series of butterfly structure operations on fixed-point to apply the transform to each column vector in the matrix of intermediate coefficients in order to generate a matrix of transformed coefficients; and generate a matrix of pixel component values by right-shifting coefficients in the matrix of transformed coefficients by a first magnitude. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35, 36, 37)
-
-
38. A method for computation of an inverse discrete cosine transform comprising:
-
using, with a device, a series of butterfly structure operations on fixed-point numbers to apply a transform to a vector of source coefficients in order to generate a vector of transformed coefficients, wherein transformed coefficients in the vector of transformed coefficients are approximations of values that would be produced by transforming the vector of source coefficients using an ideal inverse discrete cosine transform, wherein using the series of the butterfly structure operations comprises performing a butterfly structure operation of the form;
u=((x*>
>
k)−
((y*−
S)>
>
k);
v=((x*S′
)>
>
k′
)−
((y*>
>
k), andwherein u and v are resulting fixed-point numbers, C, S, k and k′
are constant integers, x and y are fixed-point variables, and C/2k and S/2k′
are rational number approximations of irrational constants. - View Dependent Claims (39, 40, 41, 42)
-
-
43. A device for computation of an inverse discrete cosine transform comprising:
-
one or more processors; and an inverse transform module executed by the one or more processors that uses a series of butterfly structure operations on fixed-point numbers to apply a transform to a vector of source coefficients in order to generate a vector of transformed coefficients, wherein transformed coefficients in the vector of transformed coefficients are approximations of values that would be produced by transforming the vector of source coefficients using an ideal inverse discrete cosine transform, and wherein the one of the butterfly structure operations performed by the inverse transform module is of the form;
u=((x*C)>
>
k)−
((y*−
S)>
>
k′
);
v=((x*S′
)>
>
k′
)−
((y*C)>
>
k), andwherein u and v are resulting fixed-point values, C, S, k and k′
are constant integers, x and y are fixed-point variables, and C/2k and S/2k′
are rational number approximations of irrational constants. - View Dependent Claims (44, 45, 46, 47)
-
-
48. A device for computation of an inverse discrete cosine transform comprising:
-
means for using a series of butterfly structure operations on fixed-point numbers to apply a transform to a vector of source coefficients in order to calculate a vector of transformed coefficients, wherein transformed coefficients in the vector of transformed coefficients are approximations of values that would be produced by transforming the vector of source coefficients using an ideal inverse discrete cosine transform, wherein the means for using a series of butterfly structure operations comprises a set of means for performing a butterfly structure operation, wherein each of the means for performing a butterfly structure operation comprises means for performing a butterfly structure operation of the form;
u=((x*C)>
>
k)−
((y*−
S)>
>
k);
v=((x*S)>
>
k)−
((y*>
>
k), andwherein u and v are resulting fixed-point values, C, S, k and k′
are constant integers, x and y are fixed-point variables, and C/2k and S/2k′
are rational number approximations of irrational constants. - View Dependent Claims (49, 50, 51, 52)
-
-
53. A non-transitory computer-readable medium comprising instructions for computation of an inverse discrete cosine transform that when executed cause a programmable processor to:
-
use a series of butterfly structure operations on fixed-point numbers to apply a transform to a vector of source coefficients in order to generate a vector of transformed coefficients, wherein transformed coefficients in the vector of transformed coefficients are approximations of values that would be produced by transforming the vector of source coefficients using an ideal inverse discrete cosine transform; wherein the instructions that cause the processor to perform the butterfly structure operations cause the processor to perform a butterfly structure operation of the form;
u=((x*C)>
>
k)−
(y*−
S)>
>
k′
);
v=((x*S′
)>
>
k′
)−
((y*C)>
>
k), andwherein u and v are resulting fixed-point numbers, C, S, k and k′
are constant integers, x and y are fixed-point variables and C/2k and S/2k′
are rational number approximations of irrational constants. - View Dependent Claims (54, 55, 56, 57)
-
Specification