COMPUTING EVEN-SIZED DISCRETE COSINE TRANSFORMS
First Claim
1. A method of performing a scaled discrete cosine transform of type II (DCT-II), the method comprising:
- determining, with an apparatus, whether a size of the scaled DCT-II to perform is a multiple of two; and
in response to determining that the size of the scaled DCT-II to perform is a multiple of two, performing, with the apparatus, the scaled DCT-II,wherein performing the scaled DCT-II includes;
computing a butterfly that includes cross-additions and cross-subtractions of inputs to the DCT-II, wherein the butterfly includes a first portion that cross-adds a first sub-set of the inputs and a second portion that cross-subtracts a second sub-set of the inputs;
reversing an order of the second sub-set of cross-subtracted inputs to generate a reverse-ordered second sub-set of the inputs;
computing a series of recursive subtractions that each recursively subtract the reverse-ordered second sub-set of the inputs to generate a recursively subtracted second sub-set of the inputs;
computing a scaled sub-DCT-II that receives the first sub-set of the inputs and generates a first set of outputs based on the first sub-set of the inputs;
computing a full sub-DCT-III that receives the recursively subtracted second sub-set of the inputs and generates a second set of outputs based on the recursively subtracted second sub-set of the inputs; and
reordering the first and second set of outputs produced by the respective scaled sub-DCT-II and full sub-DCT-III to generate scaled output values of the DCT-II.
1 Assignment
0 Petitions
Accused Products
Abstract
In general, techniques are described for computing even-sized discrete cosine transforms (DCTs). For example, a coding device may implement these techniques. The coding device includes a DCT-II unit that first determines whether a DCT-II to perform is a multiple of two, and in response to determining that the DCT-II to perform is a multiple of two, performs the DCT-II. To perform the DCT-II, the DCT-II unit computes a butterfly and reverses an order of a first sub-set of the outputs of the butterfly. The DCT-II unit then recursively subtracts the reverse-ordered first sub-set of the butterfly outputs. The DCT-II unit computes a sub-DCT-II for a second sub-set of the butterfly outputs and a sub-DCT-III for the recursively subtracted first set of butterfly outputs. The DCT-II unit reorders the outputs produced by the sub-DCT-II and sub-DCT-III to generate output values of the DCT-II.
99 Citations
38 Claims
-
1. A method of performing a scaled discrete cosine transform of type II (DCT-II), the method comprising:
-
determining, with an apparatus, whether a size of the scaled DCT-II to perform is a multiple of two; and in response to determining that the size of the scaled DCT-II to perform is a multiple of two, performing, with the apparatus, the scaled DCT-II, wherein performing the scaled DCT-II includes; computing a butterfly that includes cross-additions and cross-subtractions of inputs to the DCT-II, wherein the butterfly includes a first portion that cross-adds a first sub-set of the inputs and a second portion that cross-subtracts a second sub-set of the inputs; reversing an order of the second sub-set of cross-subtracted inputs to generate a reverse-ordered second sub-set of the inputs; computing a series of recursive subtractions that each recursively subtract the reverse-ordered second sub-set of the inputs to generate a recursively subtracted second sub-set of the inputs; computing a scaled sub-DCT-II that receives the first sub-set of the inputs and generates a first set of outputs based on the first sub-set of the inputs; computing a full sub-DCT-III that receives the recursively subtracted second sub-set of the inputs and generates a second set of outputs based on the recursively subtracted second sub-set of the inputs; and reordering the first and second set of outputs produced by the respective scaled sub-DCT-II and full sub-DCT-III to generate scaled output values of the DCT-II. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A media coding device comprising:
-
a scaled DCT-II unit that determines whether a size of a scaled DCT-II to perform is a multiple of two, and in response to determining that the size of the scaled DCT-II to perform is a multiple of two, performs the scaled DCT-II, wherein the scaled DCT-II unit includes; a butterfly unit that computes a butterfly that includes cross-additions and cross-subtractions of inputs to the DCT-II, wherein the butterfly unit includes a first portion that cross-adds a first sub-set of the inputs and a second portion that cross-subtracts a second sub-set of the inputs; an order reversal unit that reverses an order of the second sub-set of cross-subtracted inputs to generate a reverse-ordered second sub-set of the inputs; a recursive subtraction unit that computes a series of recursive subtractions that each recursively subtract the reverse-ordered second sub-set of the inputs to generate a recursively subtracted second sub-set of the inputs; a scaled sub-DCT-II unit that computes a scaled sub-DCT-II that receives the first sub-set of the inputs and generates a first set of outputs based on the first sub-set of the inputs; and a full sub-DCT-III unit that computes a full sub-DCT-III that receives the recursively subtracted second sub-set of the inputs and generates a second set of outputs based on the recursively subtracted second sub-set of the inputs, wherein the scaled DCT-II unit reorders the first and second set of outputs produced by the respective scaled sub-DCT-II and full sub-DCT-III to generate scaled output values of the DCT-II. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A non-transitory computer-readable medium comprising instructions for causing a processor to:
-
determine whether a size of a scaled DCT-II to perform is a multiple of two; and in response to determining that the size of the scaled DCT-II to perform is a multiple of two, perform the scaled DCT-II, wherein the instructions that cause the processor to perform the scaled DCT-II include instructions that cause the processor to; compute a butterfly that includes cross-additions and cross-subtractions of inputs to the DCT-II, wherein the butterfly includes a first portion that cross-adds a first sub-set of the inputs and a second portion that cross-subtracts a second sub-set of the inputs; reverse an order of the second sub-set of cross-subtracted inputs to generate a reverse-ordered second sub-set of the inputs; compute a series of recursive subtractions that each recursively subtract the reverse-ordered second sub-set of the inputs to generate a recursively subtracted second sub-set of the inputs; compute a scaled sub-DCT-II that receives the first sub-set of the inputs and generates a first set of outputs based on the first sub-set of the inputs; compute a full sub-DCT-III that receives the recursively subtracted second sub-set of the inputs and generates a second set of outputs based on the recursively subtracted second sub-set of the inputs; and reorder the first and second set of outputs produced by the respective scaled sub-DCT-II and full sub-DCT-III to generate scaled output values of the DCT-II. - View Dependent Claims (18, 19, 20, 21, 22)
-
-
23. An apparatus comprising:
-
means for determining whether a size of a scaled DCT-II to perform is a multiple of two; and means for performing, in response to determining that the size of the scaled DCT-II to perform is a multiple of two, the scaled DCT-II, wherein the means for performing the scaled DCT-II includes; means for computing a butterfly that includes cross-additions and cross-subtractions of inputs to the DCT-II, wherein the butterfly includes a first portion that cross-adds a first sub-set of the inputs and a second portion that cross-subtracts a second sub-set of the inputs; means for reversing an order of the second sub-set of cross-subtracted inputs to generate a reverse-ordered second sub-set of the inputs; means for computing a series of recursive subtractions that each recursively subtract the reverse-ordered second sub-set of the inputs to generate a recursively subtracted second sub-set of the inputs; means for computing a scaled sub-DCT-II that receives the first sub-set of the inputs and generates a first set of outputs based on the first sub-set of the inputs; means for computing a full sub-DCT-III that receives the recursively subtracted second sub-set of the inputs and generates a second set of outputs based on the recursively subtracted second sub-set of the inputs; and means for reordering the first and second set of outputs produced by the respective scaled sub-DCT-II and full sub-DCT-III to generate scaled output values of the DCT-II. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30)
-
-
31. A method of performing a full discrete cosine transform of type II (DCT-II), the method comprising:
-
determining, with an apparatus, whether a size of the full DCT-II to perform is a multiple of two; and in response to determining that the size of the full DCT-II to perform is a multiple of two, performing, with the apparatus, the full DCT-II, wherein performing the full DCT-II includes; computing a butterfly that includes cross-additions and cross-subtractions of inputs to the DCT-II, wherein the butterfly includes a first portion that cross-adds a first sub-set of the inputs and a second portion that cross-subtracts a second sub-set of the inputs; reversing an order of the second sub-set of cross-subtracted inputs to generate a reverse-ordered second sub-set of the inputs; computing a series of recursive subtractions that each recursively subtract the reverse-ordered second sub-set of the inputs to generate a recursively subtracted second sub-set of the inputs; computing a full sub-DCT-II that receives the first sub-set of the inputs and generates a first set of outputs based on the first sub-set of the inputs; computing a full sub-DCT-III that receives the recursively subtracted second sub-set of the inputs and generates a second set of outputs based on the recursively subtracted second sub-set of the inputs; multiplying the first set of outputs by one or more scale factors to generated a first full set of outputs; and reordering the first full set of outputs and the second set of outputs to generate output values of the DCT-II.
-
-
32. A media coding device comprising:
-
a full DCT-II unit that determines whether a size of a full DCT-II to perform is a multiple of two, and in response to determining that the size of the full DCT-II to perform is a multiple of two, performs the full DCT-II, wherein the full DCT-II includes; a butterfly unit that computes a butterfly that includes cross-additions and cross-subtractions of inputs to the DCT-II, wherein the butterfly unit includes a first portion that cross-adds a first sub-set of the inputs and a second portion that cross-subtracts a second sub-set of the inputs; an order reversal unit that reverses an order of the second sub-set of cross-subtracted inputs to generate a reverse-ordered second sub-set of the inputs; a recursive subtraction unit that computes a series of recursive subtractions that each recursively subtract the reverse-ordered second sub-set of the inputs to generate a recursively subtracted second sub-set of the inputs; a full sub-DCT-II unit that computes a full sub-DCT-II that receives the first sub-set of the inputs and generates a first set of outputs based on the first sub-set of the inputs; a full sub-DCT-III unit that computes a full sub-DCT-III that receives the recursively subtracted second sub-set of the inputs and generates a second set of outputs based on the recursively subtracted second sub-set of the inputs; and a scaling unit that multiples output of sub-DCT-III by one or more scale factors to generate a first full set of outputs; wherein the full DCT-II unit reorders the first full set of outputs and the second set of outputs to generate output values of the DCT-II.
-
-
33. A non-transitory computer-readable medium comprising instructions for causing a processor to:
-
determine whether a size of a full DCT-II to perform is a multiple of two; and in response to determining that the size of the full DCT-II to perform is a multiple of two, perform the full DCT-II, wherein the instructions that cause the processor to perform the full DCT-II include instructions that cause the processor to; compute a butterfly that includes cross-additions and cross-subtractions of inputs to the DCT-II, wherein the butterfly includes a first portion that cross-adds a first sub-set of the inputs and a second portion that cross-subtracts a second sub-set of the inputs; reverse an order of the second sub-set of cross-subtracted inputs to generate a reverse-ordered second sub-set of the inputs; compute a series of recursive subtractions that each recursively subtract the reverse-ordered second sub-set of the inputs to generate a recursively subtracted second sub-set of the inputs; compute a full sub-DCT-II that receives the first sub-set of the inputs and generates a first set of outputs based on the first sub-set of the inputs; compute a full sub-DCT-III that receives the recursively subtracted second sub-set of the inputs and generates a second set of outputs based on the recursively subtracted second sub-set of the inputs; multiply the first set of outputs by one or more scale factors to generated a first full set of outputs; and reorder the first full set of outputs and the second set of outputs to generate output values of the DCT-II.
-
-
34. An apparatus comprising:
-
means for determining whether a size of a full DCT-II to perform is a multiple of two; and means for performing, in response to determining that the size of the full DCT-II to perform is a multiple of two, the full DCT-II, wherein the means for performing the full DCT-II includes; means for computing a butterfly that includes cross-additions and cross-subtractions of inputs to the DCT-II, wherein the butterfly includes a first portion that cross-adds a first sub-set of the inputs and a second portion that cross-subtracts a second sub-set of the inputs; means for reversing an order of the second sub-set of cross-subtracted inputs to generate a reverse-ordered second sub-set of the inputs; means for computing a series of recursive subtractions that each recursively subtract the reverse-ordered second sub-set of the inputs to generate a recursively subtracted second sub-set of the inputs; means for computing a full sub-DCT-II that receives the first sub-set of the inputs and generates a first set of outputs based on the first sub-set of the inputs; means for computing a full sub-DCT-III that receives the recursively subtracted second sub-set of the inputs and generates a second set of outputs based on the recursively subtracted second sub-set of the inputs; means for multiplying the first set of outputs by one or more scale factors to generated a first full set of outputs; and means for reordering the first full set of outputs and the second set of outputs to generate output values of the DCT-II.
-
-
35. A method of performing a discrete cosine transform of type III (DCT-III), the method comprising:
-
determining, with an apparatus, whether a size of the DCT-III to perform is a multiple of two; and in response to determining that the size of the DCT-III to perform is a multiple of two, performing, with the apparatus, the DCT-III, wherein performing the DCT-III includes performing an inverse of a DCT of type II (DCT-II), and wherein performing the DCT-II includes; computing a butterfly that includes cross-additions and cross-subtractions of inputs to the DCT-II, wherein the butterfly includes a first portion that cross-adds a first sub-set of the inputs and a second portion that cross-subtracts a second sub-set of the inputs; reversing an order of the second sub-set of cross-subtracted inputs to generate a reverse-ordered second sub-set of the inputs; computing a series of recursive subtractions that each recursively subtract the reverse-ordered second sub-set of the inputs to generate a recursively subtracted second sub-set of the inputs; computing a sub-DCT-II that receives the first sub-set of the inputs and generates a first set of outputs based on the first sub-set of the inputs; computing a sub-DCT-III that receives the recursively subtracted second sub-set of the inputs and generates a second set of outputs based on the recursively subtracted second sub-set of the inputs; and reordering the first and second set of outputs produced by the respective sub-DCT-II and sub-DCT-III to generate output values of the DCT-II.
-
-
36. A media coding device comprising:
-
a DCT-III unit that determines whether a size of a DCT-III to perform is a multiple of two, and in response to determining that the size of the DCT-III to perform is a multiple of two, performs the DCT-III, wherein the DCT-III unit performs an inverse of a DCT of type II (DCT-II) performed by a DCT-II unit, wherein, to perform the DCT-II, the DCT-II unit includes; a butterfly unit that computes a butterfly that includes cross-additions and cross-subtractions of inputs to the DCT-II, wherein the butterfly unit includes a first portion that cross-adds a first sub-set of the inputs and a second portion that cross-subtracts a second sub-set of the inputs; an order reversal unit that reverses an order of the second sub-set of cross-subtracted inputs to generate a reverse-ordered second sub-set of the inputs; a recursive subtraction unit that computes a series of recursive subtractions that each recursively subtract the reverse-ordered second sub-set of the inputs to generate a recursively subtracted second sub-set of the inputs; a sub-DCT-II unit that computes a sub-DCT-II that receives the first sub-set of the inputs and generates a first set of outputs based on the first sub-set of the inputs; and a sub-DCT-III unit that computes a sub-DCT-III that receives the recursively subtracted second sub-set of the inputs and generates a second set of outputs based on the recursively subtracted second sub-set of the inputs, wherein the DCT-II unit reorders the first and second set of outputs produced by the respective sub-DCT-II and sub-DCT-III to generate scaled output values of the DCT-II.
-
-
37. A non-transitory computer-readable medium comprising instructions for causing a processor to:
-
determine whether a size of the DCT-III to perform is a multiple of two; and in response to determining that the size of the DCT-III to perform is a multiple of two, perform the DCT-III, wherein the instructions cause the processor to perform the DCT-III by performing an inverse of a DCT of type II (DCT-II) performed by; computing a butterfly that includes cross-additions and cross-subtractions of inputs to the DCT-II, wherein the butterfly includes a first portion that cross-adds a first sub-set of the inputs and a second portion that cross-subtracts a second sub-set of the inputs; reversing an order of the second sub-set of cross-subtracted inputs to generate a reverse-ordered second sub-set of the inputs; computing a series of recursive subtractions that each recursively subtract the reverse-ordered second sub-set of the inputs to generate a recursively subtracted second sub-set of the inputs; computing a sub-DCT-II that receives the first sub-set of the inputs and generates a first set of outputs based on the first sub-set of the inputs; computing a sub-DCT-III that receives the recursively subtracted second sub-set of the inputs and generates a second set of outputs based on the recursively subtracted second sub-set of the inputs; and reordering the first and second set of outputs produced by the respective sub-DCT-II and sub-DCT-III to generate output values of the DCT-II.
-
-
38. An apparatus comprising:
-
means for determining whether a size of a DCT-III to perform is a multiple of two; and means for performing, in response to determining that the size of the scaled DCT-II to perform is a multiple of two, the DCT-III, wherein the means for performing the DCT-III includes means for performing an inverse of a DCT-II performed by; computing a butterfly that includes cross-additions and cross-subtractions of inputs to the DCT-II, wherein the butterfly includes a first portion that cross-adds a first sub-set of the inputs and a second portion that cross-subtracts a second sub-set of the inputs; reversing an order of the second sub-set of cross-subtracted inputs to generate a reverse-ordered second sub-set of the inputs; computing a series of recursive subtractions that each recursively subtract the reverse-ordered second sub-set of the inputs to generate a recursively subtracted second sub-set of the inputs; computing a sub-DCT-II that receives the first sub-set of the inputs and generates a first set of outputs based on the first sub-set of the inputs; computing a sub-DCT-III that receives the recursively subtracted second sub-set of the inputs and generates a second set of outputs based on the recursively subtracted second sub-set of the inputs; and reordering the first and second set of outputs produced by the respective sub-DCT-II and sub-DCT-III to generate output values of the DCT-II.
-
Specification