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

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

?? loopfilter.c

?? H264解碼器,本解碼器實現(xiàn)了圖像的264解碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
      // Start with Strength=3. or Strength=4 for Mb-edge
      Strength[idx] = (edge == 0 && (((!p->MbaffFrameFlag && (p->structure==FRAME)) ||
        (p->MbaffFrameFlag && !MbP->mb_field && !MbQ->mb_field)) ||
        ((p->MbaffFrameFlag || (p->structure!=FRAME)) && !dir))) ? 4 : 3;

      if(  !(MbP->mb_type==I4MB || MbP->mb_type==I16MB || MbP->mb_type==IPCM)
        && !(MbQ->mb_type==I4MB || MbQ->mb_type==I16MB || MbQ->mb_type==IPCM) )
      {
        if( ((MbQ->cbp_blk &  (1 << blkQ )) != 0) || ((MbP->cbp_blk &  (1 << blkP)) != 0) )
          Strength[idx] = 2 ;
        else
        {                                                     // if no coefs, but vector difference >= 1 set Strength=1 
          // if this is a mixed mode edge then one set of reference pictures will be frame and the
          // other will be field
          if (mixedModeEdgeFlag)
          {
            (Strength[idx] = 1);
          }
          else
          {
            get_mb_block_pos (MbQAddr, &mb_x, &mb_y);
            blk_y  = (mb_y<<2) + (blkQ >> 2) ;
            blk_x  = (mb_x<<2) + (blkQ  & 3) ;
            blk_y2 = pixP.pos_y >> 2;
            blk_x2 = pixP.pos_x >> 2;
//            if( (img->type == B_SLICE) )
            {
              int64 ref_p0,ref_p1,ref_q0,ref_q1;      
              ref_p0 = list0_refIdxArr[blk_x][blk_y]<0 ? -1 : list0_refPicIdArr[blk_x][blk_y];
              ref_q0 = list0_refIdxArr[blk_x2][blk_y2]<0 ? -1 : list0_refPicIdArr[blk_x2][blk_y2];
              ref_p1 = list1_refIdxArr[blk_x][blk_y]<0 ? -1 : list1_refPicIdArr[blk_x][blk_y];
              ref_q1 = list1_refIdxArr[blk_x2][blk_y2]<0 ? -1 : list1_refPicIdArr[blk_x2][blk_y2];
              if ( ((ref_p0==ref_q0) && (ref_p1==ref_q1)) ||
                ((ref_p0==ref_q1) && (ref_p1==ref_q0))) 
              {
                Strength[idx]=0;
                // L0 and L1 reference pictures of p0 are different; q0 as well
                if (ref_p0 != ref_p1) 
                { 
                  // compare MV for the same reference picture
                  if (ref_p0==ref_q0) 
                  {
                    Strength[idx] =  (abs( list0_mv[blk_x][blk_y][0] - list0_mv[blk_x2][blk_y2][0]) >= 4) |
                      (abs( list0_mv[blk_x][blk_y][1] - list0_mv[blk_x2][blk_y2][1]) >= mvlimit) |
                      (abs( list1_mv[blk_x][blk_y][0] - list1_mv[blk_x2][blk_y2][0]) >= 4) |
                      (abs( list1_mv[blk_x][blk_y][1] - list1_mv[blk_x2][blk_y2][1]) >= mvlimit);
                  }
                  else 
                  {
                    Strength[idx] =  (abs( list0_mv[blk_x][blk_y][0] - list1_mv[blk_x2][blk_y2][0]) >= 4) |
                      (abs( list0_mv[blk_x][blk_y][1] - list1_mv[blk_x2][blk_y2][1]) >= mvlimit) |
                      (abs( list1_mv[blk_x][blk_y][0] - list0_mv[blk_x2][blk_y2][0]) >= 4) |
                      (abs( list1_mv[blk_x][blk_y][1] - list0_mv[blk_x2][blk_y2][1]) >= mvlimit);
                  } 
                }
                else 
                { // L0 and L1 reference pictures of p0 are the same; q0 as well

                  Strength[idx] =  ((abs( list0_mv[blk_x][blk_y][0] - list0_mv[blk_x2][blk_y2][0]) >= 4) |
                    (abs( list0_mv[blk_x][blk_y][1] - list0_mv[blk_x2][blk_y2][1]) >= mvlimit ) |
                    (abs( list1_mv[blk_x][blk_y][0] - list1_mv[blk_x2][blk_y2][0]) >= 4) |
                    (abs( list1_mv[blk_x][blk_y][1] - list1_mv[blk_x2][blk_y2][1]) >= mvlimit))
                    &&
                    ((abs( list0_mv[blk_x][blk_y][0] - list1_mv[blk_x2][blk_y2][0]) >= 4) |
                    (abs( list0_mv[blk_x][blk_y][1] - list1_mv[blk_x2][blk_y2][1]) >= mvlimit) |
                    (abs( list1_mv[blk_x][blk_y][0] - list0_mv[blk_x2][blk_y2][0]) >= 4) |
                    (abs( list1_mv[blk_x][blk_y][1] - list0_mv[blk_x2][blk_y2][1]) >= mvlimit));
                }       
              }
              else 
              {
                Strength[idx] = 1;        
              } 
            }
/*            else  
            { // P slice
              int64 ref_p0,ref_q0;      
              ref_p0 = list0_refIdxArr[blk_x][blk_y]<0 ? -1 : list0_refPicIdArr[blk_x][blk_y];
              ref_q0 = list0_refIdxArr[blk_x2][blk_y2]<0 ? -1 : list0_refPicIdArr[blk_x2][blk_y2];
              Strength[idx] =  (ref_p0 != ref_q0 ) |
                (abs( list0_mv[blk_x][blk_y][0] - list0_mv[blk_x2][blk_y2][0]) >= 4 ) |
                (abs( list0_mv[blk_x][blk_y][1] - list0_mv[blk_x2][blk_y2][1]) >= mvlimit );
            } */
          }
        }
      }
    }
  }
}

#define CQPOF(qp) (Clip3(0, 51, qp + active_pps->chroma_qp_index_offset))

/*!
 *****************************************************************************************
 * \brief
 *    Filters one edge of 16 (luma) or 8 (chroma) pel
 *****************************************************************************************
 */
void EdgeLoop(byte** Img, byte Strength[16],struct img_par *img, int MbQAddr, int AlphaC0Offset, int BetaOffset,
              int dir, int edge, int width, int yuv)
{
  int      pel, ap = 0, aq = 0, Strng ;
  int      incP, incQ;
  int      C0, c0, Delta, dif, AbsDelta ;
  int      L2 = 0, L1, L0, R0, R1, R2 = 0, RL0, L3, R3 ;
  int      Alpha = 0, Beta = 0 ;
  byte*    ClipTab = NULL;   
  int      small_gap;
  int      indexA, indexB;
  int      PelNum;
  int      StrengthIdx;
  byte     *SrcPtrP, *SrcPtrQ;
  int      QP;
  int      xP, xQ, yP, yQ;
  Macroblock *MbQ, *MbP;
  PixelPos pixP, pixQ;
  
  PelNum = yuv ? 8 : 16 ;

  for( pel=0 ; pel<PelNum ; pel++ )
  {
    xQ = dir ? pel : edge << 2;
    yQ = dir ? (edge < 4 ? edge << 2 : 1) : pel;
    getNeighbour(MbQAddr, xQ, yQ, 1-yuv, &pixQ);
    getNeighbour(MbQAddr, xQ - (1 - dir), yQ - dir, 1-yuv, &pixP);
    xP = pixP.x;
    yP = pixP.y;
    MbQ = &(img->mb_data[MbQAddr]);
    MbP = &(img->mb_data[pixP.mb_addr]);
    fieldModeFilteringFlag = MbQ->mb_field || MbP->mb_field;
    StrengthIdx = yuv ? ((MbQ->mb_field && !MbP->mb_field) ? pel<<1 : ((pel>>1)<<2)+(pel%2)) : pel ;

    if (pixP.available || (MbQ->LFDisableIdc== 0)) {
      incQ = dir ? ((fieldModeFilteringFlag && !MbQ->mb_field) ? 2 * width : width) : 1;
      incP = dir ? ((fieldModeFilteringFlag && !MbP->mb_field) ? 2 * width : width) : 1;
      SrcPtrQ = &(Img[pixQ.pos_y][pixQ.pos_x]);
      SrcPtrP = &(Img[pixP.pos_y][pixP.pos_x]);

      // Average QP of the two blocks
      QP  = yuv ? (QP_SCALE_CR[CQPOF(MbP->qp)] + QP_SCALE_CR[CQPOF(MbQ->qp)] + 1) >> 1 : (MbP->qp + MbQ->qp + 1) >> 1;

      indexA = IClip(0, MAX_QP, QP + AlphaC0Offset);
      indexB = IClip(0, MAX_QP, QP + BetaOffset);
    
      Alpha=ALPHA_TABLE[indexA];
      Beta=BETA_TABLE[indexB];  
      ClipTab=CLIP_TAB[indexA];

      L0  = SrcPtrP[0] ;
      R0  = SrcPtrQ[0] ;
      L1  = SrcPtrP[-incP] ;
      R1  = SrcPtrQ[ incQ] ;
      L2  = SrcPtrP[-incP*2] ;
      R2  = SrcPtrQ[ incQ*2] ;
      L3  = SrcPtrP[-incP*3] ;
      R3  = SrcPtrQ[ incQ*3] ;
      if( (Strng = Strength[StrengthIdx]) )
      {
        AbsDelta  = abs( Delta = R0 - L0 )  ;
      
        if( AbsDelta < Alpha )
        {
          C0  = ClipTab[ Strng ] ;
          if( ((abs( R0 - R1) - Beta )  & (abs(L0 - L1) - Beta )) < 0  ) 
          {
            if( !yuv)
            {
              aq  = (abs( R0 - R2) - Beta ) < 0  ;
              ap  = (abs( L0 - L2) - Beta ) < 0  ;
            }
          
            RL0             = L0 + R0 ;
          
            if(Strng == 4 )    // INTRA strong filtering
            {
              if( yuv)  // Chroma
              {
                SrcPtrQ[0] = ((R1 << 1) + R0 + L1 + 2) >> 2; 
                SrcPtrP[0] = ((L1 << 1) + L0 + R1 + 2) >> 2;                                           
              }
              else  // Luma
              {
                small_gap = (AbsDelta < ((Alpha >> 2) + 2));
              
                aq &= small_gap;
                ap &= small_gap;
              
                SrcPtrQ[0]   = aq ? ( L1 + ((R1 + RL0) << 1) +  R2 + 4) >> 3 : ((R1 << 1) + R0 + L1 + 2) >> 2 ;
                SrcPtrP[0]   = ap ? ( R1 + ((L1 + RL0) << 1) +  L2 + 4) >> 3 : ((L1 << 1) + L0 + R1 + 2) >> 2 ;
              
                SrcPtrQ[ incQ] =   aq  ? ( R2 + R0 + R1 + L0 + 2) >> 2 : R1;
                SrcPtrP[-incP] =   ap  ? ( L2 + L1 + L0 + R0 + 2) >> 2 : L1;
              
                SrcPtrQ[ incQ*2] = aq ? (((R3 + R2) <<1) + R2 + R1 + RL0 + 4) >> 3 : R2;
                SrcPtrP[-incP*2] = ap ? (((L3 + L2) <<1) + L2 + L1 + RL0 + 4) >> 3 : L2;
              }
            }
            else                                                                                   // normal filtering
            {
              c0               = yuv? (C0+1):(C0 + ap + aq) ;
              dif              = IClip( -c0, c0, ( (Delta << 2) + (L1 - R1) + 4) >> 3 ) ;
              SrcPtrP[0]  = IClip(0, 255, L0 + dif) ;
              SrcPtrQ[0]  = IClip(0, 255, R0 - dif) ;
            
              if( !yuv )
              {
                if( ap )
                  SrcPtrP[-incP] += IClip( -C0,  C0, ( L2 + ((RL0 + 1) >> 1) - (L1<<1)) >> 1 ) ;
                if( aq  )
                  SrcPtrQ[ incQ] += IClip( -C0,  C0, ( R2 + ((RL0 + 1) >> 1) - (R1<<1)) >> 1 ) ;
              } ;
            } ;
          } ; 
        } ;
      } ;
    } ;
  }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性生交大合| 欧美日韩第一区日日骚| 精品国产一区二区三区忘忧草| 亚洲欧美日本韩国| 91视视频在线直接观看在线看网页在线看| 精品国产乱子伦一区| 久久不见久久见免费视频1| 欧美一区中文字幕| 激情五月播播久久久精品| 欧美一级高清大全免费观看| 日韩中文字幕一区二区三区| 欧美一区二区网站| 精品一区二区三区在线视频| 欧美久久一区二区| 毛片基地黄久久久久久天堂| 久久你懂得1024| 成人免费电影视频| 一区二区三区**美女毛片| 欧美日韩视频一区二区| 国产激情偷乱视频一区二区三区| 久久精品在线免费观看| 不卡大黄网站免费看| 一区二区三区**美女毛片| 欧美一级二级三级蜜桃| 波多野结衣一区二区三区| 亚洲一二三四区| 国产三级一区二区| 91精品国产黑色紧身裤美女| 国产成a人亚洲| 青青草原综合久久大伊人精品 | 91网页版在线| 日本在线播放一区二区三区| 国产免费久久精品| 91精品国产品国语在线不卡| 97se亚洲国产综合在线| 韩国av一区二区三区在线观看| 亚洲精品少妇30p| 国产精品久久看| 精品第一国产综合精品aⅴ| 欧美亚洲一区二区在线| eeuss鲁一区二区三区| 麻豆精品视频在线观看免费| 亚洲人成在线播放网站岛国| 中文欧美字幕免费| 精品国产乱码久久久久久久久 | 欧美体内she精视频| 风间由美中文字幕在线看视频国产欧美| 一区二区三区波多野结衣在线观看 | 久久久久久久久久看片| 欧美成人猛片aaaaaaa| 欧美日韩电影在线播放| 欧美性大战久久久久久久| 色老汉一区二区三区| a级高清视频欧美日韩| 东方欧美亚洲色图在线| 青草国产精品久久久久久| 一区二区免费在线| 日韩欧美一级特黄在线播放| 精品三级在线观看| 久久久蜜臀国产一区二区| 精品福利av导航| 精品不卡在线视频| 久久精品一级爱片| 中文字幕的久久| 亚洲男人电影天堂| 亚洲国产一区视频| 亚洲精品国产a| 日韩电影在线免费| 韩国视频一区二区| 懂色av中文一区二区三区 | 视频一区免费在线观看| 日韩精品色哟哟| 国产精品一区二区果冻传媒| 国产麻豆精品95视频| 9人人澡人人爽人人精品| 欧美视频自拍偷拍| 欧美电影免费观看高清完整版在| 欧美一区二区三区的| 国产精品短视频| 日本在线不卡视频一二三区| 高清国产午夜精品久久久久久| 7878成人国产在线观看| 欧美大片拔萝卜| 国产精品免费久久久久| 亚洲成人激情社区| 国产suv精品一区二区6| 欧美久久一二三四区| 26uuu国产一区二区三区| 成人欧美一区二区三区1314| 日韩高清不卡一区二区三区| 麻豆精品视频在线观看免费| 在线免费观看日韩欧美| 久久美女高清视频| 视频一区欧美精品| 91麻豆免费在线观看| 国产精品久久久久久福利一牛影视 | av电影在线观看完整版一区二区 | 五月天亚洲精品| 欧美zozozo| 亚洲综合男人的天堂| 成人教育av在线| 国产精品乱码妇女bbbb| 中文字幕日韩精品一区| 国产99久久久精品| 国产亚洲精品久| 成人免费视频视频| 欧美激情一区二区三区蜜桃视频| 丝袜诱惑亚洲看片| 欧美男人的天堂一二区| 亚洲永久精品国产| 欧美三级电影网站| 亚洲成va人在线观看| 欧美日韩一级片在线观看| 亚洲国产毛片aaaaa无费看| 成人午夜短视频| 一区二区三区资源| 在线播放国产精品二区一二区四区| 亚洲天堂成人网| 在线观看国产日韩| 久久9热精品视频| 久久人人97超碰com| 国产精品1024| 国产精品久久久久四虎| 欧美日韩精品一区二区三区蜜桃 | 亚洲欧美一区二区视频| 一本色道亚洲精品aⅴ| 蜜桃视频一区二区三区| 国产欧美综合在线观看第十页| 一本一道波多野结衣一区二区| 亚洲国产精品自拍| 国产精品成人在线观看| 欧美日韩国产乱码电影| 国产在线观看免费一区| 亚洲综合图片区| 国产精品久久网站| 日韩三级精品电影久久久| 蜜桃一区二区三区在线观看| 亚洲一区二区三区自拍| 久久精品一区蜜桃臀影院| 欧美私模裸体表演在线观看| 国产成人一级电影| 高清不卡一二三区| 国产99久久久久久免费看农村| 奇米四色…亚洲| 日本一区中文字幕| 一区2区3区在线看| 国产精品毛片久久久久久久| 欧美精品免费视频| 欧美人妇做爰xxxⅹ性高电影| 99久久99久久免费精品蜜臀| 看电影不卡的网站| 奇米一区二区三区av| 香蕉av福利精品导航| 亚洲成人777| 午夜久久久影院| 五月婷婷激情综合网| 中文字幕亚洲在| 亚洲影视资源网| 亚洲一区二区免费视频| 一区二区三区**美女毛片| 亚洲在线一区二区三区| 香蕉乱码成人久久天堂爱免费| 一区二区三区在线播| 一区二区三区在线播放| 一区二区三区在线观看欧美 | 欧美激情在线免费观看| 国产精品视频一区二区三区不卡| 亚洲成人午夜影院| 亚洲高清中文字幕| 国产精品一二一区| 99久久99久久免费精品蜜臀| 欧美在线色视频| 91精品国产一区二区三区香蕉| 日韩一区二区免费高清| 欧美精选午夜久久久乱码6080| 91丨porny丨在线| 日韩一区二区免费在线电影| 国产欧美一区二区在线| 国产精品电影一区二区| 日韩电影网1区2区| 在线一区二区三区四区五区 | 久久精品国产亚洲高清剧情介绍| 国产麻豆视频精品| 欧美日韩在线精品一区二区三区激情| 欧美日韩三级视频| 老司机免费视频一区二区三区| 99精品国产一区二区三区不卡| 91麻豆精品国产91久久久久| 国产偷v国产偷v亚洲高清| 视频一区欧美精品| 国产精品66部| 久久理论电影网| 免费成人小视频| 欧美日韩一二三区| 亚洲视频一二三区| 99麻豆久久久国产精品免费优播| 91麻豆国产在线观看| 久久综合色婷婷| 韩国精品免费视频| 日韩精品一区二区三区四区|