📄 mvidct.h
字号:
#ifndef __MVIDCT_H__
#define __MVIDCT_H__
#include "MVGlobal.h"
#define W1 2841 /* 2048*sqrt(2)*cos(1*pi/16) */
#define W2 2676 /* 2048*sqrt(2)*cos(2*pi/16) */
#define W3 2408 /* 2048*sqrt(2)*cos(3*pi/16) */
#define W5 1609 /* 2048*sqrt(2)*cos(5*pi/16) */
#define W6 1108 /* 2048*sqrt(2)*cos(6*pi/16) */
#define W7 565 /* 2048*sqrt(2)*cos(7*pi/16) */
short iclip[1024]; /* clipping table */
short *iclp;
/*related to idct functions is two .one is init
* second is idct, idct function is inline .
* functions are from idc.c
* 20070122 wuhaibin
*/
void idct_int32_init(void);
__inline void idct_int32(short *const block)
{
short *blk;
long i;
long X0, X1, X2, X3, X4, X5, X6, X7, X8;
for (i = 0; i < 8; i++)
{
blk = block + (i << 3);
if (!((X1 = blk[4] << 11) | (X2 = blk[6]) |
(X3 = blk[2])|(X4 = blk[1])|(X5 = blk[7])|
(X6 = blk[5])|(X7 = blk[3])))
{
blk[0] = blk[1] = blk[2] = blk[3] = blk[4] = blk[5] = blk[6] =
blk[7] = blk[0] << 3;
continue;
}
X0 = (blk[0] << 11) + 128;
X8 = W7 * (X4 + X5);
X4 = X8 + (W1 - W7) * X4;
X5 = X8 - (W1 + W7) * X5;
X8 = W3 * (X6 + X7);
X6 = X8 - (W3 - W5) * X6;
X7 = X8 - (W3 + W5) * X7;
X8 = X0 + X1;
X0 -= X1;
X1 = W6 * (X3 + X2);
X2 = X1 - (W2 + W6) * X2;
X3 = X1 + (W2 - W6) * X3;
X1 = X4 + X6;
X4 -= X6;
X6 = X5 + X7;
X5 -= X7;
X7 = X8 + X3;
X8 -= X3;
X3 = X0 + X2;
X0 -= X2;
X2 = (181 * (X4 + X5) + 128) >> 8;
X4 = (181 * (X4 - X5) + 128) >> 8;
blk[0] = (short) ((X7 + X1) >> 8);
blk[1] = (short) ((X3 + X2) >> 8);
blk[2] = (short) ((X0 + X4) >> 8);
blk[3] = (short) ((X8 + X6) >> 8);
blk[4] = (short) ((X8 - X6) >> 8);
blk[5] = (short) ((X0 - X4) >> 8);
blk[6] = (short) ((X3 - X2) >> 8);
blk[7] = (short) ((X7 - X1) >> 8);
}
for (i = 0; i < 8; i++)
{
blk = block + i;
// shortcut wuhaibin 2007-01-17 num1 * num2 -> sum, 7*8->56;
if (!((X1 = (blk[32] << 8)) | (X2 = blk[48]) |
(X3 = blk[16])|(X4 = blk[8])|(X5 = blk[56])|
(X6 = blk[40]) | (X7 = blk[24])))
{
blk[0] = blk[8] = blk[16] = blk[24] = blk[32] =
blk[40] = blk[48] = blk[56] =
iclp[(blk[0] + 32) >> 6];
continue;
}
X0 = (blk[0] << 8) + 8192;
X8 = W7 * (X4 + X5) + 4;
X4 = (X8 + (W1 - W7) * X4) >> 3;
X5 = (X8 - (W1 + W7) * X5) >> 3;
X8 = W3 * (X6 + X7) + 4;
X6 = (X8 - (W3 - W5) * X6) >> 3;
X7 = (X8 - (W3 + W5) * X7) >> 3;
X8 = X0 + X1;
X0 -= X1;
X1 = W6 * (X3 + X2) + 4;
X2 = (X1 - (W2 + W6) * X2) >> 3;
X3 = (X1 + (W2 - W6) * X3) >> 3;
X1 = X4 + X6;
X4 -= X6;
X6 = X5 + X7;
X5 -= X7;
X7 = X8 + X3;
X8 -= X3;
X3 = X0 + X2;
X0 -= X2;
X2 = (181 * (X4 + X5) + 128) >> 8;
X4 = (181 * (X4 - X5) + 128) >> 8;
blk[0] = iclp[(X7 + X1) >> 14];
blk[8] = iclp[(X3 + X2) >> 14];
blk[16] = iclp[(X0 + X4) >> 14];
blk[24] = iclp[(X8 + X6) >> 14];
blk[32] = iclp[(X8 - X6) >> 14];
blk[40] = iclp[(X0 - X4) >> 14];
blk[48] = iclp[(X3 - X2) >> 14];
blk[56] = iclp[(X7 - X1) >> 14];
}
}
#endif;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -