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

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

?? macroblock.c

?? TML的參考源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:

  // chroma AC coeff, all zero fram start_scan
  if (cbp>31)
  {
    block_y=4;
    for (block_x=0; block_x < 4; block_x += 2)
    {
      for (j=block_y; j < block_y+2; j++)
      {
        jj=j/2;
        j1=j-4;
        for (i=block_x; i < block_x+2; i++)
        {
          ii=i/2;
          i1=i%2;
          {
            coef_ctr=0;
            level=1;
            for(k=0;(k<16)&&(level!=0);k++)
            {
              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;
              }
#if TRACE
              snprintf(currSE.tracestring, TRACESTRING_SIZE, " AC Chroma ");
#endif
              if(img->type == B_IMG_1 || img->type == B_IMG_MULT)
                dP = &(currSlice->partArr[partMap[SE_BFRAME]]);
              else
                dP = &(currSlice->partArr[partMap[currSE.type]]);
              
              if (inp->symbol_mode == UVLC || dP->bitstream->ei_flag)
                currSE.mapping = linfo_levrun_inter;
              else
                currSE.reading = readRunLevelFromBuffer_CABAC;

              dP->readSyntaxElement(&currSE,img,inp,dP);
              level = currSE.value1;
              run = currSE.value2;
              len = currSE.len;

              if (level != 0)
              {
                currMB->cbp_blk |= 1 << (16 + (j1<<1) + i1 + (block_x<<1) ) ;
                coef_ctr=coef_ctr+run+1;
                i0=SNGL_SCAN[coef_ctr][0];
                j0=SNGL_SCAN[coef_ctr][1];
                img->cof[i][j][i0][j0]=level*JQ1[QP_SCALE_CR[img->qp]];
              }
            }
          }
        }
      }
    }
  }
}



/*!
 ************************************************************************
 * \brief
 *    copy current MB from last MB
 ************************************************************************
 */
void decode_one_CopyMB(struct img_par *img,struct inp_par *inp)
{
  int tmp_block[BLOCK_SIZE][BLOCK_SIZE];
  int i, j, ii, jj, uv;
  Macroblock *currMB = &img->mb_data[img->current_mb_nr];
  int ref_frame = currMB->ref_frame;
  int mv_mul;

  if(img->mv_res)
    mv_mul=8;
  else
    mv_mul=4;

  // get luma pixel *************************************************
  for(j=0;j<MB_BLOCK_SIZE;j+=BLOCK_SIZE)
  {
    for(i=0;i<MB_BLOCK_SIZE;i+=BLOCK_SIZE)
    {
      get_block(ref_frame,(img->pix_x+i)*mv_mul,(img->pix_y+j)*mv_mul,img,tmp_block);

      for(ii=0;ii<BLOCK_SIZE;ii++)
        for(jj=0;jj<BLOCK_SIZE;jj++)
          imgY[img->pix_y+j+jj][img->pix_x+i+ii]=tmp_block[ii][jj];
    }
  }
  if (img->type==SP_IMG_1 || img->type==SP_IMG_MULT)
  {
    for(j=0;j<MB_BLOCK_SIZE;j++)
    {
      jj=img->pix_y+j;
      for(i=0;i<MB_BLOCK_SIZE;i++)
      {
        ii=img->pix_x+i;
        img->mpr[i][j]=imgY[jj][ii];
      }
    }
    for (i=0; i < MB_BLOCK_SIZE; i+=BLOCK_SIZE)
      for (j=0; j < MB_BLOCK_SIZE; j+=BLOCK_SIZE)
        copyblock_sp(img,i,j);
  }
  // get chroma pixel **********************************************
  for(uv=0;uv<2;uv++)
  {
    for(j=0;j<MB_BLOCK_SIZE/2;j++)
    {
      jj=img->pix_c_y+j;
      for(i=0;i<MB_BLOCK_SIZE/2;i++)
      {
        ii=img->pix_c_x+i;
        imgUV[uv][jj][ii]=mcef[ref_frame][uv][jj][ii];
      }
    }
    if(img->type==SP_IMG_1 || img->type==SP_IMG_MULT)
    {
      for(j=0;j<MB_BLOCK_SIZE/2;j++)
      {
        jj=img->pix_c_y+j;
        for(i=0;i<MB_BLOCK_SIZE/2;i++)
        {
          ii=img->pix_c_x+i;
          img->mpr[i][j]=imgUV[uv][jj][ii];
        }
      }
      for (j=4;j<6;j++)
        for(i=0;i<4;i++)
          for(ii=0;ii<4;ii++)
            for(jj=0;jj<4;jj++)
              img->cof[i][j][ii][jj]=0;

      itrans_sp_chroma(img,2*uv);

      for (j=4;j<6;j++)
      {
        for(i=0;i<2;i++)
        {
          itrans(img,i*4,(j-4)*4,2*uv+i,j);

          for(ii=0;ii<4;ii++)
            for(jj=0;jj<4;jj++)
            {
              imgUV[uv][img->pix_c_y+(j-4)*4+jj][img->pix_c_x+i*4+ii]=img->m7[ii][jj];
            }
        }
      }
    }
  }
}

