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

📄 macroblock.cpp

📁 h264编解码.用C++实现了图像的编解码功能。
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    img->mprr[DIAG_DOWN_LEFT_PRED][10] = 
    img->mprr[DIAG_DOWN_LEFT_PRED][13] = (pe + pg + (pf<<1) + 2) >>2;
    img->mprr[DIAG_DOWN_LEFT_PRED][11] = 
    img->mprr[DIAG_DOWN_LEFT_PRED][14] = (pf + ph + (pg<<1) + 2) >>2;
    img->mprr[DIAG_DOWN_LEFT_PRED][15] = (pg + 3*(ph) + 2) >>2;

    // Mode VERT_LEFT_PRED
    img->mprr[VERT_LEFT_PRED][0] = (pa + pb + 1) >>1;
    img->mprr[VERT_LEFT_PRED][1] = 
    img->mprr[VERT_LEFT_PRED][8] = (pb + pc + 1) >>1;
    img->mprr[VERT_LEFT_PRED][2] = 
    img->mprr[VERT_LEFT_PRED][9] = (pc + pd + 1) >>1;
    img->mprr[VERT_LEFT_PRED][3] = 
    img->mprr[VERT_LEFT_PRED][10] = (pd + pe + 1) >>1;
    img->mprr[VERT_LEFT_PRED][11] = (pe + pf + 1) >>1;
    img->mprr[VERT_LEFT_PRED][4] = (pa + (pb<<1) + pc + 2) >>2;
    img->mprr[VERT_LEFT_PRED][5] = 
    img->mprr[VERT_LEFT_PRED][12] = (pb + (pc<<1) + pd + 2) >>2;
    img->mprr[VERT_LEFT_PRED][6] = 
    img->mprr[VERT_LEFT_PRED][13] = (pc + (pd<<1) + pe + 2) >>2;
    img->mprr[VERT_LEFT_PRED][7] = 
    img->mprr[VERT_LEFT_PRED][14] = (pd + (pe<<1) + pf + 2) >>2;
    img->mprr[VERT_LEFT_PRED][15] = (pe + (pf<<1) + pg + 2) >>2;

     // Mode HOR_UP_PRED
    img->mprr[HOR_UP_PRED][0] = (pi + pj + 1) >>1;
    img->mprr[HOR_UP_PRED][1] = (pi + (pj<<1) + pk + 2) >>2;
    img->mprr[HOR_UP_PRED][2] = 
    img->mprr[HOR_UP_PRED][4] = (pj + pk + 1) >>1;
    img->mprr[HOR_UP_PRED][3] = 
    img->mprr[HOR_UP_PRED][5] = (pj + (pk<<1) + pl + 2) >>2;
    img->mprr[HOR_UP_PRED][6] = 
    img->mprr[HOR_UP_PRED][8] = (pk + pl + 1) >>1;
    img->mprr[HOR_UP_PRED][7] = 
    img->mprr[HOR_UP_PRED][9] = (pk + (pl<<1) + pl + 2) >>2;
    img->mprr[HOR_UP_PRED][12] = 
    img->mprr[HOR_UP_PRED][10] = 
    img->mprr[HOR_UP_PRED][11] = 
    img->mprr[HOR_UP_PRED][13] = 
    img->mprr[HOR_UP_PRED][14] = 
    img->mprr[HOR_UP_PRED][15] = pl;

    // Mode DIAG_DOWN_RIGHT_PRED
    img->mprr[DIAG_DOWN_RIGHT_PRED][12] = (pl + (pk<<1) + pj + 2) >>2;
    img->mprr[DIAG_DOWN_RIGHT_PRED][8] =
    img->mprr[DIAG_DOWN_RIGHT_PRED][13] = (pk + (pj<<1) + pi + 2) >>2;
    img->mprr[DIAG_DOWN_RIGHT_PRED][4] =
    img->mprr[DIAG_DOWN_RIGHT_PRED][9] = 
    img->mprr[DIAG_DOWN_RIGHT_PRED][14] = (pj + (pi<<1) + px + 2) >>2;
    img->mprr[DIAG_DOWN_RIGHT_PRED][0] =
    img->mprr[DIAG_DOWN_RIGHT_PRED][5] =
    img->mprr[DIAG_DOWN_RIGHT_PRED][10] =
    img->mprr[DIAG_DOWN_RIGHT_PRED][15] = (pi + (px<<1) + pa + 2) >>2;
    img->mprr[DIAG_DOWN_RIGHT_PRED][1] =
    img->mprr[DIAG_DOWN_RIGHT_PRED][6] =
    img->mprr[DIAG_DOWN_RIGHT_PRED][11] = (px + (pa<<1) + pb + 2) >>2;
    img->mprr[DIAG_DOWN_RIGHT_PRED][2] =
    img->mprr[DIAG_DOWN_RIGHT_PRED][7] = (pa + (pb<<1) + pc + 2) >>2;
    img->mprr[DIAG_DOWN_RIGHT_PRED][3] = (pb + (pc<<1) + pd + 2) >>2;

     // Mode VERT_RIGHT_PRED
    img->mprr[VERT_RIGHT_PRED][0] = 
    img->mprr[VERT_RIGHT_PRED][9] = (px + pa + 1) >>1;
    img->mprr[VERT_RIGHT_PRED][1] = 
    img->mprr[VERT_RIGHT_PRED][10] = (pa + pb + 1) >>1;
    img->mprr[VERT_RIGHT_PRED][2] = 
    img->mprr[VERT_RIGHT_PRED][11] = (pb + pc + 1) >>1;
    img->mprr[VERT_RIGHT_PRED][3] = (pc + pd + 1) >>1;
    img->mprr[VERT_RIGHT_PRED][4] = 
    img->mprr[VERT_RIGHT_PRED][13] = (pi + (px<<1) + pa + 2) >>2;
    img->mprr[VERT_RIGHT_PRED][5] = 
    img->mprr[VERT_RIGHT_PRED][14] = (px + (pa<<1) + pb + 2) >>2;
    img->mprr[VERT_RIGHT_PRED][6] = 
    img->mprr[VERT_RIGHT_PRED][15] = (pa + (pb<<1) + pc + 2) >>2;
    img->mprr[VERT_RIGHT_PRED][7] = (pb + (pc<<1) + pd + 2) >>2;
    img->mprr[VERT_RIGHT_PRED][8] = (px + (pi<<1) + pj + 2) >>2;
    img->mprr[VERT_RIGHT_PRED][12] = (pi + (pj<<1) + pk + 2) >>2;

    // Mode HOR_DOWN_PRED
    img->mprr[HOR_DOWN_PRED][0] = 
    img->mprr[HOR_DOWN_PRED][6] = (px + pi + 1) >>1;
    img->mprr[HOR_DOWN_PRED][1] = 
    img->mprr[HOR_DOWN_PRED][7] = (pi + (px<<1) + pa + 2) >>2;
    img->mprr[HOR_DOWN_PRED][2] = (px + (pa<<1) + pb + 2) >>2;
    img->mprr[HOR_DOWN_PRED][3] = (pa + (pb<<1) + pc + 2) >>2;
    img->mprr[HOR_DOWN_PRED][4] = 
    img->mprr[HOR_DOWN_PRED][10] = (pi + pj + 1) >>1;
    img->mprr[HOR_DOWN_PRED][5] = 
    img->mprr[HOR_DOWN_PRED][11] = (px + (pi<<1) + pj + 2) >>2;
    img->mprr[HOR_DOWN_PRED][8] = 
    img->mprr[HOR_DOWN_PRED][14] = (pj + pk + 1) >>1;
    img->mprr[HOR_DOWN_PRED][9] = 
    img->mprr[HOR_DOWN_PRED][15] = (pi + (pj<<1) + pk + 2) >>2;
    img->mprr[HOR_DOWN_PRED][12] = (pk + pl + 1) >>1;
    img->mprr[HOR_DOWN_PRED][13] = (pj + (pk<<1) + pl + 2) >>2;
    
    best_intra_sad=MAX_VALUE; 		  
    upMode = img->ipredmode[pic_block_x+1][pic_block_y];
    leftMode = img->ipredmode[pic_block_x][pic_block_y+1];
    mostProbableMode  = (upMode < 0 || leftMode < 0) ? DC_PRED : upMode < leftMode ? upMode : leftMode;
    for (ipmode=0; ipmode < NO_INTRA_PMODE; ipmode++)
    {
		current_intra_sad  = (ipmode == mostProbableMode) ? 0 : (int)floor(4 * lambda_mode );			  
        current_intra_sad += Intra_Sad(img,imgY_org+img_offset,img->mprr[ipmode]);        
        if (current_intra_sad < best_intra_sad) 
        {
           best_intra_sad=current_intra_sad;
           best_ipmode=ipmode;
        }      
    }
    *tot_intra_sad += best_intra_sad;
    img->ipredmode[pic_block_x+1][pic_block_y+1]=best_ipmode;
    img->intra_pred_modes[block_num] = mostProbableMode == best_ipmode ? -1 : best_ipmode < mostProbableMode ? best_ipmode : best_ipmode-1;
		                            
    nonzero = dct_luma(imgY_org+img_offset,img->mprr[best_ipmode],block_x,block_y,img);     
  return nonzero;
}

