亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? macroblock.c

?? Mobile IP VCEG的信道模擬程序
?? C
?? 第 1 頁 / 共 4 頁
字號:
	      else
		{
		  currSE->context = 1; // for choosing context model
		  currSE->type  = SE_LUM_DC_INTER;
		}
	    }
	  else
	    { 
	      if (img->imod == INTRA_MB_OLD || img->imod == INTRA_MB_NEW)
		{
		  currSE->context = 2; // for choosing context model
		  currSE->type  = SE_LUM_AC_INTRA;
		}
	      else
		{
		  currSE->context = 1; // for choosing context model
		  currSE->type  = SE_LUM_AC_INTER;
		}
	    }
				  
	  /* choose the appropriate data partition */	
	  if (img->type != B_IMG)
	    dataPart = &(currSlice->partArr[partMap[currSE->type]]);
	  else
	    dataPart = &(currSlice->partArr[partMap[SE_BFRAME]]);
				  
	  dataPart->writeSyntaxElement (currSE, dataPart);
	  bitCount[BITS_COEFF_Y_MB]+=currSE->len;
	  no_bits                  +=currSE->len;
#if TRACE
	  sprintf(currSE->tracestring, "Luma sng(%2d) level =%3d run =%2d", k, level,run);
#endif		
	  /* proceed to next SE */
	  currSE++;	
	  currMB->currSEnr++;
				  
	  if (level!=0 && filtering)
	    {
	      loopb[img->block_x+i+1][img->block_y+j+1]=max(loopb[img->block_x+i+1][img->block_y+j+1],2);
	      loopb[img->block_x+i  ][img->block_y+j+1]=max(loopb[img->block_x+i  ][img->block_y+j+1],1);
	      loopb[img->block_x+i+1][img->block_y+j  ]=max(loopb[img->block_x+i+1][img->block_y+j  ],1);
	      loopb[img->block_x+i+2][img->block_y+j+1]=max(loopb[img->block_x+i+2][img->block_y+j+1],1);
	      loopb[img->block_x+i+1][img->block_y+j+2]=max(loopb[img->block_x+i+1][img->block_y+j+2],1);
	    }
	}
    }

  return no_bits;
}





int
writeMB_bits_for_16x16_luma ()
{
  int           no_bits    = 0;
  Macroblock    *currMB    = &img->mb_data[img->current_mb_nr];
  SyntaxElement *currSE    = &img->MB_SyntaxElements[currMB->currSEnr];
  int           *bitCount  = currMB->bitcounter;
  Slice         *currSlice = img->currentSlice;
  DataPartition *dataPart;
  int           *partMap   = assignSE2partition[input->partition_mode];

  int level, run;
  int i, j, k, mb_x, mb_y;


  /* DC coeffs */
  level=1; /* get inside loop */
  for (k=0;k<=16 && level !=0;k++)
    {
      level = currSE->value1 = img->cof[0][0][k][0][1]; // level
      run   = currSE->value2 = img->cof[0][0][k][1][1]; // run
	  
      if (input->symbol_mode == UVLC)
	currSE->mapping = levrun_linfo_inter;		
      else
	{
	  currSE->context = 3; // for choosing context model
	  currSE->writing = writeRunLevel2Buffer_CABAC;
	}
      currSE->type  = SE_LUM_DC_INTRA;   /* element is of type DC */
	  
      /* choose the appropriate data partition */	
      if (img->type != B_IMG)
	dataPart = &(currSlice->partArr[partMap[currSE->type]]);
      else
	dataPart = &(currSlice->partArr[partMap[SE_BFRAME]]);
	  
      dataPart->writeSyntaxElement (currSE, dataPart);
      bitCount[BITS_COEFF_Y_MB]+=currSE->len;
      no_bits                  +=currSE->len;
#if TRACE
      sprintf(currSE->tracestring, "DC luma 16x16 sng(%2d) level =%3d run =%2d", k, level, run);
#endif
	  
      /* proceed to next SE */
      currSE++;	
      currMB->currSEnr++;			
    }


  /* AC coeffs */
  if (img->kac==1)
    {
      for (mb_y=0; mb_y < 4; mb_y += 2)
	{
	  for (mb_x=0; mb_x < 4; mb_x += 2)
	    {
	      for (j=mb_y; j < mb_y+2; j++)
		{
		  for (i=mb_x; i < mb_x+2; i++)
		    {
		      level=1; /* get inside loop */
		      for (k=0;k<16 && level !=0;k++)
			{
			  level = currSE->value1 = img->cof[i][j][k][0][SINGLE_SCAN]; // level
			  run   = currSE->value2 = img->cof[i][j][k][1][SINGLE_SCAN]; // run
			      
			  if (input->symbol_mode == UVLC)
			    currSE->mapping = levrun_linfo_inter;		
			  else
			    {
			      currSE->context = 4; // for choosing context model
			      currSE->writing = writeRunLevel2Buffer_CABAC;
			    }
			  currSE->type  = SE_LUM_AC_INTRA;   /* element is of type AC */
			      
			  /* choose the appropriate data partition */	
			  if (img->type != B_IMG)
			    dataPart = &(currSlice->partArr[partMap[currSE->type]]);
			  else
			    dataPart = &(currSlice->partArr[partMap[SE_BFRAME]]);
			      
			  dataPart->writeSyntaxElement (currSE, dataPart);
			  bitCount[BITS_COEFF_Y_MB]+=currSE->len;
			  no_bits                  +=currSE->len;
#if TRACE
			  sprintf(currSE->tracestring, "AC luma 16x16 sng(%2d) level =%3d run =%2d", k, level, run);
#endif				
			  /* proceed to next SE */
			  currSE++;			
			  currMB->currSEnr++;								
			}
		    }
		}
	    }
	}
    }

  return no_bits;
}





