home *** CD-ROM | disk | FTP | other *** search
/ Compressed Image File Formats / CompressedImageFileFormatsJohnMiano.iso / pc / Examples / c07 / src / jpendu.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-23  |  966 b   |  35 lines

  1. #include "matrix.h"
  2. #include "jpendu.h"
  3.  
  4. void JpegEncoderDataUnit::ForwardDct (JpegEncoderQuantizationTable &qt,
  5.                                       JpegEncoderCoefficientBlock &output)
  6. {
  7.   InitializeDctMatrix () ;
  8.  
  9.   MATRIX source ;
  10.   MATRIX destination ;
  11.   MATRIX temp ;
  12.   unsigned int ii, jj ;
  13.   for (ii = 0 ; ii < JpegSampleWidth ; ++ ii)
  14.   {
  15.     for (jj = 0 ; jj < JpegSampleWidth ; ++ jj)
  16.     {
  17.       source [ii][jj] = data [ii][jj] - JpegMidpointSampleValue ;
  18.     }
  19.   }
  20.   Multiply (DctMatrix, source, temp) ;
  21.   Multiply (temp, IDctMatrix, destination) ;
  22.   for (ii = 0 ; ii < JpegSampleWidth ; ++ ii)
  23.   {
  24.     for (jj = 0 ; jj < JpegSampleWidth ; ++ jj)
  25.     {
  26.       destination [ii][jj] /= qt [JpegZigZagOutputOrder (ii * JpegSampleWidth + jj)] ;
  27.       if (destination [ii][jj] < 0)
  28.         output [ii][jj] = destination [ii][jj] - .5 ;
  29.       else
  30.         output [ii][jj] = destination [ii][jj] + .5 ;
  31.     }
  32.   }
  33.   return ;
  34. }
  35.