| 在ug871的Chapter 6: Design Analysis示例中使用了DCT变换,其中使用了DESCALE宏对DCT变换数据进行处理,DESCALE宏的定义为 #define CONST_BITS  13
 #define DESCALE(x,n)  (((x) + (1 << ((n)-1))) >> n),
 在DCT算法中的宏的使用情况是
 DCT_Outer_Loop:
 for (k = 0; k < DCT_SIZE; k++) {
 DCT_Inner_Loop:
 for(n = 0, tmp = 0; n < DCT_SIZE; n++) {
 int coeff = (int)dct_coeff_table[k][n];
 tmp += src[n] * coeff;
 }
 dst[k] = DESCALE(tmp, CONST_BITS);
 }
 }
 我对这个DESCALE的作用没看懂,为什么动过左右移数据可以实现数据的处理,另外,为什么此处要进行数据处理,并且为什么移位的CONST_BITS设定为13,依据是什么?
 请资深技术帮忙解答,谢谢!
 |