int macroblock_intra_topleft(struct img_par *img)
{
  int cbp,tmp=0;                
  int tot_intra_sad,tot_intra_sad1,cost=0; 
  int imode=2;/*yummy*/
          
  img->imod = INTRA_MB_OLD; 
  cbp=0;
  tot_intra_sad = tot_intra_sad1 = QP2QUANT[img->qp-SHIFT_QP]*24;
  img->i16offset = 0;/*yummy*/
  
  tmp|=intrapred_luma_topleft(img,img->pix_x,img->pix_y,&tot_intra_sad,0);
  tmp|=intrapred_luma_top(img,img->pix_x+4,img->pix_y,&tot_intra_sad,1);
  tmp|=intrapred_luma_left(img,img->pix_x,img->pix_y+4,&tot_intra_sad,2);
  tmp|=intrapred_luma_noright(img,img->pix_x+4,img->pix_y+4,&tot_intra_sad,3);
  cbp=tmp;tmp=0;
  
  tmp|=intrapred_luma_top(img,img->pix_x+8,img->pix_y,&tot_intra_sad,4);
  tmp|=intrapred_luma_top(img,img->pix_x+12,img->pix_y,&tot_intra_sad,5);
  tmp|=intrapred_luma_other(img,img->pix_x+8,img->pix_y+4,&tot_intra_sad,6);
  tmp|=intrapred_luma_noright(img,img->pix_x+12,img->pix_y+4,&tot_intra_sad,7);
  cbp|=(tmp<<1);tmp=0;
  
  tmp|=intrapred_luma_left(img,img->pix_x,img->pix_y+8,&tot_intra_sad,8);
  tmp|=intrapred_luma_other(img,img->pix_x+4,img->pix_y+8,&tot_intra_sad,9);
  tmp|=intrapred_luma_left(img,img->pix_x,img->pix_y+12,&tot_intra_sad,10);
  tmp|=intrapred_luma_noright(img,img->pix_x+4,img->pix_y+12,&tot_intra_sad,11);
  cbp|=(tmp<<2);tmp=0;
  
  tmp|=intrapred_luma_other(img,img->pix_x+8,img->pix_y+8,&tot_intra_sad,12);
  tmp|=intrapred_luma_noright(img,img->pix_x+12,img->pix_y+8,&tot_intra_sad,13);
  tmp|=intrapred_luma_other(img,img->pix_x+8,img->pix_y+12,&tot_intra_sad,14);
  tmp|=intrapred_luma_noright(img,img->pix_x+12,img->pix_y+12,&tot_intra_sad,15);
  cbp|=(tmp<<3);
  img->cbp=cbp;
  
  /*yummy*/
/*  cost = intrapred_lumaMB_topleft(img,img->pix_x,img->pix_y,&cost,&imode);
  if(cost<tot_intra_sad)
  {	  
	  tot_intra_sad = cost;
	  img->imod = INTRA_MB_NEW;
	  img->cbp = dct_luma_16x16 (imgY_org, imode, img);
	  img->i16offset = imode;

	  img->ipredmode[1][1]=DC_PRED;  img->ipredmode[1][2]=DC_PRED;
	  img->ipredmode[1][3]=DC_PRED;  img->ipredmode[1][4]=DC_PRED;
	  img->ipredmode[2][1]=DC_PRED;  img->ipredmode[2][2]=DC_PRED;
	  img->ipredmode[2][3]=DC_PRED;  img->ipredmode[2][4]=DC_PRED;
	  img->ipredmode[3][1]=DC_PRED;  img->ipredmode[3][2]=DC_PRED;
	  img->ipredmode[3][3]=DC_PRED;  img->ipredmode[3][4]=DC_PRED;
	  img->ipredmode[4][1]=DC_PRED;  img->ipredmode[4][2]=DC_PRED;
	  img->ipredmode[4][3]=DC_PRED;  img->ipredmode[4][4]=DC_PRED;

	  img->intra_pred_modes[0] = img->intra_pred_modes[1] =DC_PRED;
	  img->intra_pred_modes[2] = img->intra_pred_modes[3] =DC_PRED;
	  img->intra_pred_modes[4] = img->intra_pred_modes[5] =DC_PRED;
	  img->intra_pred_modes[6] = img->intra_pred_modes[7] =DC_PRED;
	  img->intra_pred_modes[8] = img->intra_pred_modes[9] =DC_PRED;
	  img->intra_pred_modes[10]= img->intra_pred_modes[11]=DC_PRED;
	  img->intra_pred_modes[12]= img->intra_pred_modes[13]=DC_PRED;
	  img->intra_pred_modes[14]= img->intra_pred_modes[15]=DC_PRED;
  }*/
  return tot_intra_sad;
}

