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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? modedecision.c

?? This document aims to provide instructions on how to configure the H.264/AVC encoder and decoder usi
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
  return nonZero;}/* * mdIntraPredLuma4x4: * * Parameters: *      pMb                   Macroblock coding object *      picWidth              Horizontal size of the frame *      picType               Type of the frame (intra/inter) *      bestMbSad             Best MB sad so far *      modeDecision          How mode decision should be performed *      intra4x4Cost          Cost for the intra4x4 prediction *      low_complex_prof3     low complexity prof 3 * * Function: *      Build 4x4 predictions and choose the best mode for each block. * * Returns: *      SAD for the best 4x4 intra prediction modes, if RDO is not enabled, *      otherwise, RDO cost of encoding luma is returned. *      pMb->cbpY is also modified in the function. */int mdIntraPredLuma4x4(macroblock_s   *pMb,                        int            picWidth,                        int            picType,                        int            bestMbSad,                        int            modeDecision,                       costMeasure_s *intra4x4Cost,                       int            low_complex_prof3)  {  u_int8 predBlk[IPR_NUM_MODES1][BLK_SIZE][MBK_SIZE];  int modeAvail1[IPR_NUM_MODES1];  int blk8x8, blkIdx;  int blkCount;  int mode;  int bestMode;  int nonZero, exitFlag;  int searchLimit;  int mostProbableMode;  int mbModeBits;  int *mbAvailMap;  int actualBlkSad=0;  costMeasure_s bestBlkCost, blkCost;  pMb->cbpY = 0;  mbAvailMap = pMb->mbAvailMapIntra;  intra4x4Cost->mse  = 0;  intra4x4Cost->sad  = 0;  pMb->actualIntra4x4Sad = 0;#ifndef DISABLE_RDO  if (modeDecision == MODE_DECISION_RDO)  {    intra4x4Cost->cost = 0;    searchLimit = MAX_COST;  }  else#endif  {    // used for mbType, 5 bits in P-frame, 1 bit in I-frame    intra4x4Cost->cost = pMb->lambda * (IS_SLICE_P(picType) ? 5 : 1);     searchLimit = bestMbSad;  }  mbModeBits = 0;  blkCount = 0;  exitFlag = 0;  if (intra4x4Cost->cost + 16 * pMb->lambda >= searchLimit)  {    exitFlag = 1;    intra4x4Cost->cost += 16 * pMb->lambda;  }  for (blk8x8 = 0; (blk8x8 < 16) && (! exitFlag); blk8x8 += 4)  {    int numNonZeroBlks, nonZeroBlkFlag;    int blk8x8ModeBits, blk8x8CoeffBits;    numNonZeroBlks = 0;    blk8x8CoeffBits = 0;    blk8x8ModeBits = 0;    for (blkIdx = blk8x8; (blkIdx < (blk8x8 + 4)) && (! exitFlag); blkIdx ++)    {      int upMode, leftMode, blkAddr;      u_int8 *origBlk;      u_int8 *recoY;      int blk4x4BestModeBits;      int blk4x4BestNumCoeffs;      int blkX, blkY;      blkX = blkRasterOrder[blkIdx] & 3;      blkY = blkRasterOrder[blkIdx] >> 2;      blkAddr = blkY * 4 + blkX;      /* Get ipr modes of the two of the neighbouring blocks */      leftMode = pMb->blkLeft[blkAddr]->i4x4Mode;      upMode   = pMb->blkUp[blkAddr]->i4x4Mode;      recoY = & pMb->recoY[blkY * BLK_SIZE * picWidth + blkX*BLK_SIZE];      /* Make all possible 4x4 predictions for current block */      iprGetPredLuma4x4(predBlk, modeAvail1, recoY,         picWidth, leftMode, upMode, pMb->i4x4CornersAvail[blkY][blkX]);      // at least one is IPR_MODE_NA      if ((upMode + leftMode) >=  IPR_MODE_NA)        mostProbableMode = IPR_MODE_DC;      else        mostProbableMode = min(upMode, leftMode);      bestMode = 0;      blk4x4BestModeBits = 0;      blk4x4BestNumCoeffs = 0;      origBlk = & pMb->origY[blkY * BLK_SIZE][blkX * BLK_SIZE];      nonZeroBlkFlag = 0;      bestBlkCost = initCostMeasure;      blkCost     = initCostMeasure;      /* Choose the best mode for the current block */            for (mode = 0; mode < IPR_NUM_MODES1; mode++) {                if (modeAvail1[mode]) {          int numCoefs;          blkCost.sad = pMb->lambda * (mode == mostProbableMode ? 1 : 4);          if (modeDecision == MODE_DECISION_HADAMARD)            blkCost.sad += traDiffSATD4x4(            (u_int8 (*)[MBK_SIZE]) origBlk,            (u_int8 (*)[MBK_SIZE]) predBlk[mode]) >> 1;          else            blkCost.sad += traDiffSAD4x4(            (u_int8 (*)[MBK_SIZE]) origBlk,            (u_int8 (*)[MBK_SIZE]) predBlk[mode]);          nonZero  = 1;          numCoefs = 0;          /* Compute total SAD for the current mode by adding the start */          /* 'handicap' and the computed SAD                            */#ifndef DISABLE_RDO          if (modeDecision == MODE_DECISION_RDO)          {                        nonZero = encoRecoBlock((u_int8 (*)[MBK_SIZE]) origBlk, predBlk[mode],               pMb->coefY[blkIdx], recoY, picWidth, picType, pMb->qp);            /* If there were non-zero coefficients, decode block */            // perform entropy encoding            bibInit(& pMb->mbBs);            blkCost.bits = streamSend4x4Blk(& pMb->mbBs, pMb, 1,              COMP_LUMA, blkX, blkY,              pMb->coefY[blkIdx], BLK_CAT_Y, & numCoefs);            blkCost.bits += (mode == mostProbableMode) ? 1 : 4;            blkCost.mse   = CalculateSsd              (origBlk, MBK_SIZE, recoY, picWidth, BLK_SIZE, BLK_SIZE);            // calculate the MSE            blkCost.cost = blkCost.mse + pMb->rdoLambda * blkCost.bits;          }          else#endif          blkCost.cost = blkCost.sad;          if (blkCost.cost < bestBlkCost.cost) {            bestBlkCost   = blkCost;            bestMode      = mode;            blk4x4BestNumCoeffs = numCoefs;            actualBlkSad = blkCost.sad - pMb->lambda * (mode == mostProbableMode ? 1 : 4);             blk4x4BestModeBits  = (mode == mostProbableMode) ? 1 : 4;             nonZeroBlkFlag = nonZero;          }       }        // early termination in for mode        if ( (low_complex_prof3) && (bestBlkCost.cost < TH_IPR_MODE  ) )        {          break;        }      }      // store number of coeffs of the best mode, for future prediction      pMb->current[blkY][blkX].i4x4Mode = (int8) bestMode;      pMb->current[blkY][blkX].numLumaCoefs =         (int8) blk4x4BestNumCoeffs;      // this is the information related i4x4Mode to be stored in stream      pMb->ipTab[blkIdx] = (int8) ((bestMode == mostProbableMode) ?        -1 : ((bestMode < mostProbableMode) ? bestMode : bestMode - 1));      numNonZeroBlks  += nonZeroBlkFlag;      blk8x8CoeffBits += bestBlkCost.bits - blk4x4BestModeBits;  //will be zero for non-RDO      blk8x8ModeBits  += blk4x4BestModeBits;       blkCount ++;      intra4x4Cost->cost += bestBlkCost.cost;      intra4x4Cost->sad  += bestBlkCost.sad;      intra4x4Cost->mse  += bestBlkCost.mse;      pMb->actualIntra4x4Sad+=actualBlkSad;      // a little bit look ahead to have earlier termination      if ((intra4x4Cost->cost + pMb->lambda * (16 - blkCount)) >= searchLimit)      {        // at least this amount        intra4x4Cost->cost += pMb->lambda * (16 - blkCount);        exitFlag = 1;        continue;      }      nonZero = encoRecoBlock((u_int8 (*)[MBK_SIZE]) origBlk, predBlk[bestMode],         pMb->coefY[blkIdx], recoY, picWidth, picType, pMb->qp);      /* If there were non-zero coefficients, decode block */      if (nonZero > 0)        /* Update luma CBP */        pMb->cbpY |= 1 << blkIdx;    }    mbModeBits += blk8x8ModeBits;     if (numNonZeroBlks)      intra4x4Cost->bits += blk8x8CoeffBits;    else      intra4x4Cost->bits += 2;      // do not want to be too biased  }  intra4x4Cost->bits += mbModeBits;  // we re-calculate the sad here#ifndef DISABLE_RDO  if (modeDecision == MODE_DECISION_RDO) {    pMb->intra4x4CbpY = pMb->cbpY;    intra4x4Cost->cost = intra4x4Cost->mse + intra4x4Cost->bits * pMb->rdoLambda;  }  else#endif  {    // sad is used as cost above    intra4x4Cost->sad  = intra4x4Cost->cost;  }  return intra4x4Cost->cost;}/* * * mdIntraPredChroma: * * Parameters: *      pMb                   macroblock information *      orig                  Original pixels *      pred                  Return pointer for predicted pixels * * Function: *      Build 8x8 chroma predictions and choose the best mode for the *      macroblock. * * Returns: *      SAD of the best chroma intra mode * */int mdIntraPredChroma(macroblock_s *pMb,                       int chromaModeAvail[IPR_CHROMA_NUM_MODES],                      int hadamard){  int bestMode;  int bestCost;  int mode;  int currentCost;  int c;  int i, j;  int dcCoeffs[2][2];  /*   * Build 8x8 intra prediction   */  bestMode = -1;  bestCost  = INT_MAX;  for (mode = 0; mode < IPR_CHROMA_NUM_MODES; mode++)   {    if (chromaModeAvail[mode])     {      currentCost = 0;      for (c = 0; c < MBK_SIZE; c += MBK_SIZE/2) {        for (j = 0; j < BLK_PER_MB/2; j ++) {          for (i = 0; i < BLK_PER_MB/2; i ++)          {            if (hadamard)              currentCost += traDiffSATD4x4RetDc(              (u_int8 (*)[MBK_SIZE]) &pMb->origC[j*BLK_SIZE][c + i*BLK_SIZE],              (u_int8 (*)[MBK_SIZE]) &pMb->predIntraC[mode][j*BLK_SIZE][c + i*BLK_SIZE],              & dcCoeffs[j][i]);            else              currentCost += traDiffSAD4x4(              (u_int8 (*)[MBK_SIZE]) &pMb->origC[j*BLK_SIZE][c + i*BLK_SIZE],              (u_int8 (*)[MBK_SIZE]) &pMb->predIntraC[mode][j*BLK_SIZE][c + i*BLK_SIZE]);          }        }        if (hadamard) {          traDCT2x2(dcCoeffs);          // DC (>> 2), 2x2 Hadamard (<< 1) to match 4x4 Hadamard, end up (>> 1)          currentCost += (abs(dcCoeffs[0][0]) + abs(dcCoeffs[0][1]) +            abs(dcCoeffs[1][0]) + abs(dcCoeffs[1][1])) >> 1;        }      }      if (hadamard)        currentCost = currentCost >> 1;      currentCost = currentCost + uvlcBitsUnsigned[mode] * pMb->lambda;      if (currentCost < bestCost ) {        bestCost = currentCost;        bestMode = mode;      }    }  }  pMb->intraModeChroma = bestMode;  return bestCost;}extern int8 mcpModePartWidth[5];extern int8 mcpModePartHeight[5];static void getChannelDistortion(macroblock_s *pMb,                               refFrmBuf_s  **refBufList,                               int          ssd0,                               int          *distortion){  int blkIdxX, blkIdxY;  int shapeX, shapeY, mbPartW, mbPartH;  int i0, j0;  int i1, j1;  int i2, j2;  int k0, l0;  int picWidth;  int picHeight;  int mbIdxRef;  int mbkPerLine;  int mbAddr;  int *pDistortion;  distortion[0] = 0;  picWidth = refBufList[0]->picWidth;  picHeight = refBufList[0]->picHeight;  mbkPerLine = picWidth / MBK_SIZE;  mbAddr = pMb->idxY * picWidth / MBK_SIZE + pMb->idxX ;  shapeX = mcpModePartWidth[pMb->interMode];  shapeY = mcpModePartHeight[pMb->interMode];  mbPartW = shapeX * BLK_SIZE;  mbPartH = shapeY * BLK_SIZE;  // 1:    (1-p) * Dc(n-1, j)  for (blkIdxY = 0; blkIdxY < BLK_PER_MB; blkIdxY += shapeY) {    for (blkIdxX = 0; blkIdxX < BLK_PER_MB; blkIdxX += shapeX) {      blkState_s *pBlkState;      // the starting position of current block in pixel: k0, l0      k0 = (pMb->idxX * BLK_PER_MB + blkIdxX) * BLK_SIZE;      l0 = (pMb->idxY * BLK_PER_MB + blkIdxY) * BLK_SIZE;      // Absolute motion vector coordinates of the macroblock      pBlkState = & pMb->current[blkIdxY][blkIdxX];      pDistortion = refBufList[pBlkState->ref]->channelDistortion;      i0 = k0 * 4 + pBlkState->mv.x;      j0 = l0 * 4 + pBlkState->mv.y;      // the starting position of the ref block in pixel: i0, j0      i0 = i0 / 4;      j0 = j0 / 4;      if (i0 < 0) i0 = 0;      if (j0 < 0) j0 = 0;      if (i0 >= picWidth) i0 = picWidth - 1;      if (j0 >= picHeight) j0 = picHeight - 1;      // calculate the distortion here:      for (j1 = j0; j1 < j0 + mbPartH; j1++) {        for (i1 = i0; i1 < i0 + mbPartW; i1++) {          i2 = i1;          j2 = j1;          if (i2 >= picWidth) i2 = picWidth - 1;          if (j2 >= picHeight) j2 = picHeight - 1;          mbIdxRef  = (j2 / MBK_SIZE) * mbkPerLine + i2 / MBK_SIZE;          distortion[0] += pDistortion[mbIdxRef];  //  / 256.0        }      }    }  }  distortion[0] = distortion[0] >> 8; //  / 256  distortion[0] = distortion[0] * (100-pMb->plr);  // 2:    p * Dc(n-1, i)  distortion[0] += refBufList[0]->channelDistortion[mbAddr] * pMb->plr;  // 3:    p * ssd  distortion[0] += ssd0 * pMb->plr;  distortion[0] = distortion[0] / 100;}static void mdInterModeCost(macroblock_s   *pMb, 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线不卡视频| 日韩伦理免费电影| 日本免费新一区视频| 欧美日韩午夜影院| 日本欧美肥老太交大片| 日韩亚洲欧美在线观看| 国产一区二区三区香蕉| 日本一区二区三区国色天香| av电影天堂一区二区在线观看| 国产精品传媒入口麻豆| 91麻豆swag| 日本中文字幕一区二区视频| 欧美精品一区二区三区蜜桃视频| 丰满少妇在线播放bd日韩电影| 成人免费在线视频| 欧美亚洲图片小说| 精品一区二区三区免费毛片爱| 国产精品三级久久久久三级| 欧美午夜在线观看| 久久99精品国产.久久久久久| 国产精品三级电影| 9191久久久久久久久久久| 国产精品原创巨作av| 亚洲精品视频在线看| 欧美一区二区三区免费视频| 成人国产在线观看| 日韩电影免费在线观看网站| 中文字幕不卡一区| 欧美久久久影院| 成人丝袜高跟foot| 美日韩一区二区| 日韩美女视频一区二区| 精品美女被调教视频大全网站| heyzo一本久久综合| 日本成人在线电影网| 中文字幕一区二区不卡| 欧美成人性战久久| 日本韩国欧美在线| 国产精品一线二线三线精华| 亚洲午夜在线电影| 国产精品福利影院| 亚洲精品在线观看网站| 欧美中文字幕一区二区三区| 成人性生交大片免费看中文网站| 日本色综合中文字幕| 亚洲男女一区二区三区| 国产日韩欧美麻豆| 日韩精品专区在线影院重磅| 91久久久免费一区二区| 国产成人午夜精品影院观看视频| 午夜电影一区二区| 亚洲精品久久久蜜桃| 国产日产精品1区| 日韩美女一区二区三区四区| 欧美日韩精品一区二区三区四区 | 成人免费视频网站在线观看| 日本女人一区二区三区| 亚洲国产中文字幕| 一区二区三区电影在线播| 亚洲国产高清在线| 久久日韩精品一区二区五区| 制服丝袜一区二区三区| 欧美午夜精品久久久久久孕妇 | 久久久三级国产网站| 欧美精品tushy高清| 色综合久久中文字幕综合网| 高清成人在线观看| 国产91精品一区二区麻豆亚洲| 看电影不卡的网站| 美女看a上一区| 美女网站一区二区| 麻豆成人在线观看| 日产精品久久久久久久性色| 亚洲成人免费视频| 亚洲高清免费一级二级三级| 亚洲精品第一国产综合野| 亚洲欧美日韩综合aⅴ视频| 亚洲色图制服诱惑 | 国产精品萝li| 国产精品美日韩| 国产精品成人免费| 伊人夜夜躁av伊人久久| 亚洲欧美偷拍另类a∨色屁股| 亚洲精品你懂的| 一区二区三区不卡在线观看 | 欧美一级二级三级乱码| 欧美mv日韩mv亚洲| 国产日产欧美一区二区三区| 国产精品久久久久久久久久久免费看| 国产精品美女久久久久久久久 | 日韩精品电影在线观看| 久久99国产精品尤物| 国产成人超碰人人澡人人澡| av一本久道久久综合久久鬼色| www.av精品| 欧美午夜一区二区三区| 91精品欧美福利在线观看| 欧美大片在线观看一区二区| 国产女人水真多18毛片18精品视频 | 国产69精品一区二区亚洲孕妇| 国产成人av资源| 日本精品裸体写真集在线观看 | 激情深爱一区二区| 成人性生交大片| 欧美日韩一区二区三区免费看| 日韩写真欧美这视频| 国产欧美日韩在线观看| 亚洲美女一区二区三区| 美女在线观看视频一区二区| 成人一级片网址| 欧美精品日韩一区| 久久久不卡网国产精品二区| 一区二区三区日韩欧美精品| 蜜桃视频免费观看一区| av一区二区久久| 91精品国产综合久久精品app| 国产日韩高清在线| 亚洲一区二区在线免费看| 国产一区二区三区免费看| 色哟哟在线观看一区二区三区| 日韩免费看的电影| 一区二区三区四区视频精品免费| 免费高清视频精品| 色婷婷亚洲婷婷| 久久综合网色—综合色88| 一区二区在线看| 国产精品亚洲成人| 欧美一区二区三区在线| 亚洲精品日产精品乱码不卡| 国产一区二区三区国产| 欧美男生操女生| **欧美大码日韩| 国产在线精品一区二区不卡了 | 午夜精品免费在线观看| 粉嫩13p一区二区三区| 91精品国产麻豆国产自产在线 | 色综合天天综合给合国产| 日韩免费电影网站| 亚洲成人激情社区| 99综合电影在线视频| 久久久噜噜噜久久人人看| 首页国产欧美日韩丝袜| 91蜜桃网址入口| 国产欧美一区二区精品性| 久久成人麻豆午夜电影| 欧美日韩高清影院| 亚洲精品免费视频| 97se亚洲国产综合在线| 国产亚洲精品资源在线26u| 青青国产91久久久久久 | 久久se这里有精品| 欧美一级高清片| 日本中文字幕一区二区视频| 欧美色爱综合网| 一区二区在线观看av| 91污在线观看| 亚洲日本在线天堂| av电影在线观看不卡| 国产精品久久久久三级| 国产成人日日夜夜| www久久精品| 国产在线国偷精品产拍免费yy| 日韩欧美123| 久久91精品久久久久久秒播| 精品人在线二区三区| 国内久久婷婷综合| 久久中文娱乐网| 国产一区二区在线观看免费| 亚洲精品一线二线三线无人区| 蜜臀国产一区二区三区在线播放 | 亚洲国产另类av| 欧美日精品一区视频| 偷拍日韩校园综合在线| 91精品国产福利在线观看| 日韩高清欧美激情| 精品久久人人做人人爽| 国产毛片精品国产一区二区三区| 久久久久国产精品免费免费搜索| 国产91丝袜在线观看| 中文字幕一区av| 色偷偷久久一区二区三区| 婷婷中文字幕一区三区| 日韩视频永久免费| 国产成人亚洲综合a∨婷婷| 中文字幕一区二区三区蜜月| 99久久婷婷国产综合精品电影 | 国产99久久久精品| 国产精品人成在线观看免费| 国产·精品毛片| 国产精品久久久久一区二区三区 | 91丨porny丨首页| 一区二区三区四区不卡在线| 欧美片网站yy| 精品一区二区成人精品| 国产精品久久久久久一区二区三区| 91小视频免费看| 蜜臀久久99精品久久久久久9 | 99r国产精品| 首页国产欧美日韩丝袜| 欧美国产日韩a欧美在线观看|