📄 dct.c
字号:
q0 = IFIR16(c[8],p16);
q1 = IFIR16(c[9],p17);
q2 = IFIR16(c[8],p18);
q3 = IFIR16(c[9],p19);
q4 = IFIR16(c[8],p20);
q5 = IFIR16(c[9],p21);
q6 = IFIR16(c[8],p22);
q7 = IFIR16(c[9],p23);
q8 = IFIR16(c[8],p24);
q9 = IFIR16(c[9],p25);
q10 = IFIR16(c[8],p26);
q11 = IFIR16(c[9],p27);
q12 = IFIR16(c[8],p28);
q13 = IFIR16(c[9],p29);
q14 = IFIR16(c[8],p30);
q15 = IFIR16(c[9],p31);
add0 = q0+q1;
add1 = q2+q3;
add2 = q4+q5;
add3 = q6+q7;
add4 = q8+q9;
add5 = q10+q11;
add6 = q12+q13;
add7 = q14+q15;
fbs[32] = ASRI(15,add0);
fbs[33] = ASRI(15,add1);
fbs[34] = ASRI(15,add2);
fbs[35] = ASRI(15,add3);
fbs[36] = ASRI(15,add4);
fbs[37] = ASRI(15,add5);
fbs[38] = ASRI(15,add6);
fbs[39] = ASRI(15,add7);
q0 = IFIR16(c[12],p16);
q1 = IFIR16(c[13],p17);
q2 = IFIR16(c[12],p18);
q3 = IFIR16(c[13],p19);
q4 = IFIR16(c[12],p20);
q5 = IFIR16(c[13],p21);
q6 = IFIR16(c[12],p22);
q7 = IFIR16(c[13],p23);
q8 = IFIR16(c[12],p24);
q9 = IFIR16(c[13],p25);
q10 = IFIR16(c[12],p26);
q11 = IFIR16(c[13],p27);
q12 = IFIR16(c[12],p28);
q13 = IFIR16(c[13],p29);
q14 = IFIR16(c[12],p30);
q15 = IFIR16(c[13],p31);
add0 = q0+q1;
add1 = q2+q3;
add2 = q4+q5;
add3 = q6+q7;
add4 = q8+q9;
add5 = q10+q11;
add6 = q12+q13;
add7 = q14+q15;
fbs[48] = ASRI(15,add0);
fbs[49] = ASRI(15,add1);
fbs[50] = ASRI(15,add2);
fbs[51] = ASRI(15,add3);
fbs[52] = ASRI(15,add4);
fbs[53] = ASRI(15,add5);
fbs[54] = ASRI(15,add6);
fbs[55] = ASRI(15,add7);
q0 = ROL(fb[3],16);
q1 = ROL(fb[2],16);
q2 = ROL(fb[7],16);
q3 = ROL(fb[6],16);
q4 = ROL(fb[11],16);
q5 = ROL(fb[10],16);
q6 = ROL(fb[15],16);
q7 = ROL(fb[14],16);
p0 = DSPIDUALADD(fb[0],q0);
p1 = DSPIDUALADD(fb[1],q1);
p2 = DSPIDUALADD(fb[4],q2);
p3 = DSPIDUALADD(fb[5],q3);
p4 = DSPIDUALADD(fb[8],q4);
p5 = DSPIDUALADD(fb[9],q5);
p6 = DSPIDUALADD(fb[12],q6);
p7 = DSPIDUALADD(fb[13],q7);
p16 = DSPIDUALSUB(fb[0],q0);
p17 = DSPIDUALSUB(fb[1],q1);
p18 = DSPIDUALSUB(fb[4],q2);
p19 = DSPIDUALSUB(fb[5],q3);
p20 = DSPIDUALSUB(fb[8],q4);
p21 = DSPIDUALSUB(fb[9],q5);
p22 = DSPIDUALSUB(fb[12],q6);
p23 = DSPIDUALSUB(fb[13],q7);
q0 = ROL(fb[19],16);
q1 = ROL(fb[18],16);
q2 = ROL(fb[23],16);
q3 = ROL(fb[22],16);
q4 = ROL(fb[27],16);
q5 = ROL(fb[26],16);
q6 = ROL(fb[31],16);
q7 = ROL(fb[30],16);
p8 = DSPIDUALADD(fb[16],q0);
p9 = DSPIDUALADD(fb[17],q1);
p10 = DSPIDUALADD(fb[20],q2);
p11 = DSPIDUALADD(fb[21],q3);
p12 = DSPIDUALADD(fb[24],q4);
p13 = DSPIDUALADD(fb[25],q5);
p14 = DSPIDUALADD(fb[28],q6);
p15 = DSPIDUALADD(fb[29],q7);
p24 = DSPIDUALSUB(fb[16],q0);
p25 = DSPIDUALSUB(fb[17],q1);
p26 = DSPIDUALSUB(fb[20],q2);
p27 = DSPIDUALSUB(fb[21],q3);
p28 = DSPIDUALSUB(fb[24],q4);
p29 = DSPIDUALSUB(fb[25],q5);
p30 = DSPIDUALSUB(fb[28],q6);
p31 = DSPIDUALSUB(fb[29],q7);
c = (int *)coef;
q0 = IFIR16(p0,c[0]);
q1 = IFIR16(p1,c[1]);
q2 = IFIR16(p16,c[2]);
q3 = IFIR16(p17,c[3]);
q4 = IFIR16(p0,c[4]);
q5 = IFIR16(p1,c[5]);
q6 = IFIR16(p16,c[6]);
q7 = IFIR16(p17,c[7]);
q8 = IFIR16(p0,c[8]);
q9 = IFIR16(p1,c[9]);
q10 = IFIR16(p16,c[10]);
q11 = IFIR16(p17,c[11]);
q12 = IFIR16(p0,c[12]);
q13 = IFIR16(p1,c[13]);
q14 = IFIR16(p16,c[14]);
q15 = IFIR16(p17,c[15]);
add0 = q0+q1;
add1 = q2+q3;
add2 = q4+q5;
add3 = q6+q7;
add4 = q8+q9;
add5 = q10+q11;
add6 = q12+q13;
add7 = q14+q15;
blk[0] = ASRI(15,add0);
blk[1] = ASRI(15,add1);
blk[5] = ASRI(15,add2);
blk[6] = ASRI(15,add3);
blk[14] = ASRI(15,add4);
blk[15] = ASRI(15,add5);
blk[27] = ASRI(15,add6);
blk[28] = ASRI(15,add7);
q0 = IFIR16(p2,c[0]);
q1 = IFIR16(p3,c[1]);
q2 = IFIR16(p18,c[2]);
q3 = IFIR16(p19,c[3]);
q4 = IFIR16(p2,c[4]);
q5 = IFIR16(p3,c[5]);
q6 = IFIR16(p18,c[6]);
q7 = IFIR16(p19,c[7]);
q8 = IFIR16(p2,c[8]);
q9 = IFIR16(p3,c[9]);
q10 = IFIR16(p18,c[10]);
q11 = IFIR16(p19,c[11]);
q12 = IFIR16(p2,c[12]);
q13 = IFIR16(p3,c[13]);
q14 = IFIR16(p18,c[14]);
q15 = IFIR16(p19,c[15]);
add0 = q0+q1;
add1 = q2+q3;
add2 = q4+q5;
add3 = q6+q7;
add4 = q8+q9;
add5 = q10+q11;
add6 = q12+q13;
add7 = q14+q15;
blk[2] = ASRI(15,add0);
blk[4] = ASRI(15,add1);
blk[7] = ASRI(15,add2);
blk[13] = ASRI(15,add3);
blk[16] = ASRI(15,add4);
blk[26] = ASRI(15,add5);
blk[29] = ASRI(15,add6);
blk[42] = ASRI(15,add7);
q0 = IFIR16(p4,c[0]);
q1 = IFIR16(p5,c[1]);
q2 = IFIR16(p20,c[2]);
q3 = IFIR16(p21,c[3]);
q4 = IFIR16(p4,c[4]);
q5 = IFIR16(p5,c[5]);
q6 = IFIR16(p20,c[6]);
q7 = IFIR16(p21,c[7]);
q8 = IFIR16(p4,c[8]);
q9 = IFIR16(p5,c[9]);
q10 = IFIR16(p20,c[10]);
q11 = IFIR16(p21,c[11]);
q12 = IFIR16(p4,c[12]);
q13 = IFIR16(p5,c[13]);
q14 = IFIR16(p20,c[14]);
q15 = IFIR16(p21,c[15]);
add0 = q0+q1;
add1 = q2+q3;
add2 = q4+q5;
add3 = q6+q7;
add4 = q8+q9;
add5 = q10+q11;
add6 = q12+q13;
add7 = q14+q15;
blk[3] = ASRI(15,add0);
blk[8] = ASRI(15,add1);
blk[12] = ASRI(15,add2);
blk[17] = ASRI(15,add3);
blk[25] = ASRI(15,add4);
blk[30] = ASRI(15,add5);
blk[41] = ASRI(15,add6);
blk[43] = ASRI(15,add7);
q0 = IFIR16(p6,c[0]);
q1 = IFIR16(p7,c[1]);
q2 = IFIR16(p22,c[2]);
q3 = IFIR16(p23,c[3]);
q4 = IFIR16(p6,c[4]);
q5 = IFIR16(p7,c[5]);
q6 = IFIR16(p22,c[6]);
q7 = IFIR16(p23,c[7]);
q8 = IFIR16(p6,c[8]);
q9 = IFIR16(p7,c[9]);
q10 = IFIR16(p22,c[10]);
q11 = IFIR16(p23,c[11]);
q12 = IFIR16(p6,c[12]);
q13 = IFIR16(p7,c[13]);
q14 = IFIR16(p22,c[14]);
q15 = IFIR16(p23,c[15]);
add0 = q0+q1;
add1 = q2+q3;
add2 = q4+q5;
add3 = q6+q7;
add4 = q8+q9;
add5 = q10+q11;
add6 = q12+q13;
add7 = q14+q15;
blk[9] = ASRI(15,add0);
blk[11] = ASRI(15,add1);
blk[18] = ASRI(15,add2);
blk[24] = ASRI(15,add3);
blk[31] = ASRI(15,add4);
blk[40] = ASRI(15,add5);
blk[44] = ASRI(15,add6);
blk[53] = ASRI(15,add7);
q0 = IFIR16(p8,c[0]);
q1 = IFIR16(p9,c[1]);
q2 = IFIR16(p24,c[2]);
q3 = IFIR16(p25,c[3]);
q4 = IFIR16(p8,c[4]);
q5 = IFIR16(p9,c[5]);
q6 = IFIR16(p24,c[6]);
q7 = IFIR16(p25,c[7]);
q8 = IFIR16(p8,c[8]);
q9 = IFIR16(p9,c[9]);
q10 = IFIR16(p24,c[10]);
q11 = IFIR16(p25,c[11]);
q12 = IFIR16(p8,c[12]);
q13 = IFIR16(p9,c[13]);
q14 = IFIR16(p24,c[14]);
q15 = IFIR16(p25,c[15]);
add0 = q0+q1;
add1 = q2+q3;
add2 = q4+q5;
add3 = q6+q7;
add4 = q8+q9;
add5 = q10+q11;
add6 = q12+q13;
add7 = q14+q15;
blk[10] = ASRI(15,add0);
blk[19] = ASRI(15,add1);
blk[23] = ASRI(15,add2);
blk[32] = ASRI(15,add3);
blk[39] = ASRI(15,add4);
blk[45] = ASRI(15,add5);
blk[52] = ASRI(15,add6);
blk[54] = ASRI(15,add7);
q0 = IFIR16(p10,c[0]);
q1 = IFIR16(p11,c[1]);
q2 = IFIR16(p26,c[2]);
q3 = IFIR16(p27,c[3]);
q4 = IFIR16(p10,c[4]);
q5 = IFIR16(p11,c[5]);
q6 = IFIR16(p26,c[6]);
q7 = IFIR16(p27,c[7]);
q8 = IFIR16(p10,c[8]);
q9 = IFIR16(p11,c[9]);
q10 = IFIR16(p26,c[10]);
q11 = IFIR16(p27,c[11]);
q12 = IFIR16(p10,c[12]);
q13 = IFIR16(p11,c[13]);
q14 = IFIR16(p26,c[14]);
q15 = IFIR16(p27,c[15]);
add0 = q0+q1;
add1 = q2+q3;
add2 = q4+q5;
add3 = q6+q7;
add4 = q8+q9;
add5 = q10+q11;
add6 = q12+q13;
add7 = q14+q15;
blk[20] = ASRI(15,add0);
blk[22] = ASRI(15,add1);
blk[33] = ASRI(15,add2);
blk[38] = ASRI(15,add3);
blk[46] = ASRI(15,add4);
blk[51] = ASRI(15,add5);
blk[55] = ASRI(15,add6);
blk[60] = ASRI(15,add7);
q0 = IFIR16(p12,c[0]);
q1 = IFIR16(p13,c[1]);
q2 = IFIR16(p28,c[2]);
q3 = IFIR16(p29,c[3]);
q4 = IFIR16(p12,c[4]);
q5 = IFIR16(p13,c[5]);
q6 = IFIR16(p28,c[6]);
q7 = IFIR16(p29,c[7]);
q8 = IFIR16(p12,c[8]);
q9 = IFIR16(p13,c[9]);
q10 = IFIR16(p28,c[10]);
q11 = IFIR16(p29,c[11]);
q12 = IFIR16(p12,c[12]);
q13 = IFIR16(p13,c[13]);
q14 = IFIR16(p28,c[14]);
q15 = IFIR16(p29,c[15]);
add0 = q0+q1;
add1 = q2+q3;
add2 = q4+q5;
add3 = q6+q7;
add4 = q8+q9;
add5 = q10+q11;
add6 = q12+q13;
add7 = q14+q15;
blk[21] = ASRI(15,add0);
blk[34] = ASRI(15,add1);
blk[37] = ASRI(15,add2);
blk[47] = ASRI(15,add3);
blk[50] = ASRI(15,add4);
blk[56] = ASRI(15,add5);
blk[59] = ASRI(15,add6);
blk[61] = ASRI(15,add7);
q0 = IFIR16(p14,c[0]);
q1 = IFIR16(p15,c[1]);
q2 = IFIR16(p30,c[2]);
q3 = IFIR16(p31,c[3]);
q4 = IFIR16(p14,c[4]);
q5 = IFIR16(p15,c[5]);
q6 = IFIR16(p30,c[6]);
q7 = IFIR16(p31,c[7]);
q8 = IFIR16(p14,c[8]);
q9 = IFIR16(p15,c[9]);
q10 = IFIR16(p30,c[10]);
q11 = IFIR16(p31,c[11]);
q12 = IFIR16(p14,c[12]);
q13 = IFIR16(p15,c[13]);
q14 = IFIR16(p30,c[14]);
q15 = IFIR16(p31,c[15]);
add0 = q0+q1;
add1 = q2+q3;
add2 = q4+q5;
add3 = q6+q7;
add4 = q8+q9;
add5 = q10+q11;
add6 = q12+q13;
add7 = q14+q15;
blk[35] = ASRI(15,add0);
blk[36] = ASRI(15,add1);
blk[48] = ASRI(15,add2);
blk[49] = ASRI(15,add3);
blk[57] = ASRI(15,add4);
blk[58] = ASRI(15,add5);
blk[62] = ASRI(15,add6);
blk[63] = ASRI(15,add7);
return 0;
}
int Idct_MY(short int *coeff,short int *block)
{
int *m, *c;
short int *blk;
int p0, p1, p2, p3, p4, p5, p6, p7,
p8, p9, p10, p11, p12, p13, p14, p15,
p16, p17, p18, p19, p20, p21, p22, p23,
p24, p25, p26, p27, p28, p29, p30, p31;
int temp0,temp1,temp2,temp3,temp4,temp5,temp6,temp7,
temp8,temp9,temp10,temp11,temp12,temp13,temp14,temp15;
int add0,add1,add2,add3,add4,add5,add6,add7;
short int mid[64];
short int zig[64];
temp0 = coeff[0];
temp1 = coeff[1];
temp2 = coeff[5];
temp3 = coeff[6];
temp4 = coeff[14];
temp5 = coeff[15];
temp6 = coeff[27];
temp7 = coeff[28];
temp8 = coeff[2];
temp9 = coeff[4];
temp10 = coeff[7];
temp11 = coeff[13];
temp12 = coeff[16];
temp13 = coeff[26];
temp14 = coeff[29];
temp15 = coeff[42];
zig[0] = temp0;
zig[1] = temp1;
zig[2] = temp2;
zig[3] = temp3;
zig[4] = temp4;
zig[5] = temp5;
zig[6] = temp6;
zig[7] = temp7;
zig[8] = temp8;
zig[9] = temp9;
zig[10] = temp10;
zig[11] = temp11;
zig[12] = temp12;
zig[13] = temp13;
zig[14] = temp14;
zig[15] = temp15;
temp0 = coeff[3];
temp1 = coeff[8];
temp2 = coeff[12];
temp3 = coeff[17];
temp4 = coeff[25];
temp5 = coeff[30];
temp6 = coeff[41];
temp7 = coeff[43];
temp8 = coeff[9];
temp9 = coeff[11];
temp10 = coeff[18];
temp11 = coeff[24];
temp12 = coeff[31];
temp13 = coeff[40];
temp14 = coeff[44];
temp15 = coeff[53];
zig[16] = temp0;
zig[17] = temp1;
zig[18] = temp2;
zig[19] = temp3;
zig[20] = temp4;
zig[21] = temp5;
zig[22] = temp6;
zig[23] = temp7;
zig[24] = temp8;
zig[25] = temp9;
zig[26] = temp10;
zig[27] = temp11;
zig[28] = temp12;
zig[29] = temp13;
zig[30] = temp14;
zig[31] = temp15;
temp0 = coeff[10];
temp1 = coeff[19];
temp2 = coeff[23];
temp3 = coeff[32];
temp4 = coeff[39];
temp5 = coeff[45];
temp6 = coeff[52];
temp7 = coeff[54];
temp8 = coeff[20];
temp9 = coeff[22];
temp10 = coeff[33];
temp11 = coeff[38];
temp12 = coeff[46];
temp13 = coeff[51];
temp14 = coeff[55];
temp15 = coeff[60];
zig[32] = temp0;
zig[33] = temp1;
zig[34] = temp2;
zig[35] = temp3;
zig[36] = temp4;
zig[37] = temp5;
zig[38] = temp6;
zig[39] = temp7;
zig[40] = temp8;
zig[41] = temp9;
zig[42] = temp10;
zig[43] = temp11;
zig[44] = temp12;
zig[45] = temp13;
zig[46] = temp14;
zig[47] = temp15;
temp0 = coeff[21];
temp1 = coeff[34];
temp2 = coeff[37];
temp3 = coeff[47];
temp4 = coeff[50];
temp5 = coeff[56];
temp6 = coeff[59];
temp7 = coeff[61];
temp8 = coeff[35];
temp9 = coeff[36];
temp10 = coeff[48];
temp11 = coeff[49];
temp12 = coeff[57];
temp13 = coeff[58];
temp14 = coeff[62];
temp15 = coeff[63];
zig[48] = temp0;
zig[49] = temp1;
zig[50] = temp2;
zig[51] = temp3;
zig[52] = temp4;
zig[53] = temp5;
zig[54] = temp6;
zig[55] = temp7;
zig[56] = temp8;
zig[57] = temp9;
zig[58] = temp10;
zig[59] = temp11;
zig[60] = temp12;
zig[61] = temp13;
zig[62] = temp14;
zig[63] = temp15;
m = (int *)zig;
c = (int *)icoef;
blk = block;
p0 = PACK16LSB(m[8], m[0]);
p1 = PACK16LSB(m[24], m[16]);
p2 = PACK16LSB(m[12], m[4]);
p3 = PACK16LSB(m[28], m[20]);
p4 = PACK16MSB(m[8], m[0]);
p5 = PACK16MSB(m[24], m[16]);
p6 = PACK16MSB(m[12], m[4]);
p7 = PACK16MSB(m[28], m[20]);
p8 = PACK16LSB(m[9], m[1]);
p9 = PACK16LSB(m[25], m[17]);
p10 = PACK16LSB(m[13], m[5]);
p11 = PACK16LSB(m[29], m[21]);
p12 = PACK16MSB(m[9], m[1]);
p13 = PACK16MSB(m[25], m[17]);
p14 = PACK16MSB(m[13], m[5]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -