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

📄 one_d.c

📁 用于TM1300/PNX1300系列DSP(主要用于视频处理)的各种滤波器源码
💻 C
字号:
#include <ops/custom_defs.h>
#include "tc.h"
#include "coeffs.h"

#define	TMP_20_21_H_BIAS	0x8000	/* bias for rounding by right shift */

#if LITTLE_ENDIAN==1
#define PACK16_LSB(a, b)       PACK16LSB(b, a)
#define PACK16_MSB(a, b)       PACK16MSB(b, a)
#else
#define PACK16_LSB(a, b)       PACK16LSB(a, b)
#define PACK16_MSB(a, b)       PACK16MSB(a, b)
#endif


int scale = 1;

main(int argc, char **argv)
{
   int i, dataword;
   short data[8] ; 

  if (argc > 2 && !strcmp(argv[1], "-scale"))
    scale = atoi(argv[2]);

   for (i=0; i<8; i++) {
     scanf("%d", &dataword);
     data[i] = dataword * scale;
   }

   one_d_idct(data);

   for (i= 0; i<8; i++) printf("%d ", data[i]);
   printf("\n");
}	   

one_d_idct(short * data)
{
	int r0, r1, r2, r3, r4, r5, r6, r7;
	int z2, z3, z5, z0, zz5, zz2, zz3, zz0;
	int tmp22, tmp23, tmp20, tmp21;
	int tmp10, tmp13, tmp11, tmp12;
	int tmp0, tmp1, tmp2, tmp3;
	long * ldata;

	ldata = (long *)data;

	z0 = PACK16_LSB(data[0], data[4]);
	z2 = PACK16_LSB(data[1], data[5]);
	z5 = PACK16_LSB(data[2], data[6]);
	z3 = PACK16_LSB(data[3], data[7]);

	tmp22 = IFIR16(z5, MASK1);
	tmp23 = IFIR16(z5, MASK2);
	tmp20 = IFIR16(z0, MASK3) + TMP_20_21_H_BIAS;
	tmp21 = IFIR16(z0, MASK4) + TMP_20_21_H_BIAS;

	tmp10 = tmp20 + tmp23;
	tmp13 = tmp20 - tmp23;
	tmp11 = tmp21 + tmp22;
	tmp12 = tmp21 - tmp22;

	tmp0 = IFIR16(z2, D0) + IFIR16(z3, D1);
	tmp1 = IFIR16(z2, D2) + IFIR16(z3, D3);
	tmp2 = IFIR16(z2, D4) + IFIR16(z3, D5);
	tmp3 = IFIR16(z2, D6) + IFIR16(z3, D7);

	ldata[0] = PACK16_MSB(tmp11 + tmp2,tmp10 + tmp3);
	ldata[1] = PACK16_MSB(tmp13 + tmp0,tmp12 + tmp1);
	ldata[2] = PACK16_MSB(tmp12 - tmp1,tmp13 - tmp0);
	ldata[3] = PACK16_MSB(tmp10 - tmp3,tmp11 - tmp2);
}




⌨️ 快捷键说明

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