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

📄 b_frame.c

📁 Mobile IP VCEG的信道模拟程序
💻 C
📖 第 1 页 / 共 4 页
字号:
	int fw_pred, bw_pred, bid_pred[4][4];
	int code_num, step_h, step_v, mvd_x, mvd_y;

	// consider code number of fw_predframe_no
	*bid_sad = QP2QUANT[img->qp]*min(fw_predframe_no,1)*2;

	// consider bits of fw_blk_size 
	if(img->fw_blc_size_h==16 && img->fw_blc_size_v==16)			// 16x16 : blocktype 1
		code_num=0;
	else if(img->fw_blc_size_h==16 && img->fw_blc_size_v==8)   // 16x8 : blocktype 2
		code_num=1;						
	else if(img->fw_blc_size_h==8 && img->fw_blc_size_v==16)  // 8x16 : blocktype 3
		code_num=2;						
	else if(img->fw_blc_size_h==8 && img->fw_blc_size_v==8)  // 8x8 : blocktype 4
		code_num=3;
	else if(img->fw_blc_size_h==8 && img->fw_blc_size_v==4)   // 8x4 : blocktype 5
		code_num=4;
	else if(img->fw_blc_size_h==4 && img->fw_blc_size_v==8)   // 4x8 : blocktype 6
		code_num=5;
	else				// 4x4 : blocktype 7
		code_num=6;
	*bid_sad += QP2QUANT[img->qp]*img->blk_bituse[code_num];	

	// consider bits of bw_blk_size
	if(img->bw_blc_size_h==16 && img->bw_blc_size_v==16)			// 16x16 : blocktype 1
		code_num=0;
	else if(img->bw_blc_size_h==16 && img->bw_blc_size_v==8)   // 16x8 : blocktype 2
		code_num=1;						
	else if(img->bw_blc_size_h==8 && img->bw_blc_size_v==16)  // 8x16 : blocktype 3
		code_num=2;						
	else if(img->bw_blc_size_h==8 && img->bw_blc_size_v==8)  // 8x8 : blocktype 4
		code_num=3;
	else if(img->bw_blc_size_h==8 && img->bw_blc_size_v==4)   // 8x4 : blocktype 5
		code_num=4;
	else if(img->bw_blc_size_h==4 && img->bw_blc_size_v==8)   // 4x8 : blocktype 6
		code_num=5;
	else				// 4x4 : blocktype 7
		code_num=6;
	*bid_sad += QP2QUANT[img->qp]*img->blk_bituse[code_num];	

	// consider bits of mvdfw
	step_h=img->fw_blc_size_h/BLOCK_SIZE;  // horizontal stepsize 
	step_v=img->fw_blc_size_v/BLOCK_SIZE;  // vertical stepsize 

	for (j=0; j < BLOCK_SIZE; j += step_v) 
	{            
		for (i=0;i < BLOCK_SIZE; i += step_h) 
		{
			if(img->fw_blc_size_h==16 && img->fw_blc_size_v==16) {			// 16x16 : blocktype 1
				mvd_x=tmp_fwMV[0][img->block_y+j][img->block_x+i+4]-img->p_fwMV[i][j][fw_predframe_no][1][0];
				mvd_y=tmp_fwMV[1][img->block_y+j][img->block_x+i+4]-img->p_fwMV[i][j][fw_predframe_no][1][1];
			}
			else if(img->fw_blc_size_h==16 && img->fw_blc_size_v==8) {  // 16x8 : blocktype 2
				mvd_x=tmp_fwMV[0][img->block_y+j][img->block_x+i+4]-img->p_fwMV[i][j][fw_predframe_no][2][0];
				mvd_y=tmp_fwMV[1][img->block_y+j][img->block_x+i+4]-img->p_fwMV[i][j][fw_predframe_no][2][1];					
			}
			else if(img->fw_blc_size_h==8 && img->fw_blc_size_v==16) { // 8x16 : blocktype 3
				mvd_x=tmp_fwMV[0][img->block_y+j][img->block_x+i+4]-img->p_fwMV[i][j][fw_predframe_no][3][0];
				mvd_y=tmp_fwMV[1][img->block_y+j][img->block_x+i+4]-img->p_fwMV[i][j][fw_predframe_no][3][1];									
			}
			else if(img->fw_blc_size_h==8 && img->fw_blc_size_v==8) { // 8x8 : blocktype 4
				mvd_x=tmp_fwMV[0][img->block_y+j][img->block_x+i+4]-img->p_fwMV[i][j][fw_predframe_no][4][0];
				mvd_y=tmp_fwMV[1][img->block_y+j][img->block_x+i+4]-img->p_fwMV[i][j][fw_predframe_no][4][1];									
			}
			else if(img->fw_blc_size_h==8 && img->fw_blc_size_v==4) {  // 8x4 : blocktype 5
				mvd_x=tmp_fwMV[0][img->block_y+j][img->block_x+i+4]-img->p_fwMV[i][j][fw_predframe_no][5][0];
				mvd_y=tmp_fwMV[1][img->block_y+j][img->block_x+i+4]-img->p_fwMV[i][j][fw_predframe_no][5][1];									
			}
			else if(img->fw_blc_size_h==4 && img->fw_blc_size_v==8) {  // 4x8 : blocktype 6
				mvd_x=tmp_fwMV[0][img->block_y+j][img->block_x+i+4]-img->p_fwMV[i][j][fw_predframe_no][6][0];
				mvd_y=tmp_fwMV[1][img->block_y+j][img->block_x+i+4]-img->p_fwMV[i][j][fw_predframe_no][6][1];									
			}
			else {																											// 4x4 : blocktype 7 
				mvd_x=tmp_fwMV[0][img->block_y+j][img->block_x+i+4]-img->p_fwMV[i][j][fw_predframe_no][7][0];
				mvd_y=tmp_fwMV[1][img->block_y+j][img->block_x+i+4]-img->p_fwMV[i][j][fw_predframe_no][7][1];									
			}
			*bid_sad += QP2QUANT[img->qp]*(img->mv_bituse[absm(mvd_x)]+img->mv_bituse[absm(mvd_y)]);
		}
	}

	// consider bits of mvdbw
	step_h=img->bw_blc_size_h/BLOCK_SIZE;  // horizontal stepsize 
	step_v=img->bw_blc_size_v/BLOCK_SIZE;  // vertical stepsize 
	
	for (j=0; j < BLOCK_SIZE; j += step_v) 
	{            
		for (i=0;i < BLOCK_SIZE; i += step_h) 
		{
			if(img->bw_blc_size_h==16 && img->bw_blc_size_v==16) {			// 16x16 : blocktype 1
				mvd_x=tmp_bwMV[0][img->block_y+j][img->block_x+i+4]-img->p_bwMV[i][j][0][1][0];
				mvd_y=tmp_bwMV[1][img->block_y+j][img->block_x+i+4]-img->p_bwMV[i][j][0][1][1];
			}
			else if(img->bw_blc_size_h==16 && img->bw_blc_size_v==8) {  // 16x8 : blocktype 2
				mvd_x=tmp_bwMV[0][img->block_y+j][img->block_x+i+4]-img->p_bwMV[i][j][0][2][0];
				mvd_y=tmp_bwMV[1][img->block_y+j][img->block_x+i+4]-img->p_bwMV[i][j][0][2][1];					
			}
			else if(img->bw_blc_size_h==8 && img->bw_blc_size_v==16) { // 8x16 : blocktype 3
				mvd_x=tmp_bwMV[0][img->block_y+j][img->block_x+i+4]-img->p_bwMV[i][j][0][3][0];
				mvd_y=tmp_bwMV[1][img->block_y+j][img->block_x+i+4]-img->p_bwMV[i][j][0][3][1];									
			}
			else if(img->bw_blc_size_h==8 && img->bw_blc_size_v==8) { // 8x8 : blocktype 4
				mvd_x=tmp_bwMV[0][img->block_y+j][img->block_x+i+4]-img->p_bwMV[i][j][0][4][0];
				mvd_y=tmp_bwMV[1][img->block_y+j][img->block_x+i+4]-img->p_bwMV[i][j][0][4][1];									
			}
			else if(img->bw_blc_size_h==8 && img->bw_blc_size_v==4) {  // 8x4 : blocktype 5
				mvd_x=tmp_bwMV[0][img->block_y+j][img->block_x+i+4]-img->p_bwMV[i][j][0][5][0];
				mvd_y=tmp_bwMV[1][img->block_y+j][img->block_x+i+4]-img->p_bwMV[i][j][0][5][1];									
			}
			else if(img->bw_blc_size_h==4 && img->bw_blc_size_v==8) {  // 4x8 : blocktype 6
				mvd_x=tmp_bwMV[0][img->block_y+j][img->block_x+i+4]-img->p_bwMV[i][j][0][6][0];
				mvd_y=tmp_bwMV[1][img->block_y+j][img->block_x+i+4]-img->p_bwMV[i][j][0][6][1];									
			}
			else {																											// 4x4 : blocktype 7 
				mvd_x=tmp_bwMV[0][img->block_y+j][img->block_x+i+4]-img->p_bwMV[i][j][0][7][0];
				mvd_y=tmp_bwMV[1][img->block_y+j][img->block_x+i+4]-img->p_bwMV[i][j][0][7][1];									
			}
			*bid_sad += QP2QUANT[img->qp]*(img->mv_bituse[absm(mvd_x)]+img->mv_bituse[absm(mvd_y)]);
		}
	}

	for (mb_y=0; mb_y < MB_BLOCK_SIZE; mb_y += BLOCK_SIZE*2) 
	{
		for (mb_x=0; mb_x < MB_BLOCK_SIZE; mb_x += BLOCK_SIZE*2) 
		{  
			for (block_y=mb_y; block_y < mb_y+BLOCK_SIZE*2; block_y += BLOCK_SIZE) 
			{
				pic_pix_y=img->pix_y+block_y;
				pic_block_y=pic_pix_y/BLOCK_SIZE;
  
				for (block_x=mb_x; block_x < mb_x+BLOCK_SIZE*2; block_x += BLOCK_SIZE) 
				{
					pic_pix_x=img->pix_x+block_x;
					pic_block_x=pic_pix_x/BLOCK_SIZE;

					if(input->mv_res)
					{
						ii4=(img->pix_x+block_x)*8+tmp_fwMV[0][pic_block_y][pic_block_x+4];
						jj4=(img->pix_y+block_y)*8+tmp_fwMV[1][pic_block_y][pic_block_x+4];
						iii4=(img->pix_x+block_x)*8+tmp_bwMV[0][pic_block_y][pic_block_x+4];
						jjj4=(img->pix_y+block_y)*8+tmp_bwMV[1][pic_block_y][pic_block_x+4];
						

#ifndef UMV						// DM : To prevent mv outside the frame
						if((jj4>=img->height*8-24)||(jj4<0)||(ii4>=img->width*8-24)||(ii4<0)
							||(jjj4>=img->height*8-24)||(jjj4<0)||(iii4>=img->width*8-24)||(iii4<0))
						{
							*bid_sad= MAX_DIR_SAD; 
							return;
						}
#endif						
						for (j=0;j<4;j++) {
							j2=j*8;
							for (i=0;i<4;i++) {
								i2=i*8;
#ifdef UMV
								fw_pred = UMVPelY_18 (mref[img->fw_multframe_no],jj4+j2,ii4+i2);
								bw_pred = UMVPelY_18 (mref_P, jjj4+j2, iii4+i2);
#else
								fw_pred = FastPelY_18 (mref[img->fw_multframe_no],jj4+j2,ii4+i2);
								bw_pred = FastPelY_18 (mref_P, jjj4+j2, iii4+i2);
#endif
								bid_pred[i][j]=(int)((fw_pred+bw_pred)/2.0+0.5);
							}
						}
					}
					else
					{
						ii4=(img->pix_x+block_x)*4+tmp_fwMV[0][pic_block_y][pic_block_x+4];
						jj4=(img->pix_y+block_y)*4+tmp_fwMV[1][pic_block_y][pic_block_x+4];
						iii4=(img->pix_x+block_x)*4+tmp_bwMV[0][pic_block_y][pic_block_x+4];
						jjj4=(img->pix_y+block_y)*4+tmp_bwMV[1][pic_block_y][pic_block_x+4];
						
#ifndef UMV
						// DM : To prevent mv outside the frame
						if((jj4>=img->height*4-12)||(jj4<0)||(ii4>=img->width*4-12)||(ii4<0)
							||(jjj4>=img->height*4-12)||(jjj4<0)||(iii4>=img->width*4-12)||(iii4<0))
						{
							*bid_sad= MAX_DIR_SAD; 
							return;
						}
#endif
						for (j=0;j<4;j++) {
							j2=j*4;
							for (i=0;i<4;i++) {
								i2=i*4;
#ifdef UMV
								fw_pred=UMVPelY_14 (mref[img->fw_multframe_no], jj4+j2, ii4+i2);
								bw_pred=UMVPelY_14 (mref_P, jjj4+j2, iii4+i2);
#else
								fw_pred=FastPelY_14 (mref[img->fw_multframe_no], jj4+j2, ii4+i2);
								bw_pred=FastPelY_14 (mref_P, jjj4+j2, iii4+i2);
#endif
								bid_pred[i][j]=(int)((fw_pred+bw_pred)/2.0+0.5);
							}
						}
					}

					for (j=0; j < BLOCK_SIZE; j++) {
						for (i=0; i < BLOCK_SIZE; i++) {
							img->m7[i][j]=imgY_org[img->pix_y+block_y+j][img->pix_x+block_x+i]-bid_pred[i][j];
						}
					}	
					*bid_sad += find_sad(input->hadamard, img->m7);
				}
			}	
		}
	}
}