int
writeMB_bits_for_DC_chroma (int filtering)
{
  int           no_bits    = 0;
  Macroblock    *currMB    = &img->mb_data[img->current_mb_nr];
  SyntaxElement *currSE    = &img->MB_SyntaxElements[currMB->currSEnr];
  int           *bitCount  = currMB->bitcounter;
  Slice         *currSlice = img->currentSlice;
  DataPartition *dataPart;
  int           *partMap   = assignSE2partition[input->partition_mode];

  int m2  = img->mb_x << 1;
  int jg2 = img->mb_y << 1;
  int cbp = img->mb_data [img->current_mb_nr].cbp;

  int level, run;
  int i, j, k, uv;


  if (cbp > 15)  /* check if any chroma bits in coded block pattern is set */
    {
      for (uv=0; uv < 2; uv++)
	{
	  level=1;
	  for (k=0; k < 5 && level != 0; ++k)
	    {
	      level = currSE->value1 = img->cofu[k][0][uv]; // level
	      run   = currSE->value2 = img->cofu[k][1][uv]; // run
		
	      if (input->symbol_mode == UVLC)
		currSE->mapping = levrun_linfo_c2x2;
	      else							
		currSE->writing = writeRunLevel2Buffer_CABAC;
		
	      if (img->imod == INTRA_MB_OLD || img->imod == INTRA_MB_NEW)
		{
		  currSE->context = 6; // for choosing context model
		  currSE->type  = SE_CHR_DC_INTRA;
		}
	      else
		{
		  currSE->context = 5; // for choosing context model
		  currSE->type  = SE_CHR_DC_INTER; 
		}
		
				/* choose the appropriate data partition */	
	      if (img->type != B_IMG)
		dataPart = &(currSlice->partArr[partMap[currSE->type]]);
	      else
		dataPart = &(currSlice->partArr[partMap[SE_BFRAME]]);
		
	      dataPart->writeSyntaxElement (currSE, dataPart);
	      bitCount[BITS_COEFF_UV_MB]+=currSE->len;
	      no_bits                   +=currSE->len;
#if TRACE
	      sprintf(currSE->tracestring, "2x2 DC Chroma %2d: level =%3d run =%2d",k, level, run);
#endif
		
				/* proceed to next SE */
	      currSE++;	
	      currMB->currSEnr++;
		
		
	      if (level != 0 && filtering)/* fix from ver 4.1 */
		{
		  for (j=0;j<2;j++)
		    {
		      for (i=0;i<2;i++)
			{
			  loopc[m2+i+1][jg2+j+1]=max(loopc[m2+i+1][jg2+j+1],2);
			}
		    }
		    
		  for (i=0;i<2;i++)
		    {
		      loopc[m2+i+1][jg2    ]=max(loopc[m2+i+1][jg2    ],1);
		      loopc[m2+i+1][jg2+3  ]=max(loopc[m2+i+1][jg2+3  ],1);
		      loopc[m2	  ][jg2+i+1]=max(loopc[m2    ][jg2+i+1],1);
		      loopc[m2+3  ][jg2+i+1]=max(loopc[m2+3  ][jg2+i+1],1);
		    }
		}
	    }
	}
    }

  return no_bits;
}