int macroblock_intra_top(struct img_par *img)
{
  int cbp,tmp=0;                
  int tot_intra_sad, cost = 0;  
  int imode = 2;		/*yummy*/
  int block_x, block_y; /*yummy*/
          
  img->imod = INTRA_MB_OLD; 
  cbp=0;
  tot_intra_sad=QP2QUANT[img->qp-SHIFT_QP]*24;
  img->i16offset = 0;		/*yummy*/
  block_x = img->pix_x>>2;	/*yummy*/
  block_y = img->pix_y>>2;	/*yummy*/
  
  tmp|=intrapred_luma_top(img,img->pix_x,img->pix_y,&tot_intra_sad,0);
  tmp|=intrapred_luma_top(img,img->pix_x+4,img->pix_y,&tot_intra_sad,1);
  tmp|=intrapred_luma_other(img,img->pix_x,img->pix_y+4,&tot_intra_sad,2);
  tmp|=intrapred_luma_noright(img,img->pix_x+4,img->pix_y+4,&tot_intra_sad,3);
  cbp=tmp;tmp=0;
  
  tmp|=intrapred_luma_top(img,img->pix_x+8,img->pix_y,&tot_intra_sad,4);
  tmp|=intrapred_luma_top(img,img->pix_x+12,img->pix_y,&tot_intra_sad,5);
  tmp|=intrapred_luma_other(img,img->pix_x+8,img->pix_y+4,&tot_intra_sad,6);
  tmp|=intrapred_luma_noright(img,img->pix_x+12,img->pix_y+4,&tot_intra_sad,7);
  cbp|=(tmp<<1);tmp=0;
  
  tmp|=intrapred_luma_other(img,img->pix_x,img->pix_y+8,&tot_intra_sad,8);
  tmp|=intrapred_luma_other(img,img->pix_x+4,img->pix_y+8,&tot_intra_sad,9);
  tmp|=intrapred_luma_other(img,img->pix_x,img->pix_y+12,&tot_intra_sad,10);
  tmp|=intrapred_luma_noright(img,img->pix_x+4,img->pix_y+12,&tot_intra_sad,11);
  cbp|=(tmp<<2);tmp=0;
  
  tmp|=intrapred_luma_other(img,img->pix_x+8,img->pix_y+8,&tot_intra_sad,12);
  tmp|=intrapred_luma_noright(img,img->pix_x+12,img->pix_y+8,&tot_intra_sad,13);
  tmp|=intrapred_luma_other(img,img->pix_x+8,img->pix_y+12,&tot_intra_sad,14);
  tmp|=intrapred_luma_noright(img,img->pix_x+12,img->pix_y+12,&tot_intra_sad,15);
  cbp|=(tmp<<3);
  img->cbp=cbp;

  /*yummy*/
/*  cost = intrapred_lumaMB_top(img,img->pix_x,img->pix_y,&cost,&imode);
  if(cost<tot_intra_sad)
  {	  
	  tot_intra_sad = cost;
	  img->imod = INTRA_MB_NEW;
	  img->cbp = dct_luma_16x16 (imgY_org+img->pix_y*(img->width+IMG_PAD_SIZE)+img->pix_x, imode, img);
	  img->i16offset = imode;

	  img->ipredmode[block_x+1][block_y+1]=DC_PRED;  img->ipredmode[block_x+1][block_y+2]=DC_PRED;
	  img->ipredmode[block_x+1][block_y+3]=DC_PRED;  img->ipredmode[block_x+1][block_y+4]=DC_PRED;
	  img->ipredmode[block_x+2][block_y+1]=DC_PRED;  img->ipredmode[block_x+2][block_y+2]=DC_PRED;
	  img->ipredmode[block_x+2][block_y+3]=DC_PRED;  img->ipredmode[block_x+2][block_y+4]=DC_PRED;
	  img->ipredmode[block_x+3][block_y+1]=DC_PRED;  img->ipredmode[block_x+3][block_y+2]=DC_PRED;
	  img->ipredmode[block_x+3][block_y+3]=DC_PRED;  img->ipredmode[block_x+3][block_y+4]=DC_PRED;
	  img->ipredmode[block_x+4][block_y+1]=DC_PRED;  img->ipredmode[block_x+4][block_y+2]=DC_PRED;
	  img->ipredmode[block_x+4][block_y+3]=DC_PRED;  img->ipredmode[block_x+4][block_y+4]=DC_PRED;

	  img->intra_pred_modes[0] = img->intra_pred_modes[1] =DC_PRED;
	  img->intra_pred_modes[2] = img->intra_pred_modes[3] =DC_PRED;
	  img->intra_pred_modes[4] = img->intra_pred_modes[5] =DC_PRED;
	  img->intra_pred_modes[6] = img->intra_pred_modes[7] =DC_PRED;
	  img->intra_pred_modes[8] = img->intra_pred_modes[9] =DC_PRED;
	  img->intra_pred_modes[10]= img->intra_pred_modes[11]=DC_PRED;
	  img->intra_pred_modes[12]= img->intra_pred_modes[13]=DC_PRED;
	  img->intra_pred_modes[14]= img->intra_pred_modes[15]=DC_PRED;
  }*/
  return tot_intra_sad;
}

