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

📄 one_d.c

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

#include "coeffs.h"

int scale = 2;

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 ;
   }

   one_d_dct(data, scale);

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

#if	defined(__LITTLE_ENDIAN__)
#define PACK16_MSB(a, b)       PACK16MSB(b, a)
#define	READ_NORM(a)		ROLI(16, (a))
#define	READ_REV(a)		(a)
#else
#define PACK16_MSB(a, b)       PACK16MSB(a, b)
#define	READ_NORM(a)		(a)
#define	READ_REV(a)		ROLI(16, (a))
#endif

#define	HROUND(x)	(((x) << scale) + 0x8000)

one_d_dct(long *tab, int scale)
{
	int tmp0, tmp1, tmp2, tmp3, tmp101, tmp132, tmp176, tmp145,
	    tmp201, tmp232; 
	int s0, s1, s2, s3, s4, s5, s6, s7;

	tmp0 =  READ_NORM((tab)[0]);		
	tmp1 =  READ_REV ((tab)[1]);		
	tmp2 =  READ_NORM((tab)[2]);		
	tmp3 =  READ_REV ((tab)[3]);		
		 				
	tmp101 = DSPIDUALADD(tmp0,tmp3);	
	tmp132 = DSPIDUALADD(tmp1,tmp2);	
	tmp176 = DSPIDUALSUB(tmp0,tmp3);	
	tmp145 = DSPIDUALSUB(tmp1,tmp2);	
						
	tmp201 = DSPIDUALADD(tmp101,tmp132);
	tmp232 = DSPIDUALSUB(tmp101,tmp132);
				
	s0 = IFIR16(tmp201,C8);	
	s4 = IFIR16(tmp201,C9);	
	s2 = IFIR16(tmp232,C10);
	s6 = IFIR16(tmp232,C11);			
	s7 = IFIR16(tmp145,C0) + IFIR16(tmp176,C1);

	s3 = IFIR16(tmp145,C2) + IFIR16(tmp176,C3);
	s5 = IFIR16(tmp145,C4) + IFIR16(tmp176,C5);
	s1 = IFIR16(tmp145,C6) + IFIR16(tmp176,C7);

	tab[0] = PACK16_MSB(HROUND(s0), HROUND(s1));
	tab[1] = PACK16_MSB(HROUND(s2), HROUND(s3));
	tab[2] = PACK16_MSB(HROUND(s4), HROUND(s5));
	tab[3] = PACK16_MSB(HROUND(s6), HROUND(s7));
}

⌨️ 快捷键说明

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