int
writeMB_bits_for_AC_chroma (int  filtering)
{
  int           no_bits    = 0;
  Macroblock    *currMB    = &img->mb_data[img->current_mb_nr];
  SyntaxElement *currSE    = &img->MB_SyntaxElements[currMB->currSEnr];
  int           *bitCount  = currMB->bitcounter;
  Slice         *currSlice = img->currentSlice;
  DataPartition *dataPart;
  int           *partMap   = assignSE2partition[input->partition_mode];

  int m2  = img->mb_x << 1;
  int jg2 = img->mb_y << 1;
  int cbp = img->mb_data [img->current_mb_nr].cbp;

  int level, run;
  int i, j, k, mb_x, mb_y, i1, ii, j1, jj;


  if (cbp >> 4 == 2) /* check if chroma bits in coded block pattern = 10b */
    {	
      for (mb_y=4; mb_y < 6; mb_y += 2)
	{
	  for (mb_x=0; mb_x < 4; mb_x += 2)
	    {
	      for (j=mb_y; j < mb_y+2; j++)
		{
		  jj=j/2;
		  j1=j-4;
		  for (i=mb_x; i < mb_x+2; i++)
		    {
		      ii=i/2;
		      i1=i%2;
		      level=1;
		      for (k=0; k < 16 && level != 0; k++)
			{
			  level = currSE->value1 = img->cof[i][j][k][0][0]; // level
			  run   = currSE->value2 = img->cof[i][j][k][1][0]; // run
			    
			  if (input->symbol_mode == UVLC)
			    currSE->mapping = levrun_linfo_inter;
			  else							
			    currSE->writing = writeRunLevel2Buffer_CABAC;
			    
			  if (img->imod == INTRA_MB_OLD || img->imod == INTRA_MB_NEW)
			    {
			      currSE->context = 8; // for choosing context model	
			      currSE->type  = SE_CHR_AC_INTRA;
			    }
			  else
			    {
			      currSE->context = 7; // for choosing context model	
			      currSE->type  = SE_CHR_AC_INTER; 
			    }					
			  /* choose the appropriate data partition */	
			  if (img->type != B_IMG)
			    dataPart = &(currSlice->partArr[partMap[currSE->type]]);
			  else
			    dataPart = &(currSlice->partArr[partMap[SE_BFRAME]]);
			  
			  dataPart->writeSyntaxElement (currSE, dataPart);
			  bitCount[BITS_COEFF_UV_MB]+=currSE->len;
			  no_bits                   +=currSE->len;
#if TRACE
			  sprintf(currSE->tracestring, "AC Chroma %2d: level =%3d run =%2d",k, level, run);
#endif
			  /* proceed to next SE */
			  currSE++;	
			  currMB->currSEnr++;
			    
			  if (level != 0 && filtering)
			    {
			      loopc[m2+i1+1][jg2+j1+1]=max(loopc[m2+i1+1][jg2+j1+1],2);
			      loopc[m2+i1  ][jg2+j1+1]=max(loopc[m2+i1	][jg2+j1+1],1);
			      loopc[m2+i1+1][jg2+j1  ]=max(loopc[m2+i1+1][jg2+j1  ],1);
			      loopc[m2+i1+2][jg2+j1+1]=max(loopc[m2+i1+2][jg2+j1+1],1);
			      loopc[m2+i1+1][jg2+j1+2]=max(loopc[m2+i1+1][jg2+j1+2],1);
			    }
			}
		    }
		}
	    }
	}		
    }

  return no_bits;
}





