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

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

?? pred.c

?? encoder 視頻會議 視頻編碼算法 源程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
  /* 亮度分量 */  FindBiDirLimits(xvec,&xstart,&xstop,nh);  FindBiDirLimits(yvec,&ystart,&ystop,nv);  BiDirPredBlock(xstart,xstop,ystart,ystop,xvec,yvec, recon_P,pred,16);  return;}
/**********************************************************************
 *
 *	函數名:FindBiDirChrPredPB
 *	函數功能:在PB模式下尋找雙向色度信息的預測值
 *	函數輸入:recon_P:重構恢復出來的P幀編碼宏塊,色度分量
 *			  dx:重構宏塊的位置(水平方位)
 *			  dy:重構宏塊的位置(豎直方位)*			  
 *			  pred:預測宏塊的數據指針
 ***********************************************************************/
void FindBiDirChrPredPB(MB_Structure *recon_P, int dx, int dy,         MB_Structure *pred){  int xstart,xstop,ystart,ystop;  FindBiDirChromaLimits(dx,&xstart,&xstop);  FindBiDirChromaLimits(dy,&ystart,&ystop);  BiDirPredBlock(xstart,xstop,ystart,ystop,dx,dy,         &recon_P->Cb[0][0], &pred->Cb[0][0],8);  BiDirPredBlock(xstart,xstop,ystart,ystop,dx,dy,         &recon_P->Cr[0][0], &pred->Cr[0][0],8);  return;}void FindBiDirLimits(int vec, int *start, int *stop, int nhv){  /* limits taken from C loop in section G5 in H.263 */  *start = mmax(0,(-vec+1)/2 - nhv*8);  *stop = mmin(7,15-(vec+1)/2 - nhv*8);  return;}  void FindBiDirChromaLimits(int vec, int *start, int *stop){  /* limits taken from C loop in section G5 in H.263 */  *start = mmax(0,(-vec+1)/2);  *stop = mmin(7,7-(vec+1)/2);  return;}void BiDirPredBlock(int xstart, int xstop, int ystart, int ystop,            int xvec, int yvec, int *recon, int *pred, int bl){  int i,j,pel;  int xint, yint;  int xh, yh;  xint = xvec>>1;  xh = xvec - 2*xint;  yint = yvec>>1;  yh = yvec - 2*yint;  if (!xh && !yh) {    for (j = ystart; j <= ystop; j++) {      for (i = xstart; i <= xstop; i++) {        pel = *(recon +(j+yint)*bl + i+xint);        *(pred + j*bl + i) = (mmin(255,mmax(0,pel)) + *(pred + j*bl + i))>>1;      }    }  }  else if (!xh && yh) {    for (j = ystart; j <= ystop; j++) {      for (i = xstart; i <= xstop; i++) {        pel = (*(recon +(j+yint)*bl + i+xint)       +                *(recon +(j+yint+yh)*bl + i+xint) + 1)>>1;        *(pred + j*bl + i) = (pel + *(pred + j*bl + i))>>1;      }    }  }  else if (xh && !yh) {    for (j = ystart; j <= ystop; j++) {      for (i = xstart; i <= xstop; i++) {        pel = (*(recon +(j+yint)*bl + i+xint)       +                *(recon +(j+yint)*bl + i+xint+xh) + 1)>>1;        *(pred + j*bl + i) = (pel + *(pred + j*bl + i))>>1;      }    }  }  else { /* xh && yh */    for (j = ystart; j <= ystop; j++) {      for (i = xstart; i <= xstop; i++) {        pel = (*(recon +(j+yint)*bl + i+xint)       +                *(recon +(j+yint+yh)*bl + i+xint) +                *(recon +(j+yint)*bl + i+xint+xh) +                *(recon +(j+yint+yh)*bl + i+xint+xh)+2)>>2;        *(pred + j*bl + i) = (pel + *(pred + j*bl + i))>>1;      }    }  }  return;}/********************************************************************** * *	Name:        DoPredChrom_P *	Description:	Does the chrominance prediction for P-frames *	 *	Input:        motionvectors for each field, *        current position in image, *        pointers to current and previos image, *        pointer to pred_error array, *        (int) field: 1 if field coding *         *	Side effects:	fills chrom-array in pred_error structure * *	Date: 930211	Author: Karl.Lillevold@nta.no * ***********************************************************************/void DoPredChrom_P(int x_curr, int y_curr, int dx, int dy,           PictImage *curr, PictImage *prev,            MB_Structure *pred_error){  int m,n;  int x, y, ofx, ofy, pel, lx;  int xint, yint;  int xh, yh;  lx = (mv_outside_frame ? pels/2 + (long_vectors?32:16) : pels/2);  x = x_curr>>1;  y = y_curr>>1;  xint = dx>>1;  xh = dx & 1;  yint = dy>>1;  yh = dy & 1;  if (!xh && !yh) {    for (n = 0; n < 8; n++) {      for (m = 0; m < 8; m++) {        ofx = x + xint + m;        ofy = y + yint + n;        pel=*(prev->Cr+ofx    + (ofy   )*lx);        pred_error->Cr[n][m] = (int)(*(curr->Cr + x+m + (y+n)*cpels) - pel);        pel=*(prev->Cb+ofx    + (ofy   )*lx);        pred_error->Cb[n][m] = (int)(*(curr->Cb + x+m + (y+n)*cpels) - pel);      }    }  }  else if (!xh && yh) {    for (n = 0; n < 8; n++) {      for (m = 0; m < 8; m++) {        ofx = x + xint + m;        ofy = y + yint + n;        pel=(*(prev->Cr+ofx    + (ofy   )*lx)+             *(prev->Cr+ofx    + (ofy+yh)*lx) + 1)>>1;        pred_error->Cr[n][m] =           (int)(*(curr->Cr + x+m + (y+n)*cpels) - pel);        pel=(*(prev->Cb+ofx    + (ofy   )*lx)+             *(prev->Cb+ofx    + (ofy+yh)*lx) + 1)>>1;        pred_error->Cb[n][m] =           (int)(*(curr->Cb + x+m + (y+n)*cpels) - pel);            }    }  }  else if (xh && !yh) {    for (n = 0; n < 8; n++) {      for (m = 0; m < 8; m++) {        ofx = x + xint + m;        ofy = y + yint + n;        pel=(*(prev->Cr+ofx    + (ofy   )*lx)+             *(prev->Cr+ofx+xh + (ofy   )*lx) + 1)>>1;        pred_error->Cr[n][m] =           (int)(*(curr->Cr + x+m + (y+n)*cpels) - pel);        pel=(*(prev->Cb+ofx    + (ofy   )*lx)+             *(prev->Cb+ofx+xh + (ofy   )*lx) + 1)>>1;        pred_error->Cb[n][m] =           (int)(*(curr->Cb + x+m + (y+n)*cpels) - pel);            }    }  }  else { /* xh && yh */    for (n = 0; n < 8; n++) {      for (m = 0; m < 8; m++) {        ofx = x + xint + m;        ofy = y + yint + n;        pel=(*(prev->Cr+ofx    + (ofy   )*lx)+             *(prev->Cr+ofx+xh + (ofy   )*lx)+             *(prev->Cr+ofx    + (ofy+yh)*lx)+             *(prev->Cr+ofx+xh + (ofy+yh)*lx)+             2)>>2;        pred_error->Cr[n][m] =           (int)(*(curr->Cr + x+m + (y+n)*cpels) - pel);        pel=(*(prev->Cb+ofx    + (ofy   )*lx)+             *(prev->Cb+ofx+xh + (ofy   )*lx)+             *(prev->Cb+ofx    + (ofy+yh)*lx)+             *(prev->Cb+ofx+xh + (ofy+yh)*lx)+             2)>>2;        pred_error->Cb[n][m] =           (int)(*(curr->Cb + x+m + (y+n)*cpels) - pel);            }    }  }  return;}/********************************************************************** * *	Name:        FindHalfPel *	Description:	Find the optimal half pel prediction *	 *	Input:        position, vector, array with current data *        pointer to previous interpolated luminance, * *	Returns: * *	Date: 930126        Author: Karl.Lillevold@nta.no *            950208    Mod: Karl.Lillevold@nta.no * ***********************************************************************/void FindHalfPel(int x, int y, MotionVector *fr, unsigned char *prev,          int *curr, int bs, int comp){  int i, m, n;  int half_pel;  int start_x, start_y, stop_x, stop_y, new_x, new_y, lx;  int min_pos;  int AE, AE_min;  Point search[9];  start_x = -1;  stop_x = 1;  start_y = -1;  stop_y = 1;  new_x = x + fr->x;  new_y = y + fr->y;  new_x += ((comp&1)<<3);  new_y += ((comp&2)<<2);  lx = (mv_outside_frame ? pels + (long_vectors?64:32) : pels);  /* Make sure that no addressing is outside the frame */  if (!mv_outside_frame) {    if ((new_x) <= 0)       start_x = 0;    if ((new_y) <= 0)       start_y = 0;    if ((new_x) >= (pels-bs))       stop_x = 0;    if ((new_y) >= (lines-bs))       stop_y = 0;  }  search[0].x = 0;        search[0].y = 0;  search[1].x = start_x;        search[1].y = start_y; /*   1 2 3   */  search[2].x = 0;        search[2].y = start_y; /*   4 0 5   */  search[3].x = stop_x;        search[3].y = start_y; /*   6 7 8   */  search[4].x = start_x;        search[4].y = 0;  search[5].x = stop_x;        search[5].y = 0;  search[6].x = start_x;        search[6].y = stop_y;  search[7].x = 0;        search[7].y = stop_y;  search[8].x = stop_x;        search[8].y = stop_y;  AE_min = INT_MAX;  min_pos = 0;  for (i = 0; i < 9; i++) {    AE = 0;    for (n = 0; n < bs; n++) {      for (m = 0; m < bs; m++) {        /* Find absolute error */        half_pel = *(prev + 2*new_x + 2*m + search[i].x +             (2*new_y + 2*n + search[i].y)*lx*2);        AE += abs(half_pel - *(curr + m + n*16));      }    }    /*     * if (i == 0 && fr->x == 0 && fr->y == 0 && bs == 16)      * AE -= PREF_NULL_VEC;     */    if (AE < AE_min) {      AE_min = AE;      min_pos = i;    }  }  /* Store optimal values */  fr->min_error = AE_min;  fr->x_half = search[min_pos].x;  fr->y_half = search[min_pos].y;          return;}/**********************************************************************
 *
 *	函數名:FindPred
 *	函數功能:尋找運測編碼塊
 *	函數輸入:x:編碼塊的水平位置
 *			  y:編碼塊的豎直位置
 *			  fr:運動向量
 *			  prev:前一幀數據
 *			  pred:預測宏塊的數據指針
 ***********************************************************************/void FindPred(int x, int y, MotionVector *fr, unsigned char *prev,               int *pred, int bs, int comp){  int m, n;  int new_x, new_y;  int lx;  lx = (mv_outside_frame ? pels + (long_vectors?64:32) : pels);  new_x = x + fr->x;  new_y = y + fr->y;  new_x += ((comp&1)<<3);  new_y += ((comp&2)<<2);  /* Fill pred. data */  for (n = 0; n < bs; n++) {    for (m = 0; m < bs; m++) {      /* Find interpolated pixel-value */      *(pred + m + n*16) = *(prev + (new_x + m)*2 + fr->x_half +             ((new_y + n)*2 + fr->y_half)*lx*2);    }	  }  return;}/**********************************************************************
 *
 *	函數名:FindPredOBMC
 *	函數功能:計算用于重疊塊匹配運動補償的預測塊
 *	函數輸入:x:編碼塊的水平位置
 *			  y:編碼塊的豎直位置
 *			  MV:運動向量
 *			  prev:前一幀數據
 *			  pred:預測宏塊的數據指針
 ***********************************************************************/