/*!
 ************************************************************************
 * \brief
 *    decode one macroblock
 ************************************************************************
 */
int decode_one_macroblock(struct img_par *img,struct inp_par *inp)
{
  int tmp_block[BLOCK_SIZE][BLOCK_SIZE];
  int js[2][2];
  int i=0,j=0,ii=0,jj=0,i1=0,j1=0,j4=0,i4=0;
  int js0=0,js1=0,js2=0,js3=0,jf=0;
  int uv;
  int vec1_x=0,vec1_y=0,vec2_x=0,vec2_y=0;
  int ioff,joff;

  int ii0,jj0,ii1,jj1,if1,jf1,if0,jf0;
  int mv_mul,f1,f2,f3,f4;

  Macroblock *currMB   = &img->mb_data[img->current_mb_nr];
  int ref_frame        = currMB->ref_frame;

  // 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;

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

  // get prediction for INTRA_MB_16x16
  if (currMB->mb_imode == 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;
      // get prediction for INTRA_MB_4x4
      if(currMB->mb_imode == INTRA_MB_OLD)
      {
        if (intrapred(img,ioff,joff,i4,j4)==SEARCH_SYNC)  // make 4x4 prediction block mpr from given prediction img->mb_mode
          return SEARCH_SYNC;                   // bit error
      }
      // get motion prediction for INTER_MB
      else if(currMB->mb_imode == INTRA_MB_INTER)
      {
        vec1_x = i4*4*mv_mul + img->mv[i4+BLOCK_SIZE][j4][0];
        vec1_y = j4*4*mv_mul + img->mv[i4+4][j4][1];

        get_block(ref_frame,vec1_x,vec1_y,img,tmp_block);

        for(ii=0;ii<BLOCK_SIZE;ii++)
          for(jj=0;jj<BLOCK_SIZE;jj++)
            img->mpr[ii+ioff][jj+joff] = tmp_block[ii][jj];
      }

      if ((img->type==SP_IMG_1 || img->type==SP_IMG_MULT) && (currMB->mb_imode == INTRA_MB_INTER))
        itrans_sp(img,ioff,joff,i,j);
      else itrans(img,ioff,joff,i,j);      // use DCT transform and make 4x4 block m7 from prediction block mpr

      for(ii=0;ii<BLOCK_SIZE;ii++)
      {
        for(jj=0;jj<BLOCK_SIZE;jj++)
        {
          imgY[j4*BLOCK_SIZE+jj][i4*BLOCK_SIZE+ii]=img->m7[ii][jj]; // contruct picture from 4x4 blocks
        }
      }
    }
  }
  // chroma decoding *******************************************************

  for(uv=0;uv<2;uv++)
  {
    if (img->imod==INTRA_MB_OLD || img->imod==INTRA_MB_NEW)// intra mode
    {
      int mb_available_up = (currMB->mb_available[0][1] != NULL);
      int mb_available_left = (currMB->mb_available[1][0] != NULL);
      if(img->UseConstrainedIntraPred)
      {
        const int mb_nr = img->current_mb_nr;
        const int mb_width = img->width/MB_BLOCK_SIZE;
        if (mb_available_up && (img->intra_mb[mb_nr-mb_width] ==0))
          mb_available_up = 0;
        if (mb_available_left && (img->intra_mb[mb_nr-1] ==0))
          mb_available_left = 0;
      }

      js0=0;
      js1=0;
      js2=0;
      js3=0;
      for(i=0;i<4;i++)
      {
        if(mb_available_up)
        {
          js0=js0+imgUV[uv][img->pix_c_y-1][img->pix_c_x+i];
          js1=js1+imgUV[uv][img->pix_c_y-1][img->pix_c_x+i+4];
        }
        if(mb_available_left)
        {
          js2=js2+imgUV[uv][img->pix_c_y+i][img->pix_c_x-1];
          js3=js3+imgUV[uv][img->pix_c_y+i+4][img->pix_c_x-1];
        }
      }
      if(mb_available_up && mb_available_left)
      {
        js[0][0]=(js0+js2+4)/8;
        js[1][0]=(js1+2)/4;
        js[0][1]=(js3+2)/4;
        js[1][1]=(js1+js3+4)/8;
      }
      if(mb_available_up && !mb_available_left)
      {
        js[0][0]=(js0+2)/4;
        js[1][0]=(js1+2)/4;
        js[0][1]=(js0+2)/4;
        js[1][1]=(js1+2)/4;
      }
      if(mb_available_left && !mb_available_up)
      {
        js[0][0]=(js2+2)/4;
        js[1][0]=(js2+2)/4;
        js[0][1]=(js3+2)/4;
        js[1][1]=(js3+2)/4;
      }
      if(!mb_available_up && !mb_available_left)
      {
        js[0][0]=128;
        js[1][0]=128;
        js[0][1]=128;
        js[1][1]=128;
      }
    }

    for (j=4;j<6;j++)
    {
      joff=(j-4)*4;
      j4=img->pix_c_y+joff;
      for(i=0;i<2;i++)
      {
        ioff=i*4;
        i4=img->pix_c_x+ioff;
        // make pred
        if(img->imod==INTRA_MB_OLD|| img->imod==INTRA_MB_NEW)// intra
        {
          for(ii=0;ii<4;ii++)
            for(jj=0;jj<4;jj++)
            {
              img->mpr[ii+ioff][jj+joff]=js[i][j-4];
            }
        }
        else
        {
          for(jj=0;jj<4;jj++)
          {
            jf=(j4+jj)/2;
            for(ii=0;ii<4;ii++)
            {
              if1=(i4+ii)/2;
              i1=(img->pix_c_x+ii+ioff)*f1+img->mv[if1+4][jf][0];
              j1=(img->pix_c_y+jj+joff)*f1+img->mv[if1+4][jf][1];

              ii0=max (0, min (i1/f1, img->width_cr-1));
              jj0=max (0, min (j1/f1, img->height_cr-1));
              ii1=max (0, min ((i1+f2)/f1, img->width_cr-1));
              jj1=max (0, min ((j1+f2)/f1, img->height_cr-1));

              if1=(i1 & f2);
              jf1=(j1 & f2);
              if0=f1-if1;
              jf0=f1-jf1;
              img->mpr[ii+ioff][jj+joff]=(if0*jf0*mcef[ref_frame][uv][jj0][ii0]+
                if1*jf0*mcef[ref_frame][uv][jj0][ii1]+
                if0*jf1*mcef[ref_frame][uv][jj1][ii0]+
                if1*jf1*mcef[ref_frame][uv][jj1][ii1]+f4)/f3;

            }
          }
        }
        if ((img->type!=SP_IMG_1 && img->type!=SP_IMG_MULT) || (currMB->mb_imode != INTRA_MB_INTER))
        {
          itrans(img,ioff,joff,2*uv+i,j);
          for(ii=0;ii<4;ii++)
            for(jj=0;jj<4;jj++)
            {
              imgUV[uv][j4+jj][i4+ii]=img->m7[ii][jj];
            }
        }
      }
    }
    if((img->type==SP_IMG_1 || img->type==SP_IMG_MULT) && (currMB->mb_imode == INTRA_MB_INTER))
    {
      itrans_sp_chroma(img,2*uv);
      for (j=4;j<6;j++)
      {
        joff=(j-4)*4;
        j4=img->pix_c_y+joff;
        for(i=0;i<2;i++)
        {
          ioff=i*4;
          i4=img->pix_c_x+ioff;
          itrans(img,ioff,joff,2*uv+i,j);

          for(ii=0;ii<4;ii++)
            for(jj=0;jj<4;jj++)
            {
              imgUV[uv][j4+jj][i4+ii]=img->m7[ii][jj];
            }
        }
      }
    }
  }

  return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄色国产精品网站大全在线免费观看 | 久久99国产精品久久| 亚洲人亚洲人成电影网站色| 国产亚洲综合色| 国产婷婷色一区二区三区四区| 精品成a人在线观看| 亚洲精品在线网站| 国产精品区一区二区三| 国产精品免费久久久久| 国产精品久久久久久久久图文区| 国产精品剧情在线亚洲| 亚洲婷婷综合色高清在线| 亚洲色图制服诱惑| 亚洲国产精品一区二区久久 | 久久成人av少妇免费| 日本成人在线网站| 久久99国产精品麻豆| 岛国av在线一区| 91浏览器在线视频| 欧美老年两性高潮| 久久综合久久鬼色| 亚洲色图.com| 日本午夜一本久久久综合| 国产乱码字幕精品高清av| 99精品视频在线观看免费| 欧美日韩一区二区三区四区| 欧美大胆一级视频| 国产精品国产三级国产普通话蜜臀 | 亚洲欧美在线视频观看| 亚洲一区二区精品久久av| 另类小说一区二区三区| 99精品欧美一区二区三区小说 | 欧美另类高清zo欧美| 91麻豆精品91久久久久久清纯| 日韩精品一区二区三区视频播放| 欧美精品一区二区久久婷婷 | 亚洲成人手机在线| 国产精品69毛片高清亚洲| 91亚洲精品久久久蜜桃| 久久久久综合网| 亚洲一区自拍偷拍| 国产盗摄一区二区三区| 欧美三级日本三级少妇99| 久久人人超碰精品| 日韩精品三区四区| 成人99免费视频| 欧美电视剧免费全集观看| 亚洲午夜一区二区| k8久久久一区二区三区| 精品国产乱子伦一区| 亚洲午夜激情av| 色噜噜狠狠一区二区三区果冻| 精品国产凹凸成av人导航| 亚洲大片精品永久免费| 一本色道久久加勒比精品| 亚洲国产精华液网站w| 激情文学综合插| 日韩精品中午字幕| 丝袜诱惑亚洲看片| 欧美人xxxx| 亚洲成人福利片| 欧洲av在线精品| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲精品免费电影| 成人精品在线视频观看| 日韩欧美一区在线观看| 成人免费在线播放视频| 日韩制服丝袜av| 在线看日本不卡| 国产精品女上位| 久久国产人妖系列| 欧美日韩成人综合在线一区二区| 国产精品国产三级国产aⅴ入口| 蜜桃视频在线观看一区二区| 国产高清久久久久| 国产亚洲成aⅴ人片在线观看| 日韩电影一区二区三区四区| 欧洲视频一区二区| 亚洲欧美视频一区| 成人视屏免费看| 精品91自产拍在线观看一区| 午夜国产不卡在线观看视频| 色88888久久久久久影院按摩| 国产亚洲自拍一区| 国产精品一区一区| 国产欧美精品一区二区色综合 | 国产精品国产三级国产aⅴ中文| 久久国产精品第一页| 欧美一区二区三区色| 亚洲色图一区二区三区| 欧美少妇xxx| 午夜精品久久久久久久99水蜜桃| 欧美伊人精品成人久久综合97| 一区二区三区在线视频免费观看| 91首页免费视频| 亚洲色图都市小说| 日本二三区不卡| 亚洲欧美日韩在线播放| 欧美日韩国产美女| 亚洲激情成人在线| 欧美性xxxxxxxx| 日韩精品乱码免费| 精品噜噜噜噜久久久久久久久试看| 狠狠色丁香久久婷婷综合_中| 久久精品视频一区二区三区| 国产一区二区影院| 亚洲免费三区一区二区| 欧美日韩一区二区三区在线看| 天天色天天爱天天射综合| 日韩精品一区二区三区中文精品| 青青青爽久久午夜综合久久午夜| 精品国精品国产| 成人自拍视频在线观看| 国产精品毛片大码女人| 欧美一区二区二区| 国产成人综合精品三级| 亚洲欧美区自拍先锋| 欧美日本在线播放| 国内精品自线一区二区三区视频| 91精品婷婷国产综合久久| 午夜精品免费在线| 久久久美女毛片 | 国产夫妻精品视频| 亚洲视频在线一区| 欧美日韩不卡在线| 国产精品资源网站| 洋洋av久久久久久久一区| 欧美日韩综合一区| 国产精品一区二区三区乱码| 亚洲黄色尤物视频| 欧美亚洲另类激情小说| 成人国产精品免费观看| 日韩电影在线观看网站| 欧美国产日韩a欧美在线观看| 欧美性大战久久久久久久蜜臀| 麻豆视频观看网址久久| 亚洲欧美日韩系列| 精品久久久久久久久久久久久久久久久| 国内精品免费在线观看| 国产女人水真多18毛片18精品视频| 欧美亚洲国产bt| eeuss鲁片一区二区三区在线观看| 五月激情六月综合| 18欧美亚洲精品| 精品国精品国产| 6080日韩午夜伦伦午夜伦| 色先锋资源久久综合| 国产91在线|亚洲| 久久66热偷产精品| 视频在线观看一区二区三区| 国产精品美女久久久久久久| 欧美mv和日韩mv国产网站| 欧美日韩一区二区三区四区| 欧美探花视频资源| 在线亚洲一区观看| k8久久久一区二区三区 | 国产午夜精品一区二区三区视频 | 国产69精品久久99不卡| 日韩精品一级二级| 奇米精品一区二区三区在线观看| 一区二区三区不卡视频在线观看| 欧美国产日韩亚洲一区| 久久久久久亚洲综合影院红桃| 欧美精品色综合| 欧美狂野另类xxxxoooo| 欧美日韩精品电影| 91久久免费观看| 国产乱子伦一区二区三区国色天香| 亚洲尤物在线视频观看| 亚洲人成网站影音先锋播放| 中文字幕在线不卡国产视频| 国产亚洲欧美一级| 国产欧美综合在线观看第十页| 久久精品一二三| 久久一二三国产| 自拍偷拍国产精品| 亚洲精品欧美激情| 午夜免费久久看| 日本欧美在线观看| 激情成人综合网| 美女脱光内衣内裤视频久久影院| 国产成人综合精品三级| gogogo免费视频观看亚洲一| 99久久精品国产一区二区三区| 色婷婷综合久久久| 欧美丰满美乳xxx高潮www| 日韩一区二区三区在线观看| 国产欧美中文在线| 亚洲欧美一区二区不卡| 亚洲超丰满肉感bbw| 麻豆国产一区二区| 国产91丝袜在线播放0| 91在线视频18| 精品对白一区国产伦| 国产精品免费av| 日日骚欧美日韩| 国产精品一区二区三区乱码| 91亚洲永久精品| 日韩一区二区免费在线电影| 中文在线资源观看网站视频免费不卡 |