/************************************************************************
*
*  Routine    : find_sad2()
*
*  Description: Find best 16x16 based intra mode
*
*
*  Input      : Image parameters, pointer to best 16x16 intra mode
*
*  Output     : best 16x16 based SAD
*                    
************************************************************************/
int find_sad2(int *intra_mode)
{
	int current_intra_sad_2,best_intra_sad2;
	int M1[16][16],M0[4][4][4][4],M3[4],M4[4][4];

	int i,j,k;
	int ii,jj;

	best_intra_sad2=MAX_VALUE;

	for (k=0;k<4;k++)
	{
		int mb_nr = img->current_mb_nr;
		int mb_width = img->width/16;
		int mb_available_up = (img->mb_y == 0) ? 0 : (img->slice_numbers[mb_nr] == img->slice_numbers[mb_nr-mb_width]);
		int mb_available_left = (img->mb_x == 0) ? 0 : (img->slice_numbers[mb_nr] == img->slice_numbers[mb_nr-1]);

		/*check if there are neighbours to predict from  */
		if ((k==0 && !mb_available_up) || (k==1 && !mb_available_left) || (k==3 && (!mb_available_left || !mb_available_up)))
		{
			; /* edge, do nothing */
		}
		else
		{
			for (j=0;j<16;j++)
			{
				for (i=0;i<16;i++)
				{
					M1[i][j]=imgY_org[img->pix_y+j][img->pix_x+i]-img->mprr_2[k][j][i];
					M0[i%4][i/4][j%4][j/4]=M1[i][j];
				}
			}
			current_intra_sad_2=0;              /* no SAD start handicap here */
			for (jj=0;jj<4;jj++)
			{
				for (ii=0;ii<4;ii++)
				{
					for (j=0;j<4;j++)
					{
						M3[0]=M0[0][ii][j][jj]+M0[3][ii][j][jj];
						M3[1]=M0[1][ii][j][jj]+M0[2][ii][j][jj];
						M3[2]=M0[1][ii][j][jj]-M0[2][ii][j][jj];
						M3[3]=M0[0][ii][j][jj]-M0[3][ii][j][jj];

						M0[0][ii][j][jj]=M3[0]+M3[1];
						M0[2][ii][j][jj]=M3[0]-M3[1];
						M0[1][ii][j][jj]=M3[2]+M3[3];
						M0[3][ii][j][jj]=M3[3]-M3[2];
					}

					for (i=0;i<4;i++)
					{
						M3[0]=M0[i][ii][0][jj]+M0[i][ii][3][jj];
						M3[1]=M0[i][ii][1][jj]+M0[i][ii][2][jj];
						M3[2]=M0[i][ii][1][jj]-M0[i][ii][2][jj];
						M3[3]=M0[i][ii][0][jj]-M0[i][ii][3][jj];

						M0[i][ii][0][jj]=M3[0]+M3[1];
						M0[i][ii][2][jj]=M3[0]-M3[1];
						M0[i][ii][1][jj]=M3[2]+M3[3];
						M0[i][ii][3][jj]=M3[3]-M3[2];
						for (j=0;j<4;j++)
							if ((i+j)!=0)
								current_intra_sad_2 += abs(M0[i][ii][j][jj]);
					}
				}
			}

			for (j=0;j<4;j++)
				for (i=0;i<4;i++)
					M4[i][j]=M0[0][i][0][j]/4;

			/* Hadamard of DC koeff */
			for (j=0;j<4;j++)
			{
				M3[0]=M4[0][j]+M4[3][j];
				M3[1]=M4[1][j]+M4[2][j];
				M3[2]=M4[1][j]-M4[2][j];
				M3[3]=M4[0][j]-M4[3][j];

				M4[0][j]=M3[0]+M3[1];
				M4[2][j]=M3[0]-M3[1];
				M4[1][j]=M3[2]+M3[3];
				M4[3][j]=M3[3]-M3[2];
			}

			for (i=0;i<4;i++)
			{
				M3[0]=M4[i][0]+M4[i][3];
				M3[1]=M4[i][1]+M4[i][2];
				M3[2]=M4[i][1]-M4[i][2];
				M3[3]=M4[i][0]-M4[i][3];

				M4[i][0]=M3[0]+M3[1];
				M4[i][2]=M3[0]-M3[1];
				M4[i][1]=M3[2]+M3[3];
				M4[i][3]=M3[3]-M3[2];

				for (j=0;j<4;j++)
					current_intra_sad_2 += abs(M4[i][j]);
			}
			if(current_intra_sad_2 < best_intra_sad2)
			{
				best_intra_sad2=current_intra_sad_2;
				*intra_mode = k; /* update best intra mode */

			}
		}
	}
	best_intra_sad2 = best_intra_sad2/2;

	return best_intra_sad2;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品欧美日韩| 国产成人综合网站| 国产精品网友自拍| 国产精品久久久久婷婷二区次 | 制服丝袜中文字幕一区| 欧洲一区二区三区在线| 91国产免费看| 欧美日本一区二区在线观看| 欧美一区二区三区播放老司机| 91精品国产综合久久福利软件| 91精品黄色片免费大全| 日韩丝袜美女视频| 欧美性xxxxx极品少妇| 午夜精品一区二区三区免费视频 | 欧美午夜精品久久久久久超碰| 欧美视频日韩视频在线观看| 欧美亚一区二区| 26uuu亚洲婷婷狠狠天堂| 亚洲欧洲精品天堂一级| 亚洲黄色片在线观看| 肉丝袜脚交视频一区二区| 久久超碰97中文字幕| 国产 日韩 欧美大片| 青青草精品视频| 欧美丰满嫩嫩电影| 国产精品国产三级国产三级人妇| 久久国产乱子精品免费女| 在线观看亚洲专区| 91国在线观看| 国模大尺度一区二区三区| 精品在线观看免费| 欧美伊人久久久久久午夜久久久久| 日韩一区二区免费高清| 亚洲精品亚洲人成人网| 成人美女在线观看| 精品日本一线二线三线不卡| 欧美极品美女视频| 国产中文字幕精品| 成人精品视频一区| 久久精品亚洲国产奇米99| 亚洲日本护士毛茸茸| 美女在线视频一区| 欧美一区二区三区婷婷月色| 亚洲黄色录像片| 色综合婷婷久久| 一区二区成人在线观看| 97久久久精品综合88久久| 国产精品另类一区| 99久久久国产精品免费蜜臀| 国产精品素人一区二区| 三级在线观看一区二区| 国产精品美女视频| 国产高清精品网站| 精品欧美一区二区三区精品久久 | 欧美色精品天天在线观看视频| 久久久久9999亚洲精品| 国产精品亚洲第一| 国产精品久久久久久妇女6080 | 色综合久久综合网| 中文字幕视频一区| 国内精品伊人久久久久av一坑| 欧美电影免费提供在线观看| 国产一区二区日韩精品| 亚洲国产精品久久久久婷婷884 | 久久99久久久久| 一区二区在线观看视频| 精品国产精品网麻豆系列| 欧美性极品少妇| 色视频欧美一区二区三区| 韩国av一区二区三区四区| 天堂av在线一区| 亚洲bt欧美bt精品| 亚洲午夜激情av| 亚洲一区二区三区中文字幕 | 99国产精品久| 成人夜色视频网站在线观看| 久久精品99久久久| 久久激情五月婷婷| 日韩高清欧美激情| 麻豆一区二区三区| 蜜桃久久久久久| 国产福利一区在线| 韩国欧美国产1区| 国产一区视频在线看| 高清不卡在线观看| 岛国精品在线播放| 欧美中文字幕一区二区三区| 色偷偷久久人人79超碰人人澡| 色就色 综合激情| 91精品国产一区二区三区蜜臀 | 亚洲成av人**亚洲成av**| 喷水一区二区三区| 国产成人无遮挡在线视频| www.久久久久久久久| 欧美综合在线视频| 久久色视频免费观看| 亚洲色图欧洲色图| 久久国产欧美日韩精品| 成人av小说网| 日韩美女在线视频| 亚洲欧洲精品一区二区精品久久久| 亚洲视频免费在线| 狠狠色狠狠色合久久伊人| 色综合一个色综合| 久久精品日产第一区二区三区高清版| 中文字幕欧美激情| 一区二区国产视频| 日韩精品一级二级| 蜜臀a∨国产成人精品| 91在线观看视频| 91精品国产欧美一区二区18| 国产欧美一区二区三区沐欲| 日韩精品一级二级 | 欧美视频在线观看一区| 久久综合精品国产一区二区三区 | 91成人在线精品| 综合久久久久久| 国产成人精品免费在线| 久久这里只有精品6| 精品无人区卡一卡二卡三乱码免费卡| 色欧美乱欧美15图片| 亚洲视频在线一区二区| 成人污视频在线观看| 国产精品丝袜一区| 国产91精品精华液一区二区三区| 久久精品欧美日韩精品| 国产精品亚洲一区二区三区妖精| 欧美zozozo| 成人午夜av在线| 亚洲欧美一区二区久久| 色噜噜狠狠一区二区三区果冻| 亚洲视频一区在线| 日本中文在线一区| 91视视频在线观看入口直接观看www | 国产欧美日本一区视频| 色94色欧美sute亚洲线路二| 亚洲一区二区av电影| 9191国产精品| 国产在线播放一区| 亚洲在线视频网站| 91精品国产欧美一区二区成人| 青青青爽久久午夜综合久久午夜 | 91麻豆高清视频| 午夜精品一区二区三区电影天堂 | 亚洲色图丝袜美腿| 精品国产一区二区三区av性色| 国产99久久精品| 亚洲二区在线观看| 日本一区二区三区四区在线视频| 欧美无乱码久久久免费午夜一区| 日本欧美大码aⅴ在线播放| 欧美va亚洲va| 欧美色精品在线视频| 911精品国产一区二区在线| 国产福利91精品| 久久精品久久综合| 久久麻豆一区二区| 日韩精品久久理论片| 国产亚洲欧美一区在线观看| 99精品视频在线观看免费| 久88久久88久久久| 精品亚洲aⅴ乱码一区二区三区| 一区二区三区不卡视频| 国产精品入口麻豆原神| 久久一区二区视频| 91精品国产色综合久久ai换脸| 色婷婷综合久久久久中文一区二区 | 亚洲一区二区三区爽爽爽爽爽| 国产精品护士白丝一区av| 久久久99精品免费观看不卡| 久久久午夜电影| 国产日韩欧美一区二区三区乱码| 欧美人与z0zoxxxx视频| 国产成人啪免费观看软件| 精品日韩欧美在线| 91福利社在线观看| 欧美天堂一区二区三区| 欧美日韩久久久一区| 99re这里只有精品首页| 9i看片成人免费高清| 91视频精品在这里| 欧美在线|欧美| 91精品婷婷国产综合久久性色 | 国产欧美日韩不卡| 亚洲欧美日韩中文播放| 亚洲成人免费av| 精品一区二区国语对白| 东方欧美亚洲色图在线| 欧美日韩亚洲另类| 精品裸体舞一区二区三区| 中文字幕一区二区视频| 亚洲国产另类av| 精品影视av免费| 精品一区二区在线播放| 久草在线在线精品观看| 免费在线看成人av| 日韩和欧美的一区| 国产成人啪免费观看软件| 4438x成人网最大色成网站| 国产精品护士白丝一区av|