home *** CD-ROM | disk | FTP | other *** search
- #include "matrix.h"
- #include "jpendu.h"
-
- void JpegEncoderDataUnit::ForwardDct (JpegEncoderQuantizationTable &qt,
- JpegEncoderCoefficientBlock &output)
- {
- InitializeDctMatrix () ;
-
- MATRIX source ;
- MATRIX destination ;
- MATRIX temp ;
- unsigned int ii, jj ;
- for (ii = 0 ; ii < JpegSampleWidth ; ++ ii)
- {
- for (jj = 0 ; jj < JpegSampleWidth ; ++ jj)
- {
- source [ii][jj] = data [ii][jj] - JpegMidpointSampleValue ;
- }
- }
- Multiply (DctMatrix, source, temp) ;
- Multiply (temp, IDctMatrix, destination) ;
- for (ii = 0 ; ii < JpegSampleWidth ; ++ ii)
- {
- for (jj = 0 ; jj < JpegSampleWidth ; ++ jj)
- {
- destination [ii][jj] /= qt [JpegZigZagOutputOrder (ii * JpegSampleWidth + jj)] ;
- if (destination [ii][jj] < 0)
- output [ii][jj] = destination [ii][jj] - .5 ;
- else
- output [ii][jj] = destination [ii][jj] + .5 ;
- }
- }
- return ;
- }
-