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

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

?? modedecision.c

?? This document aims to provide instructions on how to configure the H.264/AVC encoder and decoder usi
?? C
?? 第 1 頁 / 共 3 頁
字號:
                            refFrmBuf_s    **refBufList,                            int            nRefFrames,                             int            picType,                             int            picWidth,                            int            rdoLambda,                            int            ssd0,                            costMeasure_s  *codResults) {  int recordNumSkipped;  int recordQp;  int recordPrevQp;  int channelDistortion;  statSlice_s testStat;        pecCodeLumaMB(pMb, pMb->predY, 0, picType);  pedRecoLumaMB(pMb, pMb->predY, 0, picWidth);  codResults->mse = CalculateSsd    (& pMb->origY[0][0],     16, pMb->recoY, picWidth, 16, 16);  pecCodeChromaMB(pMb, pMb->predC, picType);  pedRecoChromaMB(pMb, pMb->predC, picWidth >> 1);  codResults->mse += CalculateSsd    (& pMb->origC[0][0],     16, pMb->recoU, picWidth >> 1, 8, 8);  codResults->mse += CalculateSsd    (& pMb->origC[0][0] + 8, 16, pMb->recoV, picWidth >> 1, 8, 8);  // perform test encoding to get the actual rate  bibInit(& pMb->mbBs);  pMb->type = MBK_INTER;  // do not want to change numSkipped and prevQp  recordNumSkipped = pMb->numSkipped;  recordQp         = pMb->qp;  recordPrevQp     = pMb->prevQp;  codResults->lumaCoeffBits = mbkSend    (& pMb->mbBs, pMb, nRefFrames, picType, & testStat);  pMb->numSkipped = recordNumSkipped;  pMb->qp         = recordQp;  pMb->prevQp     = recordPrevQp;  if (pMb->interMode == MOT_COPY)    pMb->interMode = MOT_16x16;  codResults->bits = bibGetNumBits(& pMb->mbBs);  codResults->cost = codResults->mse + rdoLambda * codResults->bits;  // channel distortion estimation  channelDistortion = 0;  if (pMb->plr > 0)    getChannelDistortion(pMb, refBufList, ssd0, &channelDistortion);  codResults->cDistortion = channelDistortion;}int mdGetCost(macroblock_s *pMb, costMeasure_s *cost,float scaleFactor ){  if (pMb->plr == 0)    return cost->cost;  else {    if ( cost->cost == MAX_COST)      return MAX_COST;  else      return (int)(cost->cost + cost->cDistortion*scaleFactor);  }}static int interMbSyntaxBits(macroblock_s *pMb){  int i, mbType, bitsMBtype;  // estimate the bits on mbType  mbType = streamGetMbTypeInter(pMb->interMode, pMb->refIndices);  bitsMBtype = uvlcBitsUnsigned[mbType];  if (pMb->interMode == MOT_8x8)  {    // need to send sub_mb_type    for (i = 0; i < 4; i++)      bitsMBtype += uvlcBitsUnsigned[pMb->interSubMbModes[i]];  }  return bitsMBtype;}void mdInterModeDecision(macroblock_s   *pMb,                         refFrmBuf_s    **refBufList,                         int            nRefFrames,                          int            picWidth,                         int            picType,                          int            modeDecision,                         int            ssd0,                         costMeasure_s  *interCost){  int i, j;  blkState_s *mvRefPairs;#ifndef DISABLE_RDO  if ((modeDecision & 0x0F) == MODE_DECISION_RDO)  {    int mode, bestMode, mode16x16Disabled;    costMeasure_s modeResults;    interCost->cost = MAX_COST;    bestMode = MOT_16x16;        // need skipping RDO only if current best MOT_16x16 can not be skipped    mode = MOT_16x16;    mode16x16Disabled = 0;    if (pMb->skipPredMvValid)    {      mode = MOT_COPY;      for (i = 0; i < 16; i ++)      {        pMb->modeMvRef[MOT_COPY][i].ref = 0;        pMb->modeMvRef[MOT_COPY][i].mv = pMb->skipPredMv;      }      if ((pMb->modeMvRef[MOT_16x16][0].ref == 0) &&        (pMb->modeMvRef[MOT_16x16][0].mv.x == pMb->skipPredMv.x) &&        (pMb->modeMvRef[MOT_16x16][0].mv.y == pMb->skipPredMv.y))      {        // this is handled as a skip case        mode16x16Disabled = 1;      }    }    for ( ; mode <= MOT_8x8; mode ++)    {      if (mode != MOT_COPY)      {        if (((mode < MOT_8x8) && (pMb->interModeFlags & (1 << (mode - 1))) == 0) ||          ((mode == MOT_8x8) && (pMb->interModeFlags >> 3) == 0))          continue;      }      if (mode == MOT_16x16 && mode16x16Disabled)        continue;      // the MV and refIdx for this mode is found in motion estimation      mvRefPairs = pMb->modeMvRef[mode];      // Copy motion vectors and reference index to get the prediction      for (j = 0; j < BLK_PER_MB;  j ++)         for (i = 0; i < BLK_PER_MB;  i ++)           pMb->current[j][i] = mvRefPairs[j * 4 + i];      // get the cost of this particular inter-mode      pMb->type = MBK_INTER;      pMb->interMode = mode;      if (mode == MOT_COPY)        pMb->interMode = MOT_16x16;      pMb->interSyntaxBits = mcpFindDiffMvs(pMb, nRefFrames - 1);      // get the luma and chroma predictors      mcpGetPred(pMb, refBufList);      mdInterModeCost        (pMb, refBufList, nRefFrames, picType, picWidth, pMb->rdoLambda, ssd0, & modeResults);      // adjust for the skipping cost      if (mode == MOT_COPY)      {        int skipCountCost;        // this cost is included in a non-skipped MB        skipCountCost = pMb->rdoLambda * (vlcuUVLCSize(pMb->numSkipped + 2) - 1);        if (modeResults.bits)        {          int skipCost;          // let's see if it is worthwhile to skip this MB          skipCost = CalculateSsd            (& pMb->origY[0][0], 16, & pMb->predY[0][0], 16, 16, 16);          skipCost += CalculateSsd            (& pMb->origC[0][0], 16, & pMb->predC[0][0], 16, 8, 8);          skipCost += CalculateSsd            (& pMb->origC[0][8], 16, & pMb->predC[0][8], 16, 8, 8);          if (pMb->plr == 0) {            if ((skipCost + skipCountCost < modeResults.cost) &&              (modeResults.lumaCoeffBits == 0))            {              // let's skip this              modeResults.bits = 0;              modeResults.mse  = skipCost;              modeResults.cost = modeResults.mse;            }          }          else {            if ((skipCost + modeResults.cDistortion + skipCountCost < mdGetCost(pMb, &modeResults, 1.0f)) &&              (modeResults.lumaCoeffBits == 0))            {              // let's skip this              modeResults.bits = 0;              modeResults.mse  = skipCost;              modeResults.cost = modeResults.mse;            }          }        }        if (modeResults.bits == 0) {          modeResults.cost   += skipCountCost;        }      }      if (mdGetCost(pMb, &modeResults,1.0f) < mdGetCost(pMb, interCost,1.0f)) // modeResults.cost < interCost->cost      {        bestMode = mode;        *interCost = modeResults;      }    }    pMb->interMode = bestMode;      }  else#endif  {    int channelDistortion;    channelDistortion = 0;    if (pMb->plr > 0)      getChannelDistortion(pMb, refBufList, ssd0, &channelDistortion);    interCost->cDistortion = (int) channelDistortion;  }  // we got the best mode already if not rdo  mvRefPairs = pMb->modeMvRef[pMb->interMode];  for (j = 0; j < BLK_PER_MB;  j ++)     for (i = 0; i < BLK_PER_MB;  i ++)       pMb->current[j][i] = mvRefPairs[j * 4 + i];  // do we have MOT_COPY as the best mode  if ((pMb->interMode == MOT_COPY) && (interCost->bits != 0))    pMb->interMode = MOT_16x16;  pMb->type = MBK_INTER;  // differential motion vectors, must be called before interMbSyntaxBits  pMb->interSyntaxBits = 0;  if (pMb->interMode != MOT_COPY)  {    pMb->interSyntaxBits  = mcpFindDiffMvs(pMb, nRefFrames - 1);    pMb->interSyntaxBits += interMbSyntaxBits(pMb);  }  // possible to separate an MB/sub-MB unnecessarily, because of greedy search.  // for example, best mode is 16x8, but 2 parts have the same motion vectors.   if (pMb->interMode > MOT_16x16)  {    if (MergeTree(mvRefPairs, & pMb->interMode))    {      // find the differential motion vectors again      // mcpFindDiffMvs must be called before interMbSyntaxBits      pMb->interSyntaxBits = mcpFindDiffMvs(pMb, nRefFrames - 1);      pMb->interSyntaxBits += interMbSyntaxBits(pMb);      interCost->sad = pMb->actualInterSad + pMb->interSyntaxBits * pMb->lambda;    }  }}void mdIntraModeDecision(macroblock_s   *pMb,                         refFrmBuf_s    **refBufList,                         int            picWidth,                         int            picType,                         int            modeDecision,                         int            ssd0,                         costMeasure_s  *intra16x16Cost,                         costMeasure_s  *intra4x4Cost,                         costMeasure_s  *intraCost){  int mbAddr;    mbAddr = pMb->idxY * picWidth / MBK_SIZE + pMb->idxX ;  *intraCost = initCostMeasure;#ifndef DISABLE_RDO  if ((modeDecision & 0x0F) == MODE_DECISION_RDO)  {    // pick better intra mode between intra16x16 and intra4x4,     // and the best chroma intra mode at the same time    int mode, bestChromaMode, startMode, stopMode, intraType, chromaIntraSad;    costMeasure_s current, chromaCost;    int chromaModeAvail[IPR_CHROMA_NUM_MODES];        // Get all possible chroma predictors    iprGetPredChroma(pMb->predIntraC, chromaModeAvail, pMb->recoU, pMb->recoV,       picWidth >> 1, pMb->mbAvailMapIntra);    if ((modeDecision & RDO_INTRA_CHROMA) == 0)    {      chromaIntraSad = mdIntraPredChroma(pMb, chromaModeAvail, 1);      startMode = pMb->intraModeChroma;      stopMode  = pMb->intraModeChroma;    }    else    {      startMode = 0;      stopMode = IPR_CHROMA_NUM_MODES - 1;    }    chromaCost = initCostMeasure;    bestChromaMode = pMb->intraModeChroma;    pMb->type = MBK_INTRA;    intraType = MBK_INTRA_TYPE1;    for (mode = startMode; mode <= stopMode; mode ++)     {      if (chromaModeAvail[mode])       {        int otherSyntaxBits;        statSlice_s testStat;      // dummy        pecCodeChromaMB(pMb, pMb->predIntraC[mode], picType);        pedRecoChromaMB(pMb, pMb->predIntraC[mode], picWidth >> 1);        chromaCost.mse = CalculateSsd          (& pMb->origC[0][0],     16, pMb->recoU, picWidth >> 1, 8, 8);        chromaCost.mse += CalculateSsd          (& pMb->origC[0][0] + 8, 16, pMb->recoV, picWidth >> 1, 8, 8);        // test encoding        bibInit(& pMb->mbBs);        chromaCost.bits  = uvlcBitsUnsigned[mode];        chromaCost.bits += streamSendChromaCoeffs(& pMb->mbBs, pMb, & testStat);        if (pMb->intra16x16enabled) {          // --------------------------------------------------------------------          // evaluate the cost if chroma is encoded with the best intra16x16          // number of bits used for mbType and cbp          // intialize some parameters to encode MB in intra4x4          pMb->intraType = MBK_INTRA_TYPE2;          pMb->cbpY = pMb->intra16x16CbpY;          otherSyntaxBits = streamCountIntraSyntaxBits(pMb, picType);          current.mse  = intra16x16Cost->mse + chromaCost.mse;          current.bits = otherSyntaxBits + intra16x16Cost->bits + chromaCost.bits;          current.cost = current.mse + pMb->rdoLambda * current.bits;                   if (refBufList[0] && pMb->plr > 0)            current.cDistortion = pMb->plr * (refBufList[0]->channelDistortion[mbAddr] + ssd0) / 100;          else            current.cDistortion = 0;          current.sad = intra16x16Cost->sad;           if ( mdGetCost(pMb, &current,1.0f) < mdGetCost(pMb, intraCost,1.0f) )          {            intraType = MBK_INTRA_TYPE2;            bestChromaMode = mode;            *intraCost = current;          }        }        // --------------------------------------------------------------------        // evaluate the cost if chroma is encoded with the best intra4x4        // number of bits used for mbType and cbp        // intialize some parameters to encode MB in intra4x4        pMb->intraType = MBK_INTRA_TYPE1;        pMb->cbpY = pMb->intra4x4CbpY;    // calculated in intra4x4 prediction        otherSyntaxBits = streamCountIntraSyntaxBits(pMb, picType);        current.mse  = intra4x4Cost->mse + chromaCost.mse;        current.bits = otherSyntaxBits + intra4x4Cost->bits + chromaCost.bits;        current.cost = current.mse + pMb->rdoLambda * current.bits;        // the channel distortion is regarded to be 0.0        if (refBufList[0] && pMb->plr > 0)          current.cDistortion = pMb->plr * (refBufList[0]->channelDistortion[mbAddr] + ssd0) / 100;        else          current.cDistortion = 0;        current.sad = intra4x4Cost->sad;         if ( mdGetCost(pMb, &current,1.0f) < mdGetCost(pMb, intraCost,1.0f) )        {          intraType = MBK_INTRA_TYPE1;          bestChromaMode = mode;          *intraCost = current;        }      }    }    pMb->intraType = intraType;    pMb->intraModeChroma = bestChromaMode;   }  else#endif  {    // pick better intra mode between intra16x16 and intra4x4    if (intra4x4Cost->cost < intra16x16Cost->cost)    {      pMb->intraType = MBK_INTRA_TYPE1;      *intraCost = *intra4x4Cost;   pMb->actualIntraSad = pMb->actualIntra4x4Sad;    }    else {      pMb->intraType = MBK_INTRA_TYPE2;      *intraCost = *intra16x16Cost;    pMb->actualIntraSad = pMb->actualIntra16x16Sad;    }    if (refBufList[0] && pMb->plr > 0)      intraCost->cDistortion = pMb->plr * (refBufList[0]->channelDistortion[mbAddr] + ssd0) / 100;    else      intraCost->cDistortion = 0;    // the chroma mode is decided later when intra/inter decision is made  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲裸体在线观看| 国产一区二区三区高清播放| 麻豆国产欧美一区二区三区| 国产馆精品极品| 欧美一区二区久久| 1区2区3区国产精品| 韩国精品一区二区| 69p69国产精品| 成人欧美一区二区三区黑人麻豆| 韩国av一区二区三区四区| 色综合久久88色综合天天免费| 毛片一区二区三区| 色综合久久综合网97色综合 | 国产一区二区三区在线观看免费 | 欧美日韩情趣电影| 国产精品理论在线观看| 精品制服美女久久| 欧美色中文字幕| 亚洲欧美日韩系列| av午夜精品一区二区三区| 久久综合精品国产一区二区三区| 91国产免费看| 国产日韩亚洲欧美综合| 全部av―极品视觉盛宴亚洲| 91黄色免费观看| 亚洲男人的天堂在线aⅴ视频| |精品福利一区二区三区| 国产成人午夜视频| 国产精品中文欧美| 91精品国产麻豆| 蜜桃精品视频在线| 日韩亚洲欧美成人一区| 强制捆绑调教一区二区| 日韩视频免费观看高清完整版| 久久精品在线免费观看| 韩日精品视频一区| 精品久久久久久无| 看片网站欧美日韩| 久久亚洲综合色一区二区三区 | 丁香激情综合国产| 中文幕一区二区三区久久蜜桃| 亚洲视频香蕉人妖| 94-欧美-setu| 亚洲免费资源在线播放| 欧美性大战久久| 日韩精品国产欧美| 精品国产91久久久久久久妲己| 日韩一区在线看| 91小视频在线观看| 亚洲国产视频a| 精品日韩欧美在线| 不卡av免费在线观看| 一区二区三区在线观看视频| 欧美日韩免费一区二区三区视频| 国产精品免费人成网站| 91在线视频网址| 日日摸夜夜添夜夜添亚洲女人| 激情综合网最新| 国产精品亲子伦对白| 99久久免费国产| 丝袜a∨在线一区二区三区不卡| 99久久精品国产观看| 亚洲靠逼com| 欧美成人国产一区二区| 成人va在线观看| 日韩福利电影在线| 国产精品久久久久久亚洲毛片 | 日本一区二区视频在线| 风间由美性色一区二区三区| 亚洲精品一卡二卡| 日韩精品一区二区在线观看| 成人国产一区二区三区精品| 日韩成人伦理电影在线观看| 国产欧美日韩精品a在线观看| 精品一区二区在线看| 中文av字幕一区| 欧美一区二区在线视频| 99riav久久精品riav| 久久国产三级精品| 一区二区三区不卡在线观看| 久久一留热品黄| 欧美精品xxxxbbbb| 91丨国产丨九色丨pron| 久久不见久久见免费视频1| 亚洲欧美日本在线| 国产农村妇女毛片精品久久麻豆 | 国产美女精品人人做人人爽| 一区二区三区国产| 日本一区免费视频| 日韩一级免费一区| 欧美日韩国产成人在线91| jiyouzz国产精品久久| 国产综合成人久久大片91| 午夜精品福利久久久| 欧美国产精品一区二区三区| 欧美一区二区三区在| 在线观看亚洲a| 99re热视频精品| 成人av影院在线| 丁香另类激情小说| 国产很黄免费观看久久| 精品一区在线看| 青青草97国产精品免费观看| 亚洲福利视频一区二区| 亚洲在线观看免费视频| 亚洲人成网站精品片在线观看| 日本韩国一区二区| 91在线观看污| 一本久久综合亚洲鲁鲁五月天 | 国产情人综合久久777777| 欧美岛国在线观看| 91精品国产综合久久福利| 91久久精品一区二区| 91久久精品日日躁夜夜躁欧美| 蜜桃av噜噜一区| 美女网站色91| 日韩国产高清影视| 久久国产三级精品| 精品亚洲成av人在线观看| 狠狠狠色丁香婷婷综合激情| 狠狠色狠狠色合久久伊人| 国产一区二区三区综合| 国产91精品一区二区麻豆亚洲| 亚洲综合激情小说| 亚洲国产精品久久不卡毛片| 一区二区三区在线免费视频| 亚洲综合激情网| 日韩电影在线免费看| 麻豆专区一区二区三区四区五区| 亚洲私人黄色宅男| 依依成人精品视频| 天堂精品中文字幕在线| 久久99精品久久久久久国产越南| |精品福利一区二区三区| 亚洲精品福利视频网站| 日韩vs国产vs欧美| 国产精品91xxx| 91浏览器在线视频| 欧美日韩综合色| 久久免费午夜影院| 亚洲欧洲国产日本综合| 亚洲成人av电影| 国产中文字幕精品| 91电影在线观看| 欧美v日韩v国产v| 亚洲色图制服诱惑 | 欧美成人精品1314www| 欧美精品一区二区三区四区| 久久久蜜桃精品| 亚洲视频一区二区在线| 日韩成人一级大片| 成人少妇影院yyyy| 337p亚洲精品色噜噜| 国产午夜精品理论片a级大结局| 日韩情涩欧美日韩视频| 国产精品久久久久影院| 天天影视涩香欲综合网 | 亚洲成人精品一区二区| 国产一区二区在线观看视频| 91亚洲资源网| 久久在线观看免费| 亚洲欧美视频在线观看视频| 老司机精品视频线观看86| 99在线视频精品| 91精品国产综合久久久久久久 | 精品一区二区免费视频| 色网站国产精品| 精品国精品国产| 亚洲第一电影网| 成人h动漫精品| 国产午夜亚洲精品午夜鲁丝片| 久久久午夜精品| 老色鬼精品视频在线观看播放| 日本视频一区二区| 丝袜美腿亚洲色图| 国产日韩精品久久久| 精品国产区一区| 亚洲福利视频一区| 国产美女久久久久| 欧美一区二区三区成人| 亚洲色图一区二区| 粉嫩av一区二区三区在线播放| 国产麻豆精品视频| 精品日韩在线一区| 丝袜脚交一区二区| 欧美三级在线视频| 亚洲一卡二卡三卡四卡无卡久久| 亚洲欧美日韩在线不卡| 成人久久久精品乱码一区二区三区| 成人a区在线观看| 久久女同互慰一区二区三区| 美国十次综合导航| 日韩一区二区三区观看| 亚洲123区在线观看| 欧美日韩亚洲丝袜制服| 亚洲午夜精品久久久久久久久| 欧美aa在线视频| 日韩你懂的电影在线观看| 美女视频网站久久| 精品国精品国产|