Fast video codec transform implementations
First Claim
1. A method of transform-coding media data in two-dimensional blocks using a fast transform implementation of a block transform of 8-points in at least one of the block'"'"'s dimensions based on a transform matrix represented by the method comprising:
- performing multiple stages of butterfly operations converting between an 8-point set of spatial domain co-efficients and 8-point transform domain co-efficients in the at least one 8-point dimension, the multiple stages comprising for odd transform domain co-efficients, performing a matrix multiply by the matrix,
2 Assignments
0 Petitions
Accused Products
Abstract
A fast implementation of the 8-point WMV9/VC-9 transform is realized using a sequence of butterfly operations and matrix multiplies. A fast implementation of the inverse transform is realized by applying inverses of the butterfly operations with the matrix multiplies in reverse flow. These fast implementations permit scaling to be incorporated into the transform stages either at the end of both dimensions of filtering, or separately at each stage. These fast implementations of the transform can be used in encoders and decoders based on this transform in image compression and other signal processing systems.
-
Citations
13 Claims
-
1. A method of transform-coding media data in two-dimensional blocks using a fast transform implementation of a block transform of 8-points in at least one of the block'"'"'s dimensions based on a transform matrix represented by
the method comprising: -
performing multiple stages of butterfly operations converting between an 8-point set of spatial domain co-efficients and 8-point transform domain co-efficients in the at least one 8-point dimension, the multiple stages comprising for odd transform domain co-efficients, performing a matrix multiply by the matrix,
-
-
2. A media system providing transform coding of a media data, comprising:
-
forward transform stage operating, for a two dimensional block of the media data, to perform a forward transform of the block to convert the block into a transform domain, a quantization stage operating to quantize the transform-domain block;
a dequantization stage operating to dequantize the transform-domain block; and
an inverse transform stage for performing an inverse transform of the transform-domain block to produce a reconstructed block of the form, wherein at least one dimension Tn or Tm of the inverse transform is the 8-point matrix the inverse transform being implemented as a sequence of butterfly operations and a matrix multiply by the matrix,
-
-
3. A computer-readable medium carrying thereon computer-executable software instructions for effecting a method of transform-coding media data in two-dimensional blocks using a fast transform implementation of a block transform of 8-points in at least one of the block'"'"'s dimensions based on a transform matrix represented by
the method comprising: -
performing multiple stages of butterfly operations converting between an 8-point set of spatial domain co-efficients and 8-point transform domain co-efficients in the at least one 8-point dimension, the multiple stages comprising for odd transform domain co-efficients, performing a matrix multiply by the matrix,
-
-
4. A fast transform method of transforming a two-dimensional block of image data between spatial and transform domain representations, where at least one dimension of the block is 8 points, comprising, for a forward transform:
-
performing a sequence of butterfly operations of the type on a set of variables 0 through 7, including at least, a butterfly operation of variables 0 and 7, where values c and s are 1;
a butterfly operation of variables 1 and 6, where values c and s are 1;
a butterfly operation of variables 2 and 5, where values c and s are 1;
a butterfly operation of variables 3 and 4, where values c and s are 1;
a butterfly operation of variables 0 and 3, where values c and s are 1;
a butterfly operation of variables 1 and 2, where values c and s are 1;
a butterfly operation of variables 0 and 1, where values c and s are 1, with a scaling by 12;
a butterfly operation of variables 3 and 2, where values c and s are 16 and 6;
a butterfly operation of variables 4 and 7, where values c and s are 4 and 1;
a butterfly operation of variables 5 and 6, where values c and s are 5 and 3, followed by negating the variable 6;
a second butterfly operation of variables 5 and 6, where values c and s are 1; and
prior to the second butterfly operation of variables 5 and 6, performing a matrix multiply of variables 4 and 5 and variables 7 and 6 by the matrix, whereby the variables 0 through 3 produce even coefficients and variables 4 through 7 produce odd coefficients in the transform domain. - View Dependent Claims (5)
-
-
6. A fast transform method of transforming a two-dimensional block of image data between spatial and transform domain representations, where at least one dimension of the block is 8 points, comprising, for an inverse transform:
-
performing a sequence of butterfly operations of the type on a set of variables 0 through 7, where variables 0 through 3 are even transform coefficients and variables 4 through 7 are odd transform coefficients, including at least, a butterfly operation of variables 5 and 6, where values c and s are 1;
a second butterfly operation of variables 6 and 5, where values c and s are 5 and 3, followed by negating the variable 5;
a butterfly operation of variables 4 and 7, where values c and s are 4 and 1;
a butterfly operation of variables 0 and 1, where values c and s are 1, with a scaling by 12;
a butterfly operation of variables 3 and 2, where values c and s are 16 and 6;
a butterfly operation of variables 1 and 2, where values c and s are 1;
a butterfly operation of variables 0 and 3, where values c and s are 1;
a butterfly operation of variables 3 and 4, where values c and s are 1;
a butterfly operation of variables 2 and 5, where values c and s are 1;
a butterfly operation of variables 1 and 6, where values c and s are 1;
a butterfly operation of variables 0 and 7, where values c and s are 1; and
prior to the second butterfly operation of variables 5 and 6, performing a matrix multiply of variables 4 and 5 and variables 7 and 6 by the matrix,
-
-
7. A fast transform method of transforming a two-dimensional block of image data between spatial and transform domain representations, where at least one dimension of the block is 8 points, comprising, for an inverse transform:
- performing a sequence of butterfly operations of the type
on a set of variables 0 through 7, where variables 0 through 3 are even transform coefficients and variables 4 through 7 are odd transform coefficients, including at least, a butterfly operation of variables 5 and 6, where values c and s are 5 and 3, followed by negating the variable 6;
a butterfly operation of variables 4 and 7, where values c and s are 4 and a second butterfly operation of variables 1 and 6, where values c and s are a butterfly operation of variables 0 and 1, where values c and s are 1, with a scaling by 12;
a butterfly operation of variables 3 and 2, where values c and s are 16 and 6;
a butterfly operation of variables 1 and 2, where values c and s are 1;
a butterfly operation of variables 0 and 3, where values c and s are 1;
a butterfly operation of variables 3 and 4, where values c and s are 1;
a butterfly operation of variables 2 and 5, where values c and s are 1;
a butterfly operation of variables 1 and 6, where values c and s are 1;
a butterfly operation of variables 0 and 7, where values c and s are 1; and
following the butterfly operation of variables 4 and 7 and prior to the second butterfly operation of variables 5 and 6, performing a matrix multiply of variables 4 and 5 and variables 7 and 6 by the matrix, - View Dependent Claims (8)
- performing a sequence of butterfly operations of the type
-
9. A fast transform method of transforming a two-dimensional block of image data between spatial and transform domain representations, where at least one dimension of the block is 8 points, comprising, for a forward transform:
-
performing a sequence of butterfly operations of the type on a set of variables 0 through 7, including at least, a butterfly operation of variables 0 and 7, where values c and s are 1;
a butterfly operation of variables 1 and 6, where values c and s are 1;
a butterfly operation of variables 2 and 5, where values c and s are 1;
a butterfly operation of variables 3 and 4, where values c and s are 1;
a butterfly operation of variables 0 and 3, where values c and s are 1;
a butterfly operation of variables 1 and 2, where values c and s are 1;
a butterfly operation of variables 0 and 1, where values c and s are 1, with a scaling by 12;
a butterfly operation of variables 3 and 2, where values c and s are 16 and 6;
a first butterfly operation of variables 5 and 6, where values c and s are 1;
a butterfly operation of variables 4 and 7, where values c and s are 4 and 1;
a second butterfly operation of variables 6 and 5, where values c and s are 5 and 3, followed by negating the variable 5; and
following the first butterfly operation of variables 5 and 6 and prior to the butterfly operation of variables 4 and 7, performing a matrix multiply of variables 4 and 5 and variables 7 and 6 by the matrix, whereby the variables 0 through 3 produce even coefficients and variables 4 through 7 produce odd co-efficients in the transform domain.
-
-
10. A two-dimensional media compression processor for performing transform-based compression/decompression of two-dimensional media blocks, wherein the transform in at least one 8-point dimension of the blocks is based on the transform matrix,
-
12 12 12 12 12 12 16 15 9 4 - 4 - 9 - 15 - 16 16 6 - 6 - 16 - 16 - 6 6 16 15 - 4 - 16 - 9 9 16 4 - 15 12 - 12 - 12 12 12 - 12 - 12 12 9 - 16 4 15 - 15 - 4 16 - 9 6 - 16 16 - 6 - 6 16 - 16 6 4 - 9 15 - 16 16 - 15 9 - 4 ] , the processor comprising;
means for performing a sequence of butterfly operations of the type on a set of variables 0 through 7, where variables 0 through 3 are even transform coefficients and variables 4 through 7 are odd transform coefficients, including at least, a butterfly operation of variables 0 and 7, where values c and s are 1;
a butterfly operation of variables 1 and 6, where values c and s are 1;
a butterfly operation of variables 2 and 5, where values c and s are 1;
a butterfly operation of variables 3 and 4, where values c and s are 1;
a butterfly operation of variables 0 and 3, where values c and s are 1;
a butterfly operation of variables 1 and 2, where values c and s are 1;
a butterfly operation of variables 0 and 1, where values c and s are 1, with a scaling by 12;
a butterfly operation of variables 3 and 2, where values c and s are 16 and 6;
a butterfly operation of variables 4 and 7, where values c and s are 4 and 1;
a butterfly operation of variables 5 and 6, where values c and s are 5 and 3, followed by negating the variable 6;
a second butterfly operation of variables 5 and 6, where values c and s are 1; and
means for performing a matrix multiply of variables 4 and 5 and variables 7 and 6 by the matrix, prior to the second butterfly operation of variables 5 and 6.
-
-
11. A two-dimensional media compression processor for performing transform-based compression/decompression of two-dimensional media blocks, wherein the transform in at least one 8-point dimension of the blocks is based on the transform matrix,
-
12 12 12 12 12 12 16 15 9 4 - 4 - 9 - 15 - 16 16 6 - 6 - 16 - 16 - 6 6 16 15 - 4 - 16 - 9 9 16 4 - 15 12 - 12 - 12 12 12 - 12 - 12 12 9 - 16 4 15 - 15 - 4 16 - 9 6 - 16 16 - 6 - 6 16 - 16 6 4 - 9 15 - 16 16 - 15 9 - 4 ] , the processor comprising;
means for performing a sequence of butterfly operations of the type on a set of variables 0 through 7, where variables 0 through 3 are even transform coefficients and variables 4 through 7 are odd transform coefficients, including at least, a butterfly operation of variables 5 and 6, where values c and s are 1;
a second butterfly operation of variables 6 and 5, where values c and s are 5 and 3, followed by negating the variable 5;
a butterfly operation of variables 4 and 7, where values c and s are 4 and a butterfly operation of variables 0 and 1, where values c and s are 1, with a scaling by 12;
a butterfly operation of variables 3 and 2, where values c and s are 16 and 6;
a butterfly operation of variables 1 and 2, where values c and s are 1;
a butterfly operation of variables 0 and 3, where values c and s are 1;
a butterfly operation of variables 3 and 4, where values c and s are 1;
a butterfly operation of variables 2 and 5, where values c and s are 1;
a butterfly operation of variables 1 and 6, where values c and s are 1;
a butterfly operation of variables 0 and 7, where values c and s are 1; and
means for performing a matrix multiply of variables 4 and 5 and variables 7 and 6 by the matrix, prior to the second butterfly operation of variables 5 and 6.
-
-
12. A two-dimensional media compression processor for performing transform-based compression/decompression of two-dimensional media blocks, wherein the transform in at least one 8-point dimension of the blocks is based on the transform matrix,
-
12 12 12 12 12 12 16 15 9 4 - 4 - 9 - 15 - 16 16 6 - 6 - 16 - 16 - 6 6 16 15 - 4 - 16 - 9 9 16 4 - 15 12 - 12 - 12 12 12 - 12 - 12 12 9 - 16 4 15 - 15 - 4 16 - 9 6 - 16 16 - 6 - 6 16 - 16 6 4 - 9 15 - 16 16 - 15 9 - 4 ] , the processor comprising;
means for performing a sequence of butterfly operations of the type on a set of variables 0 through 7, where variables 0 through 3 are even transform coefficients and variables 4 through 7 are odd transform coefficients, including at least, a butterfly operation of variables 5 and 6, where values c and s are 5 and 3, followed by negating the variable 6;
a butterfly operation of variables 4 and 7, where values c and s are 4 and 1;
a second butterfly operation of variables 5 and 6, where values c and s are 1;
a butterfly operation of variables 0 and 1, where values c and s are 1, with a scaling by 12;
a butterfly operation of variables 3 and 2, where values c and s are 16 and 6;
a butterfly operation of variables 1 and 2, where values c and s are 1;
a butterfly operation of variables 0 and 3, where values c and s are 1;
a butterfly operation of variables 3 and 4, where values c and s are 1;
a butterfly operation of variables 2 and 5, where values c and s are 1;
a butterfly operation of variables 1 and 6, where values c and s are 1;
a butterfly operation of variables 0 and 7, where values c and s are 1; and
means for performing a matrix multiply of variables 4 and 5 and variables 7 and 6 by the matrix, following the butterfly operation of variables 4 and 7 and prior to the second buterfly operation of variables 5 and 6.
-
-
13. A two-dimensional media compression processor for performing transform-based compression/decompression of two-dimensional media blocks, wherein the transform in at least one 8-point dimension of the blocks is based on the transform matrix,
the processor comprising: -
means for performing a sequence of butterfly operations of the type on a set of variables 0 through 7, where variables 0 through 3 are even transform coefficients and variables 4 through 7 are odd transform coefficients, including at least, a butterfly operation of variables 0 and 7, where values c and s are 1;
a butterfly operation of variables 1 and 6, where values c and s are 1;
a butterfly operation of variables 2 and 5, where values c and s are 1;
a butterfly operation of variables 3 and 4, where values c and s are 1;
a butterfly operation of variables 0 and 3, where values c and s are 1;
a butterfly operation of variables 1 and 2, where values c and s are 1;
a butterfly operation of variables 0 and 1, where values c and s are 1, with by 12;
a butterfly operation of variables 3 and 2, where values c and s are 16 and 6;
a first butterfly operation of variables 5 and 6, where values c and s are 1;
a butterfly operation of variables 4 and 7, where values c and s are 4 and 1;
a second butterfly operation of variables 6 and 5, where values c and s are 5 and 3, followed by negating the variable 5; and
means for performing a matrix multiply of variables 4 and 5 and variables 7 and 6 by the matrix, following the first butterfly operation of variables 5 and 6 and prior to the butterfly operation of variables 4 and 7.
-
Specification