void get_dir(int *dir_sad)
{
	int mb_y,mb_x, block_y, block_x, pic_pix_y, pic_pix_x, pic_block_y, pic_block_x;
	int i, j, ii4, jj4, iii4, jjj4, i2, j2, hv; 
	int ref_inx, df_pred, db_pred, dir_pred[4][4];
	int refP_tr, TRb, TRp;

	// initialize with bias value
	*dir_sad=-QP2QUANT[img->qp] * 16; 

	// create dfMV, dbMV
	for (mb_y=0; mb_y < MB_BLOCK_SIZE; mb_y += BLOCK_SIZE*2) 
	{
		for (mb_x=0; mb_x < MB_BLOCK_SIZE; mb_x += BLOCK_SIZE*2) 
		{  
			for (block_y=mb_y; block_y < mb_y+BLOCK_SIZE*2; block_y += BLOCK_SIZE) 
			{
				pic_pix_y=img->pix_y+block_y;
				pic_block_y=pic_pix_y/BLOCK_SIZE;

				for (block_x=mb_x; block_x < mb_x+BLOCK_SIZE*2; block_x += BLOCK_SIZE) 
				{
					pic_pix_x=img->pix_x+block_x;
					pic_block_x=pic_pix_x/BLOCK_SIZE;
	
					// next P is intra mode
					if(refFrArr[pic_block_y][pic_block_x]==-1)
					{
						for(hv=0; hv<2; hv++) 
						{
							dfMV[hv][pic_block_y][pic_block_x+4]=dbMV[hv][pic_block_y][pic_block_x+4]=0;
						}
					}
					// next P is skip or inter mode
					else 
					{
#ifdef _ADAPT_LAST_GROUP_
						refP_tr=last_P_no [refFrArr[pic_block_y][pic_block_x]];
#else
						refP_tr=nextP_tr-((refFrArr[pic_block_y][pic_block_x]+1)*img->p_interval);
#endif
						TRb=img->tr-refP_tr;
						TRp=nextP_tr-refP_tr;
						for(hv=0; hv<2; hv++) 
						{
							dfMV[hv][pic_block_y][pic_block_x+4]=TRb*tmp_mv[hv][pic_block_y][pic_block_x+4]/TRp;
							dbMV[hv][pic_block_y][pic_block_x+4]=(TRb-TRp)*tmp_mv[hv][pic_block_y][pic_block_x+4]/TRp;
						}
					}
				}
			}
		}		
	}

	// prediction
	for (mb_y=0; mb_y < MB_BLOCK_SIZE; mb_y += BLOCK_SIZE*2) 
	{
		for (mb_x=0; mb_x < MB_BLOCK_SIZE; mb_x += BLOCK_SIZE*2) 
		{
			for (block_y=mb_y; block_y < mb_y+BLOCK_SIZE*2; block_y += BLOCK_SIZE) 
			{
				pic_pix_y=img->pix_y+block_y;
				pic_block_y=pic_pix_y/BLOCK_SIZE;

				for (block_x=mb_x; block_x < mb_x+BLOCK_SIZE*2; block_x += BLOCK_SIZE) 
				{
					pic_pix_x=img->pix_x+block_x;
					pic_block_x=pic_pix_x/BLOCK_SIZE;

					if(input->mv_res)
					{
						ii4=(img->pix_x+block_x)*8+dfMV[0][pic_block_y][pic_block_x+4];
						jj4=(img->pix_y+block_y)*8+dfMV[1][pic_block_y][pic_block_x+4];
						iii4=(img->pix_x+block_x)*8+dbMV[0][pic_block_y][pic_block_x+4];
						jjj4=(img->pix_y+block_y)*8+dbMV[1][pic_block_y][pic_block_x+4];
						
#ifndef UMV
						// LG : To prevent mv outside the frame
						/* -> corrected by HS
						if(	(jj4 >= (img->height*8- 24) )||(jj4<0)||
							(ii4 >= (img->width*8 - 24) )||(ii4<0) ||
							(jjj4>= (img->height*8- 24) )||(jjj4<0)||
							(iii4>= (img->width*8 - 24) )||(iii4<0) )
						*/
						if(	(jj4  >= 8*(img->height-1) - 24) || (jj4  < 0 ) ||
							(ii4  >= 8*(img->width -1) - 24) || (ii4  < 0 ) ||
							(jjj4 >= 8*(img->height-1) - 24) || (jjj4 < 0 ) ||
							(iii4 >= 8*(img->width -1) - 24) || (iii4 < 0 )  )
						{
							*dir_sad= MAX_DIR_SAD; 
							return;
						}
						else 
#endif
						{
							// next P is intra mode
							if(refFrArr[pic_block_y][pic_block_x]==-1)
								ref_inx=(img->number-1)%img->buf_cycle;
							// next P is skip or inter mode
							else
								ref_inx=(img->number-refFrArr[pic_block_y][pic_block_x]-1)%img->buf_cycle;
							
							for (j=0;j<4;j++) {
								j2=j*8;
								for (i=0;i<4;i++) {
									i2=i*8;
#ifdef UMV
									df_pred = UMVPelY_18 (mref[ref_inx], jj4 +j2,  ii4+i2);
									db_pred = UMVPelY_18 (mref_P,        jjj4+j2, iii4+i2);
#else
									df_pred = FastPelY_18 (mref[ref_inx], jj4 +j2,  ii4+i2);
									db_pred = FastPelY_18 (mref_P,        jjj4+j2, iii4+i2);
#endif
									dir_pred[i][j]=(int)((df_pred+db_pred)/2.0+0.5);                
								}
							}
							
							for (j=0; j < BLOCK_SIZE; j++) {
								for (i=0; i < BLOCK_SIZE; i++) {
									img->m7[i][j]=imgY_org[img->pix_y+block_y+j][img->pix_x+block_x+i]-dir_pred[i][j];
								}
							}
							*dir_sad += find_sad(input->hadamard, img->m7);
						}
					} 
					else
					{
						ii4=(img->pix_x+block_x)*4+dfMV[0][pic_block_y][pic_block_x+4];
						jj4=(img->pix_y+block_y)*4+dfMV[1][pic_block_y][pic_block_x+4];
						iii4=(img->pix_x+block_x)*4+dbMV[0][pic_block_y][pic_block_x+4];
						jjj4=(img->pix_y+block_y)*4+dbMV[1][pic_block_y][pic_block_x+4];
						
#ifndef UMV
						// LG : To prevent mv outside the frame
						/* -> corrected by HS
						if(	(jj4 >= (img->height*4- 12) )||(jj4<0)||
							(ii4 >= (img->width*4 - 12) )||(ii4<0) ||
							(jjj4>= (img->height*4- 12) )||(jjj4<0)||
							(iii4>= (img->width*4 - 12) )||(iii4<0) )
						*/ 
						if(	(jj4  >= 4*(img->height-1) - 12) || (jj4  < 0 ) ||
							(ii4  >= 4*(img->width -1) - 12) || (ii4  < 0 ) ||
							(jjj4 >= 4*(img->height-1) - 12) || (jjj4 < 0 ) ||
							(iii4 >= 4*(img->width -1) - 12) || (iii4 < 0 )  )
						{
							*dir_sad= MAX_DIR_SAD; 
							return;
						}
						else 
#endif
						{
							// next P is intra mode
							if(refFrArr[pic_block_y][pic_block_x]==-1)
								ref_inx=(img->number-1)%img->buf_cycle;
							// next P is skip or inter mode
							else
								ref_inx=(img->number-refFrArr[pic_block_y][pic_block_x]-1)%img->buf_cycle;
							
							for (j=0;j<4;j++) {
								j2=j*4;
								for (i=0;i<4;i++) {
									i2=i*4;
#ifdef UMV
									df_pred=UMVPelY_14 (mref[ref_inx], jj4+j2, ii4+i2);								
									db_pred=UMVPelY_14 (mref_P, jjj4+j2, iii4+i2);
#else
									df_pred=FastPelY_14 (mref[ref_inx], jj4+j2, ii4+i2);								
									db_pred=FastPelY_14 (mref_P, jjj4+j2, iii4+i2);
#endif
									dir_pred[i][j]=(int)((df_pred+db_pred)/2.0+0.5);                
								}
							}
							
							for (j=0; j < BLOCK_SIZE; j++) {
								for (i=0; i < BLOCK_SIZE; i++) {
									img->m7[i][j]=imgY_org[img->pix_y+block_y+j][img->pix_x+block_x+i]-dir_pred[i][j];
								}
							}
							*dir_sad += find_sad(input->hadamard, img->m7);
						} // else
					} // else 

				} // block_x
			} // block_y
		} // mb_x
	} // mb_y
}

