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

📄 idct.c

📁 void III_hufman_decode(struct Granule *gr,int part2_start, int freqline[SBLIMIT][SSLIMIT]) {
💻 C
字号:
#include "jddatatype.h"

void idct (INT16 * data)
{
	UINT8 i;
	INT32 x0, x1, x2, x3, x4, x5, x6, x7, x8;

	static const INT16 ic1 = 251;
	static const INT16 is1 = 50;
	static const INT16 ic3 = 213;
	static const INT16 is3 = 142;
	static const INT16 ir2c6 = 277;
	static const INT16 ir2s6 = 669;
	static const INT16 ir2 = 181;

	for (i = 0; i < 8; i ++)
	{
		x0 = data [0] << 9;
		x1 = data [1] << 7;
		x2 = data [2];
		x3 = data [3] * ir2;
		x4 = data [4] << 9;
		x5 = data [5] * ir2;
		x6 = data [6];
		x7 = data [7] << 7;
		x8 = x7 + x1;
		x1 -= x7;

		x7 = x0 + x4;
		x0 -= x4;
		x4 = x1 + x5;
		x1 -= x5;
		x5 = x3 + x8;
		x8 -= x3;
		x3 = ir2c6 * (x2 + x6);
		x6 = x3 + (- ir2c6 - ir2s6) * x6;
		x2 = x3 + (- ir2c6 + ir2s6) * x2;

		x3 = x7 + x2;
		x7 -= x2;
		x2 = x0 + x6;
		x0 -= x6;
		x6 = ic3 * (x4 + x5);
		x5 = (x6 + (- ic3 - is3) * x5) >> 6;
		x4 = (x6 + (- ic3 + is3) * x4) >> 6;
		x6 = ic1 * (x1 + x8);
		x1 = (x6 + (- ic1 - is1) * x1) >> 6;
		x8 = (x6 + (- ic1 + is1) * x8) >> 6;

		x7 += 512;
		x2 += 512;
		x0 += 512;
		x3 += 512;
		data [0] = (INT16) ((x3 + x4) >> 10);
		data [1] = (INT16) ((x2 + x8) >> 10);
		data [2] = (INT16) ((x0 + x1) >> 10);
		data [3] = (INT16) ((x7 + x5) >> 10);
		data [4] = (INT16) ((x7 - x5) >> 10);
		data [5] = (INT16) ((x0 - x1) >> 10);
		data [6] = (INT16) ((x2 - x8) >> 10);
		data [7] = (INT16) ((x3 - x4) >> 10);

		data += 8;
	}

	data -= 64;
 
	for (i = 0; i < 8; i ++) 
	{
		x0 = data [0] << 9;
		x1 = data [8] << 7;
		x2 = data [16];
		x3 = data [24] * ir2;
		x4 = data [32] << 9;
		x5 = data [40] * ir2;
		x6 = data [48];
		x7 = data [56] << 7;
		x8 = x7 + x1;
		x1 -= x7;

		x7 = x0 + x4;
		x0 -= x4;
		x4 = x1 + x5;
		x1 -= x5;
		x5 = x3 + x8;
		x8 -= x3;
		x3 = ir2c6 * (x2 + x6);
		x6 = x3 + (- ir2c6 - ir2s6) * x6;
		x2 = x3 + (- ir2c6 + ir2s6) * x2;

		x3 = x7 + x2;
		x7 -= x2;
		x2 = x0 + x6;
		x0 -= x6;
		x4 >>= 6;
		x5 >>= 6;
		x1 >>= 6;
		x8 >>= 6;
		x6 = ic3 * (x4 + x5);
		x5 = (x6 + (- ic3 - is3) * x5);
		x4 = (x6 + (- ic3 + is3) * x4);
		x6 = ic1 * (x1 + x8);
		x1 = (x6 + (- ic1 - is1) * x1);
		x8 = (x6 + (- ic1 + is1) * x8);

		x7 += 1024;
		x2 += 1024;
		x0 += 1024;
		x3 += 1024;
		data [0] = (INT16) ((x3 + x4) >> 11);
		data [8] = (INT16) ((x2 + x8) >> 11);
		data [16] = (INT16) ((x0 + x1) >> 11);
		data [24] = (INT16) ((x7 + x5) >> 11);
		data [32] = (INT16) ((x7 - x5) >> 11);
		data [40] = (INT16) ((x0 - x1) >> 11);
		data [48] = (INT16) ((x2 - x8) >> 11);
		data [56] = (INT16) ((x3 - x4) >> 11);

		data ++;
	}
}

⌨️ 快捷键说明

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