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

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

?? b_frame.c

?? TML的參考源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
    {
      block_available_up = mb_available_up || (j > 0);
      j4=img->block_y+j;
      for(i=0;i<4;i=i+BLOCK_STEP[blocktype][0]) // X position in 4-pel resolution
      {
        i4=img->block_x+i;
        block_available_left = mb_available_left || (i > 0);

        if (j > 0)
          block_available_upright = i != ie ? 1 : 0;
        else if (i != ie)
          block_available_upright = block_available_up;
        else
          block_available_upright = mb_available_upright;

        if (i > 0)
          block_available_upleft = j > 0 ? 1 : block_available_up;
        else if (j > 0)
          block_available_upleft = block_available_left;
        else
          block_available_upleft = mb_available_upleft;

        mvPredType = MVPRED_MEDIAN;

        rFrameL    = block_available_left    ? img->fw_refFrArr[j4][i4-1]   : -1;
        rFrameU    = block_available_up      ? img->fw_refFrArr[j4-1][i4]   : -1;
        rFrameUR   = block_available_upright ? img->fw_refFrArr[j4-1][i4+BLOCK_STEP[blocktype][0]] :
                     block_available_upleft  ? img->fw_refFrArr[j4-1][i4-1] : -1;

        // Prediction if only one of the neighbors uses the selected reference frame
        if(rFrameL == fw_predframe_no && rFrameU != fw_predframe_no && rFrameUR != fw_predframe_no)
          mvPredType = MVPRED_L;
        else if(rFrameL != fw_predframe_no && rFrameU == fw_predframe_no && rFrameUR != fw_predframe_no)
          mvPredType = MVPRED_U;
        else if(rFrameL != fw_predframe_no && rFrameU != fw_predframe_no && rFrameUR == fw_predframe_no)
          mvPredType = MVPRED_UR;

        // Directional predictions
        else if(blocktype == 3)
        {
          if(i == 0)
          {
            if(rFrameL == fw_predframe_no)
              mvPredType = MVPRED_L;
          }
          else
          {
            if(rFrameUR == fw_predframe_no)
              mvPredType = MVPRED_UR;
          }
        }
        else if(blocktype == 2)
        {
          if(j == 0)
          {
            if(rFrameU == fw_predframe_no)
              mvPredType = MVPRED_U;
          }
          else
          {
            if(rFrameL == fw_predframe_no)
              mvPredType = MVPRED_L;
          }
        }
        else if(blocktype == 5 && i == 2)
          mvPredType = MVPRED_L;
        else if(blocktype == 6 && j == 2)
          mvPredType = MVPRED_U;

        for (k=0;k<2;k++)                       // vector prediction. find first koordinate set for pred
        {
          mv_a = block_available_left ? img->fw_mv[i4-1+BLOCK_SIZE][j4][k] : 0;
          mv_b = block_available_up   ? img->fw_mv[i4+BLOCK_SIZE][j4-1][k]   : 0;
          mv_d = block_available_upleft  ? img->fw_mv[i4-1+BLOCK_SIZE][j4-1][k] : 0;
          mv_c = block_available_upright ? img->fw_mv[i4+BLOCK_STEP[blocktype][0]+BLOCK_SIZE][j4-1][k] : mv_d;

          switch (mvPredType)
          {
          case MVPRED_MEDIAN:
            if(!(block_available_upleft || block_available_up || block_available_upright))
              pred_vec = mv_a;
            else
              pred_vec =mv_a+mv_b+mv_c-min(mv_a,min(mv_b,mv_c))-max(mv_a,max(mv_b,mv_c));
            break;
          case MVPRED_L:
            pred_vec = mv_a;
            break;
          case MVPRED_U:
            pred_vec = mv_b;
            break;
          case MVPRED_UR:
            pred_vec = mv_c;
            break;
          default:
            break;
          }

#if TRACE
          snprintf(currSE->tracestring, TRACESTRING_SIZE, " MVD(%d) ",k);
#endif

          currSE->type = SE_MVD;
          dp = &(currSlice->partArr[partMap[SE_BFRAME]]);

          if (inp->symbol_mode == UVLC)
            currSE->mapping = linfo_mvd; // linfo_2
          else
          {
            img->subblock_x = i; // position used for context determination
            img->subblock_y = j; // position used for context determination
                currSE->value2 = 2*k; // identifies the component and the direction; only used for context determination
                        currSE->reading = readBiMVD2Buffer_CABAC;
          }

          dp->readSyntaxElement(  currSE, img, inp, dp);

          vec = currSE->value1;

          for (l=0; l < BLOCK_STEP[blocktype][1]; l++)
            for (m=0; m < BLOCK_STEP[blocktype][0]; m++)
              currMB->mvd[0][j+l][i+m][k] =  vec;

          vec=vec+pred_vec;

          for(ii=0;ii<BLOCK_STEP[blocktype][0];ii++)
          {
            for(jj=0;jj<BLOCK_STEP[blocktype][1];jj++)
            {
              img->fw_mv[i4+ii+BLOCK_SIZE][j4+jj][k]=vec;
            }
          }

        }
      }
    }
  }

  // /////////////////////////////////////////////////////////////
  // find MVDBW
  // /////////////////////////////////////////////////////////////
  if(img->imod==B_Backward || img->imod==B_Bidirect)
  {
    // backward : note realtion between blocktype and img->mb_mode
    // bidirect : after reading bw_blk_size, bw_pmv is obtained

    if(img->mb_mode==2)
            blocktype=1;
    else if(img->mb_mode>4)
            blocktype=(img->mb_mode-1)/2;
    else if(img->mb_mode==3)
            blocktype=bw_blocktype;

        img->bw_blc_size_h = BLOCK_STEP[blocktype][0]*4;
        img->bw_blc_size_v = BLOCK_STEP[blocktype][1]*4;

    ie=4-BLOCK_STEP[blocktype][0];
    for(j=0;j<4;j=j+BLOCK_STEP[blocktype][1])   // Y position in 4-pel resolution
    {
      block_available_up = mb_available_up || (j > 0);
      j4=img->block_y+j;
      for(i=0;i<4;i=i+BLOCK_STEP[blocktype][0]) // X position in 4-pel resolution
      {
        i4=img->block_x+i;
        block_available_left = mb_available_left || (i > 0);

        if (j > 0)
          block_available_upright = i != ie ? 1 : 0;
        else if (i != ie)
          block_available_upright = block_available_up;
        else
          block_available_upright = mb_available_upright;

        if (i > 0)
          block_available_upleft = j > 0 ? 1 : block_available_up;
        else if (j > 0)
          block_available_upleft = block_available_left;
        else
          block_available_upleft = mb_available_upleft;

        mvPredType = MVPRED_MEDIAN;

        rFrameL    = block_available_left    ? img->bw_refFrArr[j4][i4-1]   : -1;
        rFrameU    = block_available_up      ? img->bw_refFrArr[j4-1][i4]   : -1;
        rFrameUR   = block_available_upright ? img->bw_refFrArr[j4-1][i4+BLOCK_STEP[blocktype][0]] :
                     block_available_upleft  ? img->bw_refFrArr[j4-1][i4-1] : -1;

        // Prediction if only one of the neighbors uses the selected reference frame
        if(rFrameL == bw_predframe_no && rFrameU != bw_predframe_no && rFrameUR != bw_predframe_no)
          mvPredType = MVPRED_L;
        else if(rFrameL != bw_predframe_no && rFrameU == bw_predframe_no && rFrameUR != bw_predframe_no)
          mvPredType = MVPRED_U;
        else if(rFrameL != bw_predframe_no && rFrameU != bw_predframe_no && rFrameUR == bw_predframe_no)
          mvPredType = MVPRED_UR;

        // Directional predictions
        else if(blocktype == 3)
        {
          if(i == 0)
          {
            if(rFrameL == bw_predframe_no)
              mvPredType = MVPRED_L;
          }
          else
          {
            if(rFrameUR == bw_predframe_no)
              mvPredType = MVPRED_UR;
          }
        }
        else if(blocktype == 2)
        {
          if(j == 0)
          {
            if(rFrameU == bw_predframe_no)
              mvPredType = MVPRED_U;
          }
          else
          {
            if(rFrameL == bw_predframe_no)
              mvPredType = MVPRED_L;
          }
        }
        else if(blocktype == 5 && i == 2)
          mvPredType = MVPRED_L;
        else if(blocktype == 6 && j == 2)
          mvPredType = MVPRED_U;

        for (k=0;k<2;k++)                       // vector prediction. find first koordinate set for pred
        {
          mv_a = block_available_left ? img->bw_mv[i4-1+BLOCK_SIZE][j4][k] : 0;
          mv_b = block_available_up   ? img->bw_mv[i4+BLOCK_SIZE][j4-1][k]   : 0;
          mv_d = block_available_upleft  ? img->bw_mv[i4-1+BLOCK_SIZE][j4-1][k] : 0;
          mv_c = block_available_upright ? img->bw_mv[i4+BLOCK_STEP[blocktype][0]+BLOCK_SIZE][j4-1][k] : mv_d;

          switch (mvPredType)
          {
          case MVPRED_MEDIAN:
            if(!(block_available_upleft || block_available_up || block_available_upright))
              pred_vec = mv_a;
            else
              pred_vec =mv_a+mv_b+mv_c-min(mv_a,min(mv_b,mv_c))-max(mv_a,max(mv_b,mv_c));
            break;
          case MVPRED_L:
            pred_vec = mv_a;
            break;
          case MVPRED_U:
            pred_vec = mv_b;
            break;
          case MVPRED_UR:
            pred_vec = mv_c;
            break;
          default:
            break;
          }

#if TRACE
          snprintf(currSE->tracestring, TRACESTRING_SIZE, " MVD(%d) ",k);
#endif

          currSE->type = SE_MVD;
          dp = &(currSlice->partArr[partMap[SE_BFRAME]]);

          if (inp->symbol_mode == UVLC)
            currSE->mapping = linfo_mvd; // linfo_2
          else
          {
            img->subblock_x = i; // position used for context determination
            img->subblock_y = j; // position used for context determination
            currSE->value2 = 2*k+1; // identifies the component and the direction; only used for context determination
                        currSE->reading = readBiMVD2Buffer_CABAC;
          }

          dp->readSyntaxElement(  currSE, img, inp, dp);

          vec = currSE->value1;

          for (l=0; l < BLOCK_STEP[blocktype][1]; l++)
            for (m=0; m < BLOCK_STEP[blocktype][0]; m++)
              currMB->mvd[1][j+l][i+m][k] =  vec;

          vec=vec+pred_vec;

          for(ii=0;ii<BLOCK_STEP[blocktype][0];ii++)
          {
            for(jj=0;jj<BLOCK_STEP[blocktype][1];jj++)
            {
              img->bw_mv[i4+ii+BLOCK_SIZE][j4+jj][k]=vec;
            }
          }

        }
      }
    }
  }
}

