亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
久久爱www久久做| 狂野欧美性猛交blacked| 欧美日韩精品一区二区天天拍小说 | 欧美精品一区二区三区蜜桃| 国内偷窥港台综合视频在线播放| 亚洲成人av中文| 午夜视频一区在线观看| 亚洲国产你懂的| 亚洲mv在线观看| 日韩成人午夜精品| 麻豆成人久久精品二区三区小说| 免费成人在线播放| 久久99国产精品免费网站| 久久69国产一区二区蜜臀| 国产乱淫av一区二区三区| 成人h版在线观看| 色综合中文综合网| 久久人人超碰精品| 精品999久久久| 中文一区二区完整视频在线观看| 中文字幕一区二区视频| 一区二区三区在线视频观看| 日韩中文字幕亚洲一区二区va在线 | 日韩电影在线观看一区| 国模套图日韩精品一区二区| 成人一区二区三区| 欧美性淫爽ww久久久久无| 日韩天堂在线观看| 欧美国产精品一区| 亚洲永久精品国产| 日韩精品每日更新| 国产美女精品人人做人人爽| 91小视频在线免费看| 在线电影院国产精品| 久久―日本道色综合久久| 一区二区三区四区五区视频在线观看| 偷拍一区二区三区| 国产精品亚洲成人| 欧美亚洲一区二区在线| 精品日韩一区二区| 中文字幕高清不卡| 一区二区三区免费在线观看| 久久国产精品99精品国产| 不卡的av在线播放| 日韩网站在线看片你懂的| 亚洲欧洲国产专区| 蜜桃视频一区二区三区| 91在线视频免费观看| 日韩久久免费av| 亚洲伦理在线精品| 国产乱码精品一区二区三| 在线观看91视频| 久久久久99精品国产片| 午夜精品国产更新| 不卡的av电影在线观看| 日韩欧美国产麻豆| 一个色妞综合视频在线观看| 国产精品一级在线| 欧美精品一卡二卡| 国产精品不卡在线观看| 激情综合亚洲精品| 欧美巨大另类极品videosbest | 国产成人免费视频精品含羞草妖精| 在线免费视频一区二区| 国产午夜一区二区三区| 日本亚洲免费观看| 色噜噜狠狠色综合中国| 国产三级精品在线| 免播放器亚洲一区| 欧美日韩中文字幕精品| 中文一区在线播放| 国产在线视视频有精品| 欧美久久久影院| 一区二区三区在线观看视频| 懂色av一区二区在线播放| 日韩欧美一二三| 亚洲成av人片在线| 一本色道久久综合亚洲aⅴ蜜桃 | 精品夜夜嗨av一区二区三区| 欧美福利一区二区| 一区二区三区加勒比av| 99视频在线观看一区三区| 国产亚洲福利社区一区| 午夜国产精品影院在线观看| 日本道精品一区二区三区| 国产精品萝li| 韩国视频一区二区| 欧美成人bangbros| 视频一区国产视频| 欧美日韩国产综合一区二区三区 | 亚洲人亚洲人成电影网站色| 国产在线播放一区二区三区| 欧洲国内综合视频| 亚洲欧洲日韩av| 成人18视频在线播放| 国产精品久久久久9999吃药| 高清av一区二区| 国产精品久久久久久妇女6080| 风间由美一区二区av101 | 亚洲一卡二卡三卡四卡无卡久久| 91色在线porny| 亚洲视频精选在线| 色欧美片视频在线观看| 亚洲男女一区二区三区| 色噜噜狠狠色综合中国| 亚洲国产成人高清精品| 色婷婷亚洲精品| 亚洲成av人**亚洲成av**| 欧美日韩在线直播| 偷偷要91色婷婷| 日韩欧美一级二级| 国产一区二区三区观看| 国产精品网站在线播放| 91麻豆免费观看| 亚洲国产日产av| 91精品婷婷国产综合久久性色| 蜜臀av国产精品久久久久| 久久亚洲精品小早川怜子| 国产精品一区二区久激情瑜伽| 久久久久久黄色| 99久久精品情趣| 亚洲成av人综合在线观看| 欧美日韩www| 久久精品72免费观看| 久久久久久免费网| 成人av网站大全| 亚洲自拍欧美精品| 日韩午夜av一区| 成熟亚洲日本毛茸茸凸凹| 亚洲日本va在线观看| 91精品在线麻豆| 国产麻豆视频一区| 亚洲男人的天堂av| 欧美一区二区日韩一区二区| 国产一区二区三区高清播放| 亚洲欧美偷拍另类a∨色屁股| 欧美欧美欧美欧美首页| 国产在线不卡视频| 一区二区三区**美女毛片| 日韩视频免费观看高清完整版在线观看 | 丝袜亚洲另类欧美| 久久香蕉国产线看观看99| 91在线视频播放地址| 日韩和欧美的一区| 欧美国产日韩精品免费观看| 欧美体内she精高潮| 国产一区二区美女诱惑| 亚洲男人电影天堂| 日韩一区二区在线观看| av中文字幕在线不卡| 偷窥少妇高潮呻吟av久久免费| 国产肉丝袜一区二区| 欧美日韩综合在线| 国产麻豆日韩欧美久久| 亚洲一区二区成人在线观看| 久久亚洲精精品中文字幕早川悠里| 91极品美女在线| 国产精品自拍三区| 亚洲高清在线视频| 国产精品素人视频| 日韩一区二区影院| 91在线播放网址| 国产一区二区精品久久99| 亚洲国产精品人人做人人爽| 一区二区三区在线看| 国产人成一区二区三区影院| 欧美精品乱码久久久久久按摩| 国产·精品毛片| 美国av一区二区| 一个色妞综合视频在线观看| 国产欧美精品国产国产专区| 日韩亚洲欧美一区| 欧美在线你懂得| 风间由美一区二区av101| 老司机精品视频在线| 亚洲国产aⅴ天堂久久| 国产精品国产三级国产aⅴ原创| 欧美变态口味重另类| 欧美色网站导航| 91丝袜美腿高跟国产极品老师 | 日韩视频国产视频| 欧美在线观看一二区| 99久久综合国产精品| 国产成人在线看| 麻豆91精品91久久久的内涵| 亚洲五月六月丁香激情| 中文字幕日韩一区| 日本一区二区三区在线不卡| 欧美成人伊人久久综合网| 欧美精品久久天天躁| 欧美撒尿777hd撒尿| 97久久超碰国产精品电影| 成人免费视频caoporn| 国产成人午夜视频| 国产精品99久久不卡二区| 国精产品一区一区三区mba桃花| 另类欧美日韩国产在线| 欧美aaa在线| 欧美bbbbb| 久久福利视频一区二区|