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

📄 dct.c

📁 文件内包含H.263视频编码算法和解码算法2个文件
💻 C
📖 第 1 页 / 共 3 页
字号:
	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 + -