⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 standarddct.cpp

📁 这是一组DCT和iDCT的代码
💻 CPP
字号:
#include "StdAfx.h"
#include <math.h>
#include "..\Common.h"

double c[8][8]; /* transform coefficients */

void Init()
{
  int i, j;
  double s;

  for (i=0; i<8; i++)
  {
    s = (i==0) ? sqrt(0.125) : 0.5;

    for (j=0; j<8; j++)
      c[i][j] = s * cos((PI/8.0)*i*(j+0.5));
  }

  Init_AanScales();
  init_idct_int32();
}

void Standard_fDCT(unsigned char *pIn, double *pOut)
{
	double tmp[64];
	double s;
	int i, j, k;

	for ( i = 0; i < 8; i++ )
		for ( j = 0; j < 8; j++ )
		{
			s = 0.0;

			for ( k = 0; k < 8; k++ )
				s += c[j][k] * pIn[8 * i + k];

			tmp[8 * i + j] = s;
		}

	for ( j = 0; j < 8; j++ )
		for ( i = 0; i < 8; i++ )
		{
			s = 0.0;

			for ( k = 0; k < 8; k++ )
				s += c[i][k] * tmp[8 * k + j];

			pOut[8 * i + j] = s;
		}
}

double CompareDCT(double *pIn, double *pTmpl)
{
	double dMaxAbsErr;
	int i;

	dMaxAbsErr = fabs(pIn[0] - pTmpl[0]);
	for ( i = 1; i < 64; i++ )
	{
		double tmp;

		if ( (tmp = fabs(pIn[i] - pTmpl[i])) > dMaxAbsErr )
			dMaxAbsErr = tmp;
	}

	return dMaxAbsErr;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -