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

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

?? macroblock.c

?? TML的參考源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
 */
void readCBPandCoeffsFromNAL(struct img_par *img,struct inp_par *inp)
{
  int i,j,k;
  int level, run;
  int mb_nr = img->current_mb_nr;
  int ii,jj;
  int i1,j1, m2,jg2;
  Macroblock *currMB = &img->mb_data[mb_nr];
  int cbp;
  SyntaxElement currSE;
  Slice *currSlice = img->currentSlice;
  DataPartition *dP;
  int *partMap = assignSE2partition[currSlice->dp_mode];
  int iii,jjj;
  int coef_ctr, len, i0,j0;

  int ll;
  int scan_loop_ctr;

  int block_x,block_y;
  int scan_mode, start_scan;

  // read CBP if not new intra mode
  if (img->imod != INTRA_MB_NEW)
  {
    if (img->imod == INTRA_MB_OLD)
      currSE.type = SE_CBP_INTRA;
    else
      currSE.type = SE_CBP_INTER;

    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)
    {
      if (img->imod == INTRA_MB_OLD)
        currSE.mapping = linfo_cbp_intra;
      else
        currSE.mapping = linfo_cbp_inter;
    }
    else
      currSE.reading = readCBPFromBuffer_CABAC;

#if TRACE
    snprintf(currSE.tracestring, TRACESTRING_SIZE, " CBP ");
#endif
   

    dP->readSyntaxElement(&currSE,img,inp,dP);
    currMB->cbp = cbp = currSE.value1;
    // Delta quant only if nonzero coeffs
    if (cbp !=0)
    {
      if (currMB->intraOrInter == INTER_MB)
        currSE.type = SE_DELTA_QUANT_INTER;
      else
        currSE.type = SE_DELTA_QUANT_INTRA;

      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_dquant;
      else
        currSE.reading= readDquantFromBuffer_CABAC;

#if TRACE
      snprintf(currSE.tracestring, TRACESTRING_SIZE, " Delta quant ");
#endif

      dP->readSyntaxElement(&currSE,img,inp,dP);
      currMB->delta_quant = currSE.value1;
      img->qp= (img->qp+currMB->delta_quant+32)%32;
    }
  }
  else
    cbp = currMB->cbp;

  for (i=0;i<BLOCK_SIZE;i++)
    for (j=0;j<BLOCK_SIZE;j++)
      for(iii=0;iii<BLOCK_SIZE;iii++)
        for(jjj=0;jjj<BLOCK_SIZE;jjj++)
          img->cof[i][j][iii][jjj]=0;// reset luma coeffs

  if(img->imod==INTRA_MB_NEW) // read DC coeffs for new intra modes
  {

    if (currMB->intraOrInter == INTER_MB)
      currSE.type = SE_DELTA_QUANT_INTER;
    else
      currSE.type = SE_DELTA_QUANT_INTRA;

    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_dquant;
    else
      currSE.reading= readDquantFromBuffer_CABAC;

#if TRACE
      snprintf(currSE.tracestring, TRACESTRING_SIZE, " Delta quant ");
#endif

    dP->readSyntaxElement(&currSE,img,inp,dP);
    currMB->delta_quant = currSE.value1;
    img->qp= (img->qp+currMB->delta_quant+32)%32;

    for (i=0;i<BLOCK_SIZE;i++)
      for (j=0;j<BLOCK_SIZE;j++)
        img->ipredmode[img->block_x+i+1][img->block_y+j+1]=0;

            // //////

    currSE.type = SE_LUM_DC_INTRA;
    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;
      currSE.context = 3; // for choosing context model
    }

    // ////////////
    coef_ctr=-1;
    level = 1;                            // just to get inside the loop
    for(k=0;(k<17) && (level!=0);k++)
    {
#if TRACE
      snprintf(currSE.tracestring, TRACESTRING_SIZE, "DC luma 16x16 ");
#endif
      dP->readSyntaxElement(&currSE,img,inp,dP);
      level = currSE.value1;
      run = currSE.value2;
      len = currSE.len;

      if (level != 0)                     // leave if len=1
      {
        coef_ctr=coef_ctr+run+1;

        i0=SNGL_SCAN[coef_ctr][0];
        j0=SNGL_SCAN[coef_ctr][1];

        img->cof[i0][j0][0][0]=level;// add new intra DC coeff
      }
    }
    itrans_2(img);// transform new intra DC
  }


  if (img->imod == INTRA_MB_OLD && img->qp < 24)
    scan_mode=DOUBLE_SCAN;
  else
    scan_mode=SINGLE_SCAN;


  // luma coefficients
  for (block_y=0; block_y < 4; block_y += 2) // all modes
  {
    for (block_x=0; block_x < 4; block_x += 2)
    {
      for (j=block_y; j < block_y+2; j++)
      {
        jj=j/2;
        for (i=block_x; i < block_x+2; i++)
        {
          ii=i/2;
          if (img->imod == INTRA_MB_NEW)
            start_scan = 1; // skip DC coeff
          else
            start_scan = 0; // take all coeffs

          if((cbp & (int)pow(2,(ii+2*jj))) != 0)  // are there any coeff in current block at all
          {
            if (scan_mode==SINGLE_SCAN)
            {
              coef_ctr=start_scan-1;
              level = 1;
              for(k=start_scan;(k<17) && (level!=0);k++)
              {
                  /*
                  * make distinction between INTRA and INTER coded
                  * luminance coefficients
                */
                if (k == 0)
                {
                  if (img->imod == INTRA_MB_OLD || img->imod == INTRA_MB_NEW)
                  {
                    currSE.context = 2; // for choosing context model
                    currSE.type  = SE_LUM_DC_INTRA;
                  }
                  else
                  {
                    currSE.context = 1; // for choosing context model
                    currSE.type  = SE_LUM_DC_INTER;
                  }
                }
                else
                {
                  if (img->imod == INTRA_MB_OLD /*|| img->imod == INTRA_MB_NEW*/)
                  {
                    currSE.context = 2; // for choosing context model
                    currSE.type  = SE_LUM_AC_INTRA;
                  }
                  else if ( img->imod == INTRA_MB_NEW )
                  {
                    currSE.context = 4; // for choosing context model
                    currSE.type  = SE_LUM_AC_INTRA;
                  }
                  else
                  {
                    currSE.context = 1; // for choosing context model
                    currSE.type  = SE_LUM_AC_INTER;
                  }
                }

#if TRACE
                snprintf(currSE.tracestring, TRACESTRING_SIZE, " Luma sng ");
#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)   // leave if len=1
                {
                  coef_ctr += run+1;
                  currMB->cbp_blk |= 1 << ((j<<2) + i) ;
                  i0=SNGL_SCAN[coef_ctr][0];
                  j0=SNGL_SCAN[coef_ctr][1];


                  img->cof[i][j][i0][j0]=level*JQ1[img->qp];
                }
              }
            }
            else    // double scan (old intra with QP<24
            {
              for(scan_loop_ctr=0;scan_loop_ctr<2;scan_loop_ctr++)
              {
                coef_ctr=start_scan-1;
                level=1;                          // just to get inside the loop
                for(k=0; k<9 && level!=0;k++)
                {
                  if (k == 0)
                    currSE.type  = SE_LUM_DC_INTRA; // element is of type DC
                  else
                    currSE.type  = SE_LUM_AC_INTRA;   // element is of type AC
#if TRACE
                  snprintf(currSE.tracestring, TRACESTRING_SIZE, "Luma dbl(%2d,%2d)  ",scan_loop_ctr,k);
#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_intra;
                  else
                  {
                    currSE.context = 0; // for choosing context model
                    currSE.reading = readRunLevelFromBuffer_CABAC;
                  }

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

                  if (level != 0)   // leave if len=1
                  {
                    coef_ctr=coef_ctr+run+1;
                    currMB->cbp_blk |= 1 << ((j<<2) + i) ;

                    i0=DBL_SCAN[coef_ctr][0][scan_loop_ctr];
                    j0=DBL_SCAN[coef_ctr][1][scan_loop_ctr];

                    img->cof[i][j][i0][j0]=level*JQ1[img->qp];
                  }
                }
              }
            }
          }
        }
      }
    }
  }

  for (j=4;j<6;j++) // reset all chroma coeffs before read
    for (i=0;i<4;i++)
      for (iii=0;iii<4;iii++)
        for (jjj=0;jjj<4;jjj++)
          img->cof[i][j][iii][jjj]=0;

  m2=img->mb_x*2;
  jg2=img->mb_y*2;

  // chroma 2x2 DC coeff
  if(cbp>15)
  {
    for (ll=0;ll<3;ll+=2)
    {
      for (i=0;i<4;i++)
        img->cofu[i]=0;

      coef_ctr=-1;
      level=1;
      for(k=0;(k<5)&&(level!=0);k++)
      {
        if ( img->imod == INTRA_MB_OLD || img->imod == INTRA_MB_NEW)
        {
          currSE.context = 6; // for choosing context model
          currSE.type  = SE_CHR_DC_INTRA;
        }
        else
        {
          currSE.context = 5; // for choosing context model
          currSE.type  = SE_CHR_DC_INTER;
        }

#if TRACE
        snprintf(currSE.tracestring, TRACESTRING_SIZE, " 2x2 DC 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_c2x2;
        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 |= 0xf0000 << (ll<<1) ;
          coef_ctr=coef_ctr+run+1;
          // Bug: img->cofu has only 4 entries, hence coef_ctr MUST be <4 (which is
          // caught by the assert().  If it is bigger than 4, it starts patching the
          // img->predmode pointer, which leads to bugs later on.
          //
          // This assert() should be left in the code, because it captures a very likely
          // bug early when testing in error prone environments (or when testing NAL
          // functionality).
          assert (coef_ctr < 4);
          img->cofu[coef_ctr]=level*JQ1[QP_SCALE_CR[img->qp]];
        }
      }

      if ((img->type==SP_IMG_1 || img->type==SP_IMG_MULT) && (currMB->mb_imode == INTRA_MB_INTER))
      {
        img->cof[0+ll][4][0][0]=img->cofu[0]/JQ1[QP_SCALE_CR[img->qp]];
        img->cof[1+ll][4][0][0]=img->cofu[1]/JQ1[QP_SCALE_CR[img->qp]];
        img->cof[0+ll][5][0][0]=img->cofu[2]/JQ1[QP_SCALE_CR[img->qp]];
        img->cof[1+ll][5][0][0]=img->cofu[3]/JQ1[QP_SCALE_CR[img->qp]];
      }
      else
      {
        img->cof[0+ll][4][0][0]=(img->cofu[0]+img->cofu[1]+img->cofu[2]+img->cofu[3])/2;
        img->cof[1+ll][4][0][0]=(img->cofu[0]-img->cofu[1]+img->cofu[2]-img->cofu[3])/2;
        img->cof[0+ll][5][0][0]=(img->cofu[0]+img->cofu[1]-img->cofu[2]-img->cofu[3])/2;
        img->cof[1+ll][5][0][0]=(img->cofu[0]-img->cofu[1]-img->cofu[2]+img->cofu[3])/2;
      }
    }
  }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚区不卡日本| av动漫一区二区| 91麻豆国产在线观看| 欧美成人bangbros| 亚洲精品国产无天堂网2021| 国产综合久久久久久久久久久久 | 亚洲综合激情网| 国产成人亚洲精品青草天美| 欧美一三区三区四区免费在线看| 最新高清无码专区| 国产精品亚洲第一区在线暖暖韩国| 91麻豆精品国产91久久久资源速度 | 97久久精品人人做人人爽| 精品剧情v国产在线观看在线| 亚洲妇女屁股眼交7| av在线不卡网| 欧美国产精品劲爆| 国产一区在线观看视频| 91精品国产综合久久久久久| 亚洲无人区一区| 一本到高清视频免费精品| 国产精品欧美一区喷水| 国产精品一区二区你懂的| 日韩欧美一区在线| 蜜桃视频在线观看一区二区| 欧美色图一区二区三区| 欧美不卡一区二区三区四区| 亚洲与欧洲av电影| 成人综合在线观看| 欧美精品一区二区久久久| 亚洲国产毛片aaaaa无费看 | 一区二区三区加勒比av| 国产精品一区二区黑丝| 精品久久久久久无| 蜜臀av亚洲一区中文字幕| 欧美午夜精品电影| 综合网在线视频| 国产精品一级黄| 久久综合九色综合欧美就去吻| 首页综合国产亚洲丝袜| 91激情在线视频| 亚洲男人的天堂在线观看| 懂色av一区二区在线播放| 久久久亚洲综合| 久久国产精品99久久久久久老狼| 欧美丰满美乳xxx高潮www| 一区二区三区四区在线| 91香蕉视频污在线| 亚洲人成在线播放网站岛国 | 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 国产高清精品网站| 久久久久久久综合日本| 韩国一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 五月天丁香久久| 欧美亚洲动漫精品| 亚洲欧美视频在线观看| 欧美亚洲一区二区在线观看| 一区二区三区.www| 欧美综合天天夜夜久久| 亚洲电影你懂得| 欧美久久久久久蜜桃| 午夜精品在线视频一区| 欧美日韩视频不卡| 丝袜美腿亚洲综合| 91精品国产黑色紧身裤美女| 秋霞成人午夜伦在线观看| 欧美一区二区人人喊爽| 麻豆成人综合网| 欧美精品一区二区三区四区| 国产精品影视在线观看| 日本一区二区免费在线观看视频| 成人黄色免费短视频| 亚洲图片激情小说| 99精品国产99久久久久久白柏 | 欧美午夜精品理论片a级按摩| 亚洲一区二区中文在线| 欧美日韩国产经典色站一区二区三区 | 国产精品一区二区不卡| 国产日产精品1区| 9i在线看片成人免费| 亚洲激情在线激情| 欧美高清dvd| 国产另类ts人妖一区二区| 国产精品另类一区| 欧美在线高清视频| 免费人成精品欧美精品| 久久精品亚洲精品国产欧美kt∨ | 亚洲va欧美va人人爽| 在线91免费看| 国产一区二区三区在线观看精品| 亚洲国产精品精华液ab| 91国偷自产一区二区三区成为亚洲经典| 亚洲午夜精品在线| 日韩一区二区三区免费观看| 懂色中文一区二区在线播放| 一区二区三区在线观看欧美 | 国内外精品视频| 日韩一区欧美一区| 欧美夫妻性生活| 大陆成人av片| 亚洲国产日韩精品| 国产亚洲精久久久久久| 国产成人av网站| 午夜精品久久久久久久蜜桃app| 日韩精品一区二区三区在线观看| 成人福利在线看| 婷婷成人综合网| 国产欧美日韩另类视频免费观看| 欧美影片第一页| 国产一区二区三区精品欧美日韩一区二区三区 | 国产精品嫩草影院av蜜臀| 欧美探花视频资源| 国产一区二区不卡在线| 一级日本不卡的影视| 精品国产髙清在线看国产毛片| 99在线精品观看| 蜜桃视频一区二区三区 | 欧美日本韩国一区| 国产福利一区二区三区视频在线| 亚洲综合一二区| 国产亚洲成aⅴ人片在线观看| 欧美视频三区在线播放| 国产精品亚洲成人| 午夜精品福利视频网站| 国产欧美日韩不卡免费| 欧美精品乱人伦久久久久久| 成人免费的视频| 丝袜美腿亚洲一区二区图片| 国产精品高潮呻吟| 精品国产91九色蝌蚪| 欧美日韩免费视频| av在线播放成人| 国产综合色精品一区二区三区| 午夜久久久久久| 亚洲精品一二三| 久久久精品免费免费| 欧美一区国产二区| 91美女在线观看| 成人久久久精品乱码一区二区三区| 青青草伊人久久| 亚洲一卡二卡三卡四卡无卡久久| 久久久国产精华| 精品三级在线看| 欧美精品v日韩精品v韩国精品v| 99精品欧美一区二区三区综合在线| 国产精一品亚洲二区在线视频| 亚洲h在线观看| 一区二区三区四区乱视频| 中文字幕巨乱亚洲| 精品国产免费视频| 日韩女同互慰一区二区| 欧美久久久久久久久久 | 久久av中文字幕片| 午夜伊人狠狠久久| 亚洲伦在线观看| 中文字幕在线不卡国产视频| 日韩精品影音先锋| 欧美人妖巨大在线| 7777精品伊人久久久大香线蕉的 | 一区二区视频在线| 国产精品毛片久久久久久| 国产视频视频一区| 久久九九久精品国产免费直播| 3atv一区二区三区| 在线观看成人免费视频| 99久久精品一区| 成人精品高清在线| 国产成人无遮挡在线视频| 国产剧情av麻豆香蕉精品| 日本色综合中文字幕| 亚洲图片欧美色图| 亚洲高清不卡在线观看| 亚洲va欧美va人人爽午夜| 午夜不卡av免费| 丝袜美腿亚洲一区二区图片| 午夜精品久久一牛影视| 午夜精品久久久久久久99水蜜桃 | 亚洲高清一区二区三区| 亚洲激情图片一区| 亚洲精品成人天堂一二三| 国产精品高潮呻吟久久| 亚洲色图制服丝袜| 亚洲欧美日韩在线| 亚洲伊人伊色伊影伊综合网| 亚洲一区二区三区四区中文字幕| 夜夜爽夜夜爽精品视频| 亚洲一区二区三区四区在线观看 | 日韩一区二区三区四区| 精品国产免费视频| 国产日产欧美精品一区二区三区| 中文字幕欧美日韩一区| 亚洲精品国产无天堂网2021| 亚洲国产日产av| 美腿丝袜亚洲综合| 国产黄色精品网站| 国产乱色国产精品免费视频| 国产精品1区2区3区在线观看| 国产精品白丝jk白祙喷水网站| av亚洲精华国产精华精|