void FindPredOBMC(int x, int y, MotionVector *MV[6][MBR+1][MBC+2],           unsigned char *prev, int *pred, int comp, int PB){  int m, n;  int pc,pt,pb,pr,pl;  int nxc,nxt,nxb,nxr,nxl;  int nyc,nyt,nyb,nyr,nyl;  int xit,xib,xir,xil;  int yit,yib,yir,yil;  int vect,vecb,vecr,vecl;  int c8,t8,l8,r8;  int ti8,li8,ri8;  int xmb, ymb, lx;  MotionVector *fc,*ft,*fb,*fr,*fl;  int Mc[8][8] = {    {4,5,5,5,5,5,5,4},    {5,5,5,5,5,5,5,5},    {5,5,6,6,6,6,5,5},    {5,5,6,6,6,6,5,5},    {5,5,6,6,6,6,5,5},    {5,5,6,6,6,6,5,5},    {5,5,5,5,5,5,5,5},    {4,5,5,5,5,5,5,4},  };  int Mt[8][8] = {    {2,2,2,2,2,2,2,2},    {1,1,2,2,2,2,1,1},    {1,1,1,1,1,1,1,1},    {1,1,1,1,1,1,1,1},    {0,0,0,0,0,0,0,0},    {0,0,0,0,0,0,0,0},    {0,0,0,0,0,0,0,0},    {0,0,0,0,0,0,0,0},  };  int Mb[8][8] = {    {0,0,0,0,0,0,0,0},    {0,0,0,0,0,0,0,0},    {0,0,0,0,0,0,0,0},    {0,0,0,0,0,0,0,0},    {1,1,1,1,1,1,1,1},    {1,1,1,1,1,1,1,1},    {1,1,2,2,2,2,1,1},    {2,2,2,2,2,2,2,2},  };  int Mr[8][8] = {    {0,0,0,0,1,1,1,2},    {0,0,0,0,1,1,2,2},    {0,0,0,0,1,1,2,2},    {0,0,0,0,1,1,2,2},    {0,0,0,0,1,1,2,2},    {0,0,0,0,1,1,2,2},    {0,0,0,0,1,1,2,2},    {0,0,0,0,1,1,1,2},  };  int Ml[8][8] = {    {2,1,1,1,0,0,0,0},    {2,2,1,1,0,0,0,0},    {2,2,1,1,0,0,0,0},    {2,2,1,1,0,0,0,0},    {2,2,1,1,0,0,0,0},    {2,2,1,1,0,0,0,0},    {2,2,1,1,0,0,0,0},    {2,1,1,1,0,0,0,0},  };  xmb = x/MB_SIZE+1;  ymb = y/MB_SIZE+1;  lx = (mv_outside_frame ? pels + (long_vectors?64:32) : pels);  c8  = (MV[0][ymb][xmb]->Mode == MODE_INTER4V ? 1 : 0);  t8  = (MV[0][ymb-1][xmb]->Mode == MODE_INTER4V ? 1 : 0);  ti8 = (MV[0][ymb-1][xmb]->Mode == MODE_INTRA ? 1 : 0);  ti8 = (MV[0][ymb-1][xmb]->Mode == MODE_INTRA_Q ? 1 : ti8);  l8  = (MV[0][ymb][xmb-1]->Mode == MODE_INTER4V ? 1 : 0);  li8 = (MV[0][ymb][xmb-1]->Mode == MODE_INTRA ? 1 : 0);  li8 = (MV[0][ymb][xmb-1]->Mode == MODE_INTRA_Q ? 1 : li8);    r8  = (MV[0][ymb][xmb+1]->Mode == MODE_INTER4V ? 1 : 0);  ri8 = (MV[0][ymb][xmb+1]->Mode == MODE_INTRA ? 1 : 0);  ri8 = (MV[0][ymb][xmb+1]->Mode == MODE_INTRA_Q ? 1 : ri8);  if (PB) {    ti8 = li8 = ri8 = 0;  }  switch (comp+1) {  case 1:    vect = (ti8 ? (c8 ? 1 : 0) : (t8 ? 3 : 0));     yit  = (ti8 ? ymb : ymb - 1);     xit = xmb;    vecb = (c8 ? 3 : 0) ; yib = ymb; xib = xmb;    vecl = (li8 ? (c8 ? 1 : 0) : (l8 ? 2 : 0));     yil = ymb;     xil = (li8 ? xmb : xmb-1);    vecr = (c8 ? 2 : 0) ; yir = ymb; xir = xmb;    /* edge handling */    if (ymb == 1) {      yit = ymb;      vect = (c8 ? 1 : 0);    }    if (xmb == 1) {      xil = xmb;      vecl = (c8 ? 1 : 0);    }    break;    case 2:    vect = (ti8 ? (c8 ? 2 : 0) : (t8 ? 4 : 0));     yit = (ti8 ? ymb : ymb-1);     xit = xmb;    vecb = (c8 ? 4 : 0) ; yib = ymb; xib = xmb;    vecl = (c8 ? 1 : 0) ; yil = ymb; xil = xmb;    vecr = (ri8 ? (c8 ? 2 : 0) : (r8 ? 1 : 0));     yir = ymb; 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷av一区二区三区软件| 亚洲国产精品t66y| 国产精品久久久久桃色tv| 亚洲1区2区3区4区| 成人av免费观看| 日韩精品在线看片z| 一区二区三区欧美日韩| 国产精选一区二区三区| 91精品国产一区二区三区蜜臀 | 国产精品一级在线| 欧美高清视频不卡网| 亚洲三级视频在线观看| 国产成人免费视频网站| 精品国产伦一区二区三区观看方式 | 欧美一级日韩一级| 一区二区在线观看免费| 91蜜桃免费观看视频| 欧美激情在线观看视频免费| 经典一区二区三区| 欧美精品一区二区三区很污很色的| 午夜国产精品一区| 制服丝袜亚洲精品中文字幕| 亚洲精品va在线观看| 色就色 综合激情| 亚洲欧美电影院| 99精品视频一区二区三区| 亚洲欧洲日产国码二区| 成人av午夜电影| 国产精品成人在线观看| 99久久久无码国产精品| 中文字幕日韩一区| 日本精品一区二区三区高清| 中文字幕一区二区三区在线不卡 | 精品一区二区三区在线播放| 欧美精品久久天天躁| 午夜精品久久久久久久99樱桃| 91黄色小视频| 爽好多水快深点欧美视频| 日韩三级视频在线看| 激情图区综合网| 久久精品视频免费| eeuss影院一区二区三区| 国产精品高潮呻吟| 欧美性欧美巨大黑白大战| 亚洲妇熟xx妇色黄| 日韩免费高清电影| 成人午夜私人影院| 亚洲品质自拍视频网站| 欧美在线啊v一区| 秋霞午夜av一区二区三区| 精品福利一二区| 成熟亚洲日本毛茸茸凸凹| 亚洲狠狠丁香婷婷综合久久久| 欧美主播一区二区三区| 蜜臀av性久久久久av蜜臀妖精| 精品乱人伦小说| 成人av在线看| 日韩精品一卡二卡三卡四卡无卡| 2021久久国产精品不只是精品| 99久久久国产精品免费蜜臀| 亚洲高清免费观看| 欧美激情综合在线| 欧美伦理影视网| 成熟亚洲日本毛茸茸凸凹| 五月婷婷综合网| 国产精品天天摸av网| 欧美三级电影网| 国产成人av一区二区| 亚洲高清免费视频| 国产精品久久久久aaaa| 日韩欧美在线观看一区二区三区| 成人久久视频在线观看| 青青青伊人色综合久久| 中文字幕日韩一区| 2024国产精品视频| 欧美久久婷婷综合色| 99久久婷婷国产精品综合| 久久成人久久爱| 一级中文字幕一区二区| 中文字幕va一区二区三区| 4438亚洲最大| 欧美性一二三区| 99久久99久久久精品齐齐| 国产精品一二三区在线| 婷婷国产在线综合| 亚洲欧美日韩系列| 中文字幕第一区综合| 精品国产免费久久| 欧美一级免费观看| 色欧美日韩亚洲| 91丨国产丨九色丨pron| 国产成人精品一区二| 极品美女销魂一区二区三区免费| 亚洲电影第三页| 一区二区三区蜜桃网| 国产精品久久久久久久久免费桃花 | 免费国产亚洲视频| 亚洲一区电影777| 亚洲日本va午夜在线电影| 国产女人18毛片水真多成人如厕 | 天堂午夜影视日韩欧美一区二区| 国产精品久久久久国产精品日日| www久久精品| 精品国产91九色蝌蚪| 欧美变态tickle挠乳网站| 91麻豆精品国产91久久久久久久久| 欧美午夜精品电影| 欧美日韩视频第一区| 欧美精品一二三| 9191国产精品| 91精品免费在线观看| 91麻豆精品国产自产在线| 91麻豆精品国产91久久久更新时间 | 国产精品美女久久久久aⅴ国产馆| 精品国产一区二区三区忘忧草| 日韩欧美在线不卡| 欧美成人a在线| 久久麻豆一区二区| 久久精品网站免费观看| 国产精品久久久久影院| 亚洲欧美国产三级| 亚洲成人自拍网| 免费在线成人网| 国产v综合v亚洲欧| 99久久精品情趣| 欧美视频你懂的| 欧美一级高清大全免费观看| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美日韩国产首页在线观看| 91麻豆精品国产综合久久久久久 | 欧美一区二区三区在| 日韩欧美国产一二三区| 久久九九久久九九| 亚洲精品一二三区| 日韩精品免费专区| 国产精品资源在线| 99久久久国产精品| 91麻豆精品国产91久久久资源速度 | 国内精品视频一区二区三区八戒| 国产激情一区二区三区四区| 99re热这里只有精品视频| 欧美性大战久久久| 精品国产亚洲在线| 亚洲精品欧美二区三区中文字幕| 亚洲成a人v欧美综合天堂下载 | 色婷婷一区二区| 91精品国产综合久久久久| 久久久综合精品| 亚洲午夜电影在线观看| 精品一区二区三区免费播放| 成人黄色综合网站| 在线不卡的av| 国产精品人妖ts系列视频| 午夜免费久久看| 国产xxx精品视频大全| 欧美日韩精品久久久| 久久精品亚洲一区二区三区浴池| 亚洲男人天堂av网| 精品在线视频一区| 欧洲视频一区二区| 久久久久久黄色| 天天操天天干天天综合网| 国产v综合v亚洲欧| 日韩你懂的在线观看| 亚洲精品大片www| 国产成人免费高清| 欧美一区二区网站| 亚洲黄色录像片| 成人免费视频app| 欧美变态tickling挠脚心| 一片黄亚洲嫩模| av一区二区三区四区| www精品美女久久久tv| 午夜久久久影院| 色天使色偷偷av一区二区| 日本一区二区三区四区| 免费在线看一区| 欧美日韩成人综合在线一区二区| 国产精品无圣光一区二区| 激情图片小说一区| 欧美刺激午夜性久久久久久久| 一区二区三区欧美亚洲| 97久久超碰精品国产| 国产日韩欧美亚洲| 国产精品一区二区免费不卡| 91精品久久久久久蜜臀| 亚洲午夜精品17c| 在线中文字幕一区二区| 亚洲天天做日日做天天谢日日欢| 国产成人在线电影| 国产欧美一区视频| 国产成人av福利| 国产视频在线观看一区二区三区| 日本sm残虐另类| 日韩一级片在线播放| 日韩电影免费在线| 欧美一二区视频| 久久精品国产99久久6| 日韩精品一区二区在线观看| 国产尤物一区二区在线|