int macroblock_intra_left(struct img_par *img)
{
  int cbp,tmp=0;                
  int tot_intra_sad;
  int imode = 0, cost = 0;	/*yummy*/
  int block_x, block_y;		/*yummy*/
  block_x = img->pix_x>>2;	/*yummy*/
  block_y = img->pix_y>>2;	/*yummy*/
          
  img->imod = INTRA_MB_OLD; 
  cbp=0;
  tot_intra_sad=QP2QUANT[img->qp-SHIFT_QP]*24;  
  img->i16offset = 0;		/*yummy*/
  
  tmp|=intrapred_luma_left(img,img->pix_x,img->pix_y,&tot_intra_sad,0);
  tmp|=intrapred_luma_other(img,img->pix_x+4,img->pix_y,&tot_intra_sad,1);
  tmp|=intrapred_luma_left(img,img->pix_x,img->pix_y+4,&tot_intra_sad,2);
  tmp|=intrapred_luma_noright(img,img->pix_x+4,img->pix_y+4,&tot_intra_sad,3);
  cbp=tmp;tmp=0;
  
  tmp|=intrapred_luma_other(img,img->pix_x+8,img->pix_y,&tot_intra_sad,4);
  tmp|=intrapred_luma_other(img,img->pix_x+12,img->pix_y,&tot_intra_sad,5);
  tmp|=intrapred_luma_other(img,img->pix_x+8,img->pix_y+4,&tot_intra_sad,6);
  tmp|=intrapred_luma_noright(img,img->pix_x+12,img->pix_y+4,&tot_intra_sad,7);
  cbp|=(tmp<<1);tmp=0;
  
  tmp|=intrapred_luma_left(img,img->pix_x,img->pix_y+8,&tot_intra_sad,8);
  tmp|=intrapred_luma_other(img,img->pix_x+4,img->pix_y+8,&tot_intra_sad,9);
  tmp|=intrapred_luma_left(img,img->pix_x,img->pix_y+12,&tot_intra_sad,10);
  tmp|=intrapred_luma_noright(img,img->pix_x+4,img->pix_y+12,&tot_intra_sad,11);
  cbp|=(tmp<<2);tmp=0;
  
  tmp|=intrapred_luma_other(img,img->pix_x+8,img->pix_y+8,&tot_intra_sad,12);
  tmp|=intrapred_luma_noright(img,img->pix_x+12,img->pix_y+8,&tot_intra_sad,13);
  tmp|=intrapred_luma_other(img,img->pix_x+8,img->pix_y+12,&tot_intra_sad,14);
  tmp|=intrapred_luma_noright(img,img->pix_x+12,img->pix_y+12,&tot_intra_sad,15);
  cbp|=(tmp<<3);
  img->cbp=cbp;

  /*yummy*/
/*  cost = intrapred_lumaMB_left(img,img->pix_x,img->pix_y,&cost,&imode);
  if(cost<tot_intra_sad)
  {	  
	  tot_intra_sad = cost;
	  img->imod = INTRA_MB_NEW;
	  img->cbp = dct_luma_16x16 (imgY_org+img->pix_y*(img->width+IMG_PAD_SIZE)+img->pix_x, imode, img);
	  img->i16offset = imode;

	  img->ipredmode[block_x+1][block_y+1]=DC_PRED;  img->ipredmode[block_x+1][block_y+2]=DC_PRED;
	  img->ipredmode[block_x+1][block_y+3]=DC_PRED;  img->ipredmode[block_x+1][block_y+4]=DC_PRED;
	  img->ipredmode[block_x+2][block_y+1]=DC_PRED;  img->ipredmode[block_x+2][block_y+2]=DC_PRED;
	  img->ipredmode[block_x+2][block_y+3]=DC_PRED;  img->ipredmode[block_x+2][block_y+4]=DC_PRED;
	  img->ipredmode[block_x+3][block_y+1]=DC_PRED;  img->ipredmode[block_x+3][block_y+2]=DC_PRED;
	  img->ipredmode[block_x+3][block_y+3]=DC_PRED;  img->ipredmode[block_x+3][block_y+4]=DC_PRED;
	  img->ipredmode[block_x+4][block_y+1]=DC_PRED;  img->ipredmode[block_x+4][block_y+2]=DC_PRED;
	  img->ipredmode[block_x+4][block_y+3]=DC_PRED;  img->ipredmode[block_x+4][block_y+4]=DC_PRED;

	  img->intra_pred_modes[0] = img->intra_pred_modes[1] =DC_PRED;
	  img->intra_pred_modes[2] = img->intra_pred_modes[3] =DC_PRED;
	  img->intra_pred_modes[4] = img->intra_pred_modes[5] =DC_PRED;
	  img->intra_pred_modes[6] = img->intra_pred_modes[7] =DC_PRED;
	  img->intra_pred_modes[8] = img->intra_pred_modes[9] =DC_PRED;
	  img->intra_pred_modes[10]= img->intra_pred_modes[11]=DC_PRED;
	  img->intra_pred_modes[12]= img->intra_pred_modes[13]=DC_PRED;
	  img->intra_pred_modes[14]= img->intra_pred_modes[15]=DC_PRED;
  }  */
  return tot_intra_sad;
}

