Scaled forward and inverse discrete cosine transform and video compression/decompression systems employing the same
First Claim
1. A method for performing an inverse discrete cosine transform (IDCT) upon a matrix of DCT coefficients associated with a video image in a video system comprising:
- multiplying said matrix of DCT coefficients by a symmetric pre-scale factor array to produce a pre-scaled array;
performing an intermediary calculation column-wise upon said pre-scaled array to obtain an intermediary array; and
performing a final calculation row-wise upon said intermediary array;
wherein said symmetric pre-scale factor array is an array expressible by the product M×
U×
M, where U is a matrix of coefficients each being equal to 1 and M is an array wherein a set of pre-scale constants are expressed along its diagonal and wherein all other coefficients are 0; and
creating a video bitstream representative of said video image using results from said final calculation.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and method of a forward and/or inverse discrete cosine transform in a video system. In one embodiment, an array of DCT transform coefficients are converted to a two dimensional array of spatial data. The array of DCT transform coefficients are first operated upon by a pre-scale computation unit (implemented in either hardware or software) which multiplies a set of predetermined pre-scale constants with the input coefficients. The pre-scale constants multiplied by the input DCT coefficient matrix form a symmetric pre-scale array. Upon pre-scaling using the symmetric pre-scale factor array, an intermediary array is composed by performing intermediary calculations upon each column vector of the pre-scaled array. The output of this intermediary calculation is composed to form an intermediary array. Subsequently, a set of calculations are performed row-wise upon each row vector of the intermediary array to thereby form the output array of spatial data. In one implementation, the array of pre-scale coefficients (i.e., the symetric pre-scale factor array) may be represented as the result of a matrix multiplication M×U×M, where the array U consists of a set of coefficients all equal to 1, and wherein the array M is an array of coefficients wherein the equal row-column diagonal of coefficients include a set of pre-scale constants and all other coefficients in the array are equal to 0. The pre-scale constants includes a set of constants expressed by the cos(π/16), where n=1, 2, 3 and 4. In another embodiment, the calculations are reversed to perform a forward discrete cosine transform operation.
27 Citations
32 Claims
-
1. A method for performing an inverse discrete cosine transform (IDCT) upon a matrix of DCT coefficients associated with a video image in a video system comprising:
-
multiplying said matrix of DCT coefficients by a symmetric pre-scale factor array to produce a pre-scaled array; performing an intermediary calculation column-wise upon said pre-scaled array to obtain an intermediary array; and performing a final calculation row-wise upon said intermediary array; wherein said symmetric pre-scale factor array is an array expressible by the product M×
U×
M, where U is a matrix of coefficients each being equal to 1 and M is an array wherein a set of pre-scale constants are expressed along its diagonal and wherein all other coefficients are 0; andcreating a video bitstream representative of said video image using results from said final calculation. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for performing an inverse discrete cosine transform (IDCT) upon a matrix of DCT coefficients associated with a video image in a video system comprising:
-
multiplying said matrix of DCT coefficients by a symmetric pre-scale factor array to produce a pre-scaled array; performing an intermediary calculation row-wise upon said pre-scaled array to obtain an intermediary array; performing a final calculation column-wise upon said intermediary array; wherein said symmetric pre-scale factor array is an array expressible by the product M×
U×
M, where U is a matrix of coefficients each being equal to 1 and M is an array wherein a set of pre-scale constants are expressed along its diagonal and wherein all other coefficients are 0; andcreating a video bitstream representative of said video image using results from said final calculation. - View Dependent Claims (7, 8, 9, 10)
-
-
11. An inverse discrete cosine transform calculation unit for a video system configured to perform an inverse discrete cosine transform (IDCT) upon a matrix of DCT coefficients associated with a video image, said inverse discrete cosine transform calculation unit comprising:
-
a prescale computation unit configured to multiply said matrix of DCT coefficients by a symmetric pre-scale factor array to produce a pre-scaled array; a column vector computation unit configured to perform an intermediary calculation column-wise upon said pre-scaled array to obtain an intermediary array; and a row vector computation unit configured to perform a final calculation row-wise upon said intermediary array to provide data representative of said video image; wherein said symmetric pre-scale factor array is an array which may be expressed by the product M×
U×
M, where U is a matrix of coefficients each being equal to 1 and M is an array wherein a set of pre-scale constants are expressed along its diagonal and wherein all other coefficients are 0. - View Dependent Claims (12, 13, 14, 15)
-
-
16. An inverse discrete cosine transform calculation unit for a video system configured to perform an inverse discrete cosine transform (IDCT) upon a matrix of DCT coefficients associated with a video image, said inverse discrete cosine transform calculation unit comprising:
-
a prescale computation unit configured to multiply said matrix of DCT coefficients by a symmetric pre-scale factor array to produce a pre-scaled array; a row vector computation unit configured to perform an intermediary calculation row-wise upon said pre-scaled array to obtain an intermediary array; and a column vector computation unit configured to perform a final calculation column-wise upon said intermediary array to provide data representative of said video image; wherein said symmetric pre-scale factor array is an array which may be expressed by the product M×
U×
M, where U is a matrix of coefficients each being equal to 1 and M is an array wherein a set of pre-scale constants are expressed along its diagonal and wherein all other coefficients are 0. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A method for performing an inverse discrete cosine transform (IDCT) upon a matrix of DCT coefficients associated with a video image in a video system comprising:
-
multiplying said matrix of DCT coefficients by a symmetric pre-scale factor array to produce a pre-scaled array; performing an intermediary calculation column-wise upon said pre-scaled array to obtain an intermediary array; performing a final calculation row-wise upon said intermediary array; wherein said performing said intermediary calculation includes; v0=b0+b4; v4=b0-b4 v2=b6*tan(π
*2/16)+b2;v6=b6-b2*tan(π
*2/16);v7=b1*tan(π
*1/16)-b7;v1=b1+b7*tan(π
*1/16);v5=-b3*tan(π
*3/16)+b5;v3=b3+b5*tan(π
*3/16);b0=v0+v2; b2=v0-v2; b4=v4+v6; b6=v4-v6; b3=v7+v5; b5=(v7-v5); b1=(v1-v3); b7=v1+v3; v5=(b1+b5)*cos(π
*4/16);v1=(b1-b5)*cos(π
*4/16);output[0]=(b0+b7); output[7]=(b0-b7); output[1]=(b6+v5); output[6]=(b6-v5); output[2]=(b4+v1); output[5]=(b4-v1); output[3]=(b2+b3); output[4]=(b2-b3); wherein input parameters b0-b7 represent coefficients of a column vector of said pre-scaled array; and creating a video bitstream representative of said video image using results from said final calculation. - View Dependent Claims (22, 23)
-
-
24. A method for performing an inverse discrete cosine transform (IDCT) upon a matrix of DCT coefficients [to thereby construct] associated with a video image in a video system comprising:
-
multiplying said matrix of DCT coefficients by a symmetric pre-scale factor array to produce a pre-scaled array; performing an intermediary calculation row-wise upon said pre-scaled array to obtain an intermediary array; and performing a final calculation column-wise upon said intermediary array; wherein said performing said intermediary calculation includes; v0=b0+b4; v4=b0-b4 v2=b6*tan(π
*2/16)+b2;v6=b6-b2*tan(π
*2/16);v7=b1*tan(π
*1/16)-b7;v1=b1+b7*tan(π
*1/16);v5=-b3*tan(π
*3/16)+b5;v3=b3+b5*tan(π
*3/16);b0=v0+v2; b2=v0-v2; b4=v4+v6; b6=v4-v6; b3=v7+v5; b5=(v7-v5); b1=(v1-v3); b7=v1+v3; v5=(b1+b5)*cos(π
*4/16);v1=(b1-b5)*cos(π
*4/16);output[0]=(b0+b7); output[7]=(b0-b7); output[1]=(b6+v5); output[6]=(b6-v5); output[2]=(b4+v1); output[5]=(b4-v1); output[3]=(b2+b3); output[4]=(b2-b3); wherein input parameters b0-b7 represent coefficients of a row vector of said prescaled array; and creating a video bitstream representative of said video image using results from said final calculation. - View Dependent Claims (25, 26)
-
-
27. An inverse discrete cosine transform calculation unit for a video system configured to perform an inverse discrete cosine transform (IDCT) upon a matrix of DCT coefficients associated with a video image, said inverse discrete cosine transform calculation unit comprising:
-
a prescale computation unit configured to multiply said matrix of DCT coefficients by a symmetric pre-scale factor array to produce a pre-scaled array; a column vector computation unit configured to perform an intermediary calculation column-wise upon said pre-scaled array to obtain an intermediary array; and a row vector computation unit configured to perform a final calculation row-wise upon said intermediary array to provide data representative of said video image; wherein said column vector computation unit is configured to calculate; v0=b0+b4; v4=b0-b4 v2=b6*tan(π
*2/16)+b2;v6=b6-b2*tan(π
*2/16);v7=b1*tan(π
*1/16)-b7;v1=b1+b7*tan(π
*1/16);v5=-b3*tan(π
*3/16)+b5;v3=b3+b5*tan(π
*3/16);b0=v0+v2; b2=v0-v2; b4=v4+v6; b6=v4-v6; b3=v7+v5; b5=(v7-v5); b1=(v1-v3); b7=v1+v3; v5=(b1+b5)*cos(π
*4/16);v1=(b1-b5)*cos(π
*4/16);output[0]=(b0+b7); output[7]=(b0-b7); output[1]=(b6+v5); output[6]=(b6-v5); output[2]=(b4+v1); output[5]=(b4-v1); output[3]=(b2+b3); output[4]=(b2-b3); wherein input parameters b0-b7 represent coefficients of a column vector of said pre-scaled array. - View Dependent Claims (28, 29)
-
-
30. An inverse discrete cosine transform calculation unit for a video system configured to perform an inverse discrete cosine transform (IDCT) upon a matrix of DCT coefficients associated with a video image, said inverse discrete cosine transform calculation unit comprising:
-
a prescale computation unit configured to multiply said matrix of DCT coefficients by a symmetric pre-scale factor array to produce a pre-scaled array; a row vector computation unit configured to perform an intermediary calculation row-wise upon said pre-scaled array to obtain an intermediary array; and a column vector computation unit configured to perform a final calculation column-wise upon said intermediary array to provide data representative of said video image; wherein said row vector computation unit is configured to calculate; v0=b0+b4; v4=b0-b4 v2=b6*tan(π
*2/16)+b2;v6=b6-b2*tan(π
*2/16);v7=b1*tan(π
*1/16)-b7;v1=b1+b7*tan(π
*1/16);v5=-b3*tan(π
*3/16)+b5;v3=b3+b5*tan(π
*3/16);b0=v0+v2; b2=v0-v2; b4=v4+v6; b6=v4-v6; b3=v7+v5; b5=(v7-v5); b1=(v1-v3); b7=v1+v3; v5=(b1+b5)*cos(π
*4/16);v1=(b1-b5)*cos(π
*4/16);output[0]=(b0+b7); output[7]=(b0-b7); output[1]=(b6+v5); output[6]=(b6-v5); output[2]=(b4+v1); output[5]=(b4-v1); output[3]=(b2+b3); output[4]=(b2-b3); wherein input parameters b0-b7 represent coefficients of a row vector of said pre-scaled array. - View Dependent Claims (31, 32)
-
Specification