void CJpegImage::IQuantify(short pSrc[][8], double pDst[][8])
{
TRACE("IQuantify:\n");
int u, v;
for( u = 0; u < 8; u++ )
{
for( v = 0; v < 8; v++ )
{
pDst[u][v] = (double)pSrc[u][v]*QU_LI[u][v];
}
}
}
void CJpegImage::IDCT(double pSrcDct[][8], short pDstDct[][8])
{
TRACE("IDCT:\n");
int x, y, u, v;
double persqrt2=1.0/sqrt(2.0);
TRACE("persqrt2=%f\n",persqrt2);
double cu,cv;
double pi = 3.14159265;
/* double tmp[8][8];
for( x = 0; x < 8; x++ )
{
for( y = 0; y < 8; y++ )
{
tmp[x][y]=pSrcDct[x][y];
}
}*/
for( x = 0; x < 8; x++ )
{
for( y = 0; y < 8; y++ )
{
m_pTemDct[x][y] = 0;
for( u = 0; u < 8; u++ )
{
for( v = 0; v < 8; v++ )
{
cu=(u==0)?persqrt2:1;
cv=(v==0)?persqrt2:1;
m_pTemDct[x][y] += cu*cv*pSrcDct[u][v] * cos((2.0*x+1.0)*u*pi/16.0)
*cos((2.0*y+1.0)*v*pi/16.0);
}
}
m_pTemDct[x][y] = m_pTemDct[x][y]/4.0;
}
}
for( x = 0; x < 8; x++ )
{
for( y = 0; y < 8; y++ )
{
pDstDct[x][y]=(short)m_pTemDct[x][y]+128;
}
}
}