int macroblock_intra_right(struct img_par *img)
{
  int cbp,tmp=0;                
  int tot_intra_sad;  
  int imode = 0, cost =0;	/*yummy*/
  int block_x, block_y;		/*yummy*/  
  block_x = img->pix_x>>2;	/*yummy*/
  block_y = img->pix_y>>2;	/*yummy*/
          
  img->imod = INTRA_MB_OLD; 
  cbp=0;
  tot_intra_sad=QP2QUANT[img->qp-SHIFT_QP]*24;
  img->i16offset = 0;		/*yummy*/
  
  tmp|=intrapred_luma_other(img,img->pix_x,img->pix_y,&tot_intra_sad,0);
  tmp|=intrapred_luma_other(img,img->pix_x+4,img->pix_y,&tot_intra_sad,1);
  tmp|=intrapred_luma_other(img,img->pix_x,img->pix_y+4,&tot_intra_sad,2);
  tmp|=intrapred_luma_noright(img,img->pix_x+4,img->pix_y+4,&tot_intra_sad,3);
  cbp=tmp;tmp=0;
  
  tmp|=intrapred_luma_other(img,img->pix_x+8,img->pix_y,&tot_intra_sad,4);
  tmp|=intrapred_luma_noright(img,img->pix_x+12,img->pix_y,&tot_intra_sad,5);
  tmp|=intrapred_luma_other(img,img->pix_x+8,img->pix_y+4,&tot_intra_sad,6);
  tmp|=intrapred_luma_noright(img,img->pix_x+12,img->pix_y+4,&tot_intra_sad,7);
  cbp|=(tmp<<1);tmp=0;
  
  tmp|=intrapred_luma_other(img,img->pix_x,img->pix_y+8,&tot_intra_sad,8);
  tmp|=intrapred_luma_other(img,img->pix_x+4,img->pix_y+8,&tot_intra_sad,9);
  tmp|=intrapred_luma_other(img,img->pix_x,img->pix_y+12,&tot_intra_sad,10);
  tmp|=intrapred_luma_noright(img,img->pix_x+4,img->pix_y+12,&tot_intra_sad,11);
  cbp|=(tmp<<2);tmp=0;
  
  tmp|=intrapred_luma_other(img,img->pix_x+8,img->pix_y+8,&tot_intra_sad,12);
  tmp|=intrapred_luma_noright(img,img->pix_x+12,img->pix_y+8,&tot_intra_sad,13);
  tmp|=intrapred_luma_other(img,img->pix_x+8,img->pix_y+12,&tot_intra_sad,14);
  tmp|=intrapred_luma_noright(img,img->pix_x+12,img->pix_y+12,&tot_intra_sad,15);
  cbp|=(tmp<<3);
  img->cbp=cbp;

  /*yummy*/
/*  cost = intrapred_lumaMB_other(img,img->pix_x,img->pix_y,&cost,&imode);
  if(cost<tot_intra_sad)
  {  
	  img->imod = INTRA_MB_NEW;
	  tot_intra_sad = cost;
	  img->cbp = dct_luma_16x16 (imgY_org+img->pix_y*(img->width+IMG_PAD_SIZE)+img->pix_x, imode, img);
	  img->i16offset = imode;
	  
	  img->ipredmode[block_x+1][block_y+3]=DC_PRED;  img->ipredmode[block_x+1][block_y+4]=DC_PRED;
	  img->ipredmode[block_x+2][block_y+1]=DC_PRED;  img->ipredmode[block_x+2][block_y+2]=DC_PRED;
	  img->ipredmode[block_x+2][block_y+3]=DC_PRED;  img->ipredmode[block_x+2][block_y+4]=DC_PRED;
	  img->ipredmode[block_x+3][block_y+1]=DC_PRED;  img->ipredmode[block_x+3][block_y+2]=DC_PRED;
	  img->ipredmode[block_x+3][block_y+3]=DC_PRED;  img->ipredmode[block_x+3][block_y+4]=DC_PRED;
	  img->ipredmode[block_x+4][block_y+1]=DC_PRED;  img->ipredmode[block_x+4][block_y+2]=DC_PRED;
	  img->ipredmode[block_x+4][block_y+3]=DC_PRED;  img->ipredmode[block_x+4][block_y+4]=DC_PRED;

	  img->intra_pred_modes[0] = img->intra_pred_modes[1] =DC_PRED;
	  img->intra_pred_modes[2] = img->intra_p

⌨️ 快捷键说明

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