void compare_sad(int tot_intra_sad, int fw_sad, int bw_sad, int bid_sad, int dir_sad)
{
	int hv, i, j;


	// LG : dfMV, dbMV reset
	if( (dir_sad<=tot_intra_sad) && (dir_sad<=fw_sad) && (dir_sad<=bw_sad) && (dir_sad<=bid_sad) ) {
		img->imod = B_Direct;
		img->mb_mode = 0;
		for(hv=0; hv<2; hv++)
			for(i=0; i<4; i++)
				for(j=0; j<4; j++)				
					tmp_fwMV[hv][img->block_y+j][img->block_x+i+4]=
					tmp_bwMV[hv][img->block_y+j][img->block_x+i+4]=0;
	}
	else if( (bw_sad<=tot_intra_sad) && (bw_sad<=fw_sad) && (bw_sad<=bid_sad) && (bw_sad<=dir_sad) ) {
		img->imod = B_Backward;
		img->mb_mode = img->bw_mb_mode;
		for(hv=0; hv<2; hv++)
			for(i=0; i<4; i++)
				for(j=0; j<4; j++)
					tmp_fwMV[hv][img->block_y+j][img->block_x+i+4]=
					dfMV[hv][img->block_y+j][img->block_x+i+4]=
					dbMV[hv][img->block_y+j][img->block_x+i+4]=0;
	}
	else if( (fw_sad<=tot_intra_sad) && (fw_sad<=bw_sad) && (fw_sad<=bid_sad) && (fw_sad<=dir_sad) ) {
		img->imod = B_Forward;
		img->mb_mode = img->fw_mb_mode;
		for(hv=0; hv<2; hv++)
			for(i=0; i<4; i++)
				for(j=0; j<4; j++)
					tmp_bwMV[hv][img->block_y+j][img->block_x+i+4]=
					dfMV[hv][img->block_y+j][img->block_x+i+4]=
					dbMV[hv][img->block_y+j][img->block_x+i+4]=0;
	}
	else if( (bid_sad<=tot_intra_sad) && (bid_sad<=fw_sad) && (bid_sad<=bw_sad) && (bid_sad<=dir_sad) ) {
		img->imod = B_Bidirect;
		img->mb_mode = 3;
		for(hv=0; hv<2; hv++)
			for(i=0; i<4; i++)
				for(j=0; j<4; j++)
					dfMV[hv][img->block_y+j][img->block_x+i+4]=
					dbMV[hv][img->block_y+j][img->block_x+i+4]=0;				
	}	
	else if( (tot_intra_sad<=dir_sad) && (tot_intra_sad<=bw_sad) && (tot_intra_sad<=fw_sad) && (tot_intra_sad<=bid_sad) ) 
	{
		img->mb_mode=img->imod+8*img->type; // img->type=2

		for(hv=0; hv<2; hv++)
			for(i=0; i<4; i++)
				for(j=0; j<4; j++)
					tmp_fwMV[hv][img->block_y+j][img->block_x+i+4]=
					tmp_bwMV[hv][img->block_y+j][img->block_x+i+4]=
					dfMV[hv][img->block_y+j][img->block_x+i+4]=
					dbMV[hv][img->block_y+j][img->block_x+i+4]=0;
	}
}

⌨️ 快捷键说明

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