/*!
 ************************************************************************
 * \brief
 *    decode one macroblock for a B frame
 ************************************************************************
 */
int decode_one_macroblock_Bframe(struct img_par *img)
{
  int tmp_block[BLOCK_SIZE][BLOCK_SIZE];
  int tmp_blockbw[BLOCK_SIZE][BLOCK_SIZE];
  int js[2][2];
  int i,j,ii,jj,i1,j1,j4,i4;
  int js0,js1,js2,js3,jf,ifx;
  int uv;
  int vec1_x,vec1_y,vec2_x,vec2_y, vec1_xx, vec1_yy;
  int fw_pred, bw_pred;

  int ioff,joff;
  int ii0,jj0,ii1,jj1,if1,jf1,if0,jf0;

  int hv;
  byte refP_tr, TRb, TRp;
  // keep track of neighbouring macroblocks available for prediction

  int mb_nr = img->current_mb_nr;
  int mb_width = img->width/16;
  int mb_available_up = (img->mb_y == 0) ? 0 : (img->mb_data[mb_nr].slice_nr == img->mb_data[mb_nr-mb_width].slice_nr);
  int mb_available_left = (img->mb_x == 0) ? 0 : (img->mb_data[mb_nr].slice_nr == img->mb_data[mb_nr-1].slice_nr);
  Macroblock *currMB = &img->mb_data[img->current_mb_nr];

  int ref_frame_bw = 0;
  int ref_frame_fw = currMB->ref_frame+1;
  int ref_frame = ref_frame_fw;
  int mv_mul, f1, f2, f3, f4;



#ifdef _ADAPT_LAST_GROUP_
  extern int *last_P_no;
#endif

#if POS
  int color;
  if( mb_nr == 122)
    color = 0;
  else
    color = 0xff;
#endif

  // set variables depending on mv_res
  if(img->mv_res)
  {
    mv_mul=8;
    f1=16;
    f2=15;
  }
  else
  {
    mv_mul=4;
    f1=8;
    f2=7;
  }

  f3=f1*f1;
  f4=f3/2;

  // ////////////////////////////////////////////////////////////
  // start_scan decoding
  // ////////////////////////////////////////////////////////////
  /**********************************
   *    luma                        *
   *********************************/

  if (img->imod==INTRA_MB_NEW)
    intrapred_luma_2( img, currMB->intra_pred_modes[0]);

  for(j=0;j<MB_BLOCK_SIZE/BLOCK_SIZE;j++)
  {
    joff=j*4;
    j4=img->block_y+j;
    for(i=0;i<MB_BLOCK_SIZE/BLOCK_SIZE;i++)
    {
      ioff=i*4;
      i4=img->block_x+i;
      if(img->imod==INTRA_MB_OLD)
      {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费黄色在线| 亚洲一级电影视频| 国产大陆a不卡| 久久久.com| 国产精品99久久久久久有的能看| 久久久五月婷婷| 成人晚上爱看视频| 亚洲男人的天堂在线观看| 欧美午夜精品一区二区三区| 午夜欧美视频在线观看| 日韩久久精品一区| 成人污污视频在线观看| 一区二区三区四区激情| 欧美日韩中文另类| 激情图片小说一区| 日本一区二区综合亚洲| 色综合亚洲欧洲| 日韩在线一区二区| 久久九九全国免费| 91福利视频网站| 麻豆成人综合网| 欧美日韩高清一区二区不卡| 日日夜夜免费精品| 久久久久久久综合色一本| 99re视频精品| 日韩不卡手机在线v区| 国产日产亚洲精品系列| 在线免费av一区| 精品夜夜嗨av一区二区三区| 最好看的中文字幕久久| 日韩精品一区二区三区在线| 91在线精品一区二区| 奇米影视一区二区三区| 国产精品久99| 欧美一区国产二区| 91在线免费播放| 久久99日本精品| 亚洲自拍偷拍网站| 中文字幕精品—区二区四季| 在线电影欧美成精品| 99久久婷婷国产| 精品一区二区三区免费播放| 一区二区三区精品| 国产精品国产三级国产aⅴ入口| 欧美福利一区二区| 91在线精品秘密一区二区| 国产黄色成人av| 毛片av中文字幕一区二区| 亚洲一区影音先锋| 国产精品美女久久福利网站| 欧美不卡一区二区三区四区| 欧美视频一区在线观看| 99这里只有久久精品视频| 精品一区二区免费视频| 天使萌一区二区三区免费观看| 成人免费在线视频观看| 国产亚洲一区二区在线观看| 欧美一区二区黄| 欧美日韩三级在线| 色94色欧美sute亚洲线路二| 高清不卡在线观看av| 国产一区在线观看麻豆| 美女被吸乳得到大胸91| 热久久国产精品| 天天av天天翘天天综合网色鬼国产 | 亚洲国产精品二十页| 欧美一三区三区四区免费在线看| 一本到一区二区三区| 波波电影院一区二区三区| 国产乱人伦偷精品视频免下载| 成人黄色777网| 国产乱妇无码大片在线观看| 精一区二区三区| 精品一区二区三区欧美| 美女在线观看视频一区二区| 麻豆国产精品777777在线| 久久99精品久久久久| 久久福利资源站| 精东粉嫩av免费一区二区三区| 极品销魂美女一区二区三区| 韩国av一区二区三区在线观看| 激情综合五月天| 国产一区二区福利视频| 国产精品一区二区无线| 丁香啪啪综合成人亚洲小说 | 久久男人中文字幕资源站| 欧美成人一级视频| 精品国产麻豆免费人成网站| 亚洲精品一区二区在线观看| 久久综合丝袜日本网| 国产欧美日韩精品a在线观看| 国产区在线观看成人精品| 亚洲视频电影在线| 亚洲国产欧美在线| 日本女优在线视频一区二区 | 自拍偷自拍亚洲精品播放| ●精品国产综合乱码久久久久| 中文字幕一区二区三区四区不卡 | 波多野结衣精品在线| 色综合久久综合网欧美综合网| 欧美亚洲综合在线| 91精品国产入口| 国产午夜精品久久久久久久| 亚洲欧洲美洲综合色网| 亚洲影院在线观看| 久久精品国产久精国产| 国产精品一区二区无线| 色婷婷精品大在线视频| 欧美一级片在线看| 国产精品你懂的在线欣赏| 亚洲午夜影视影院在线观看| 精品亚洲免费视频| 色老综合老女人久久久| 精品美女在线观看| 亚洲欧美一区二区不卡| 麻豆精品一区二区av白丝在线| 成人久久久精品乱码一区二区三区| 91欧美一区二区| 日韩美女视频在线| 一区二区久久久| 国产一区二区三区蝌蚪| 欧美揉bbbbb揉bbbbb| 中文av一区二区| 日本aⅴ免费视频一区二区三区 | 国产在线不卡视频| 色吊一区二区三区| 久久婷婷一区二区三区| 亚洲国产精品久久艾草纯爱| 高清beeg欧美| 欧美电影一区二区| 亚洲视频电影在线| 国产精品一区二区久久精品爱涩| 欧美日韩专区在线| 亚洲日本在线看| 国产福利精品一区二区| 欧美乱妇一区二区三区不卡视频| 欧美国产视频在线| 精品在线播放午夜| 欧美日韩国产一级片| 综合自拍亚洲综合图不卡区| 国产一区二区三区视频在线播放| 欧美酷刑日本凌虐凌虐| 亚洲欧洲av色图| 国产成人精品影视| 日韩欧美国产电影| 香蕉加勒比综合久久 | 在线观看91精品国产入口| 欧美极品aⅴ影院| 久久精品国产成人一区二区三区| 欧美吞精做爰啪啪高潮| 成人欧美一区二区三区| 成人免费视频一区二区| 久久综合久久综合亚洲| 日本亚洲天堂网| 欧美乱熟臀69xxxxxx| 亚洲国产成人va在线观看天堂| 一本色道久久综合亚洲91| 国产亚洲精品超碰| 国产一区二区三区在线观看精品| 日韩午夜激情av| 男人操女人的视频在线观看欧美| 欧美日韩免费电影| 洋洋成人永久网站入口| 在线观看亚洲成人| 亚洲精品国产高清久久伦理二区| 99精品一区二区| 亚洲欧洲日产国产综合网| 99久久综合精品| 亚洲天堂精品在线观看| 色成人在线视频| 亚洲国产综合91精品麻豆| 欧美三级在线播放| 亚洲丰满少妇videoshd| 5858s免费视频成人| 欧美aⅴ一区二区三区视频| 91精品国产综合久久精品图片 | 国产精品亚洲专一区二区三区 | 国产精品嫩草影院av蜜臀| 99riav一区二区三区| 亚洲精品久久久久久国产精华液| 91视视频在线观看入口直接观看www | 国产精品1区二区.| 国产偷v国产偷v亚洲高清| jlzzjlzz欧美大全| 日韩美女视频19| 欧美日韩久久久| 精品一区二区三区蜜桃| 中文字幕 久热精品 视频在线| 99r国产精品| 午夜久久久久久久久久一区二区| 日韩亚洲电影在线| 国产高清久久久久| 中文字幕日韩av资源站| 欧美亚洲国产一区二区三区va| 天堂精品中文字幕在线| 欧美xxxxx裸体时装秀| 国产不卡高清在线观看视频| 亚洲精品自拍动漫在线| 欧美理论片在线| 国产成人av一区|