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

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

?? image.c

?? h264標(biāo)準(zhǔn)的VC實(shí)現(xiàn)
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
      ii                  = 4*mbx + (i%2)*2;// + BLOCK_SIZE;
      jj                  = 4*mby + (i/2)*2;
      pRegion             = currRegion + i;
      pRegion->regionMode = (currMB->mb_type  ==I16MB  ? REGMODE_INTRA      :
                             currMB->b8mode[i]==IBLOCK ? REGMODE_INTRA_8x8  : REGMODE_INTER_PRED_8x8);
      if (currMB->mb_type==I16MB || currMB->b8mode[i]==IBLOCK)  // INTRA
      {
        pRegion->mv[0]    = 0;
        pRegion->mv[1]    = 0;
        pRegion->mv[2]    = 0;
      }
      else
      {
        int idx = (dec_picture->ref_idx[0][ii][jj]<0)?1:0;
//        int idx = (currMB->b8mode[i]==0 && currMB->b8pdir[i]==2 ? LIST_0 : currMB->b8pdir[i]==1 ? LIST_1 : LIST_0);
//        int idx = currMB->b8pdir[i]==0 ? LIST_0 : LIST_1;
        mv                = dec_picture->mv[idx];
        pRegion->mv[0]    = (mv[ii][jj][0] + mv[ii+1][jj][0] + mv[ii][jj+1][0] + mv[ii+1][jj+1][0] + 2)/4;
        pRegion->mv[1]    = (mv[ii][jj][1] + mv[ii+1][jj][1] + mv[ii][jj+1][1] + mv[ii+1][jj+1][1] + 2)/4;
        erc_mvperMB      += mabs(pRegion->mv[0]) + mabs(pRegion->mv[1]);

        pRegion->mv[2]  = (dec_picture->ref_idx[idx][ii][jj]);
/*        
        if (currMB->b8pdir[i]==0 || (currMB->b8pdir[i]==2 && currMB->b8mode[i]!=0)) // forward or bidirect
        {
          pRegion->mv[2]  = (dec_picture->ref_idx[LIST_0][ii][jj]);
          ///???? is it right, not only "img->fw_refFrArr[jj][ii-4]"
        }
        else
        {
          pRegion->mv[2]  = (dec_picture->ref_idx[LIST_1][ii][jj]);
//          pRegion->mv[2]  = 0;
        }
        */
      }
    }
  }
}

/*!
 ************************************************************************
 * \brief
 *    set defaults for old_slice
 *    NAL unit of a picture"
 ************************************************************************
 */
void init_old_slice()
{
  old_slice.field_pic_flag = 0;

  old_slice.pps_id = INT_MAX;

  old_slice.frame_num = INT_MAX;

  old_slice.nal_ref_idc = INT_MAX;
  
  old_slice.idr_flag = 0;

  old_slice.pic_oder_cnt_lsb          = UINT_MAX;
  old_slice.delta_pic_oder_cnt_bottom = INT_MAX;

  old_slice.delta_pic_order_cnt[0] = INT_MAX;
  old_slice.delta_pic_order_cnt[1] = INT_MAX;

}

/*!
 ************************************************************************
 * \brief
 *    save slice parameters that are needed for checking of "first VCL
 *    NAL unit of a picture"
 ************************************************************************
 */
void exit_slice()
{

  old_slice.pps_id = img->currentSlice->pic_parameter_set_id;

  old_slice.frame_num = img->frame_num;

  old_slice.field_pic_flag = img->field_pic_flag;

  if(img->field_pic_flag)
  {
    old_slice.bottom_field_flag = img->bottom_field_flag;
  }

  old_slice.nal_ref_idc   = img->nal_reference_idc;
  
  old_slice.idr_flag = img->idr_flag;
  if (img->idr_flag)
  {
    old_slice.idr_pic_id = img->idr_pic_id;
  }

  if (active_sps->pic_order_cnt_type == 0)
  {
    old_slice.pic_oder_cnt_lsb          = img->pic_order_cnt_lsb;
    old_slice.delta_pic_oder_cnt_bottom = img->delta_pic_order_cnt_bottom;
  }

  if (active_sps->pic_order_cnt_type == 1)
  {
    old_slice.delta_pic_order_cnt[0] = img->delta_pic_order_cnt[0];
    old_slice.delta_pic_order_cnt[1] = img->delta_pic_order_cnt[1];
  }
}

/*!
 ************************************************************************
 * \brief
 *    detect if current slice is "first VCL NAL unit of a picture"
 ************************************************************************
 */
int is_new_picture()
{
  int result=0;

  result |= (old_slice.pps_id != img->currentSlice->pic_parameter_set_id);

  result |= (old_slice.frame_num != img->frame_num);

  result |= (old_slice.field_pic_flag != img->field_pic_flag);

  if(img->field_pic_flag && old_slice.field_pic_flag)
  {
    result |= (old_slice.bottom_field_flag != img->bottom_field_flag);
  }

  result |= (old_slice.nal_ref_idc   != img->nal_reference_idc);
  
  result |= ( old_slice.idr_flag != img->idr_flag);

  if (img->idr_flag && old_slice.idr_flag)
  {
    result |= (old_slice.idr_pic_id != img->idr_pic_id);
  }

  if (active_sps->pic_order_cnt_type == 0)
  {
    result |=  (old_slice.pic_oder_cnt_lsb          != img->pic_order_cnt_lsb);
    result |=  (old_slice.delta_pic_oder_cnt_bottom != img->delta_pic_order_cnt_bottom);
  }

  if (active_sps->pic_order_cnt_type == 1)
  {
    result |= (old_slice.delta_pic_order_cnt[0] != img->delta_pic_order_cnt[0]);
    result |= (old_slice.delta_pic_order_cnt[1] != img->delta_pic_order_cnt[1]);
  }

  return result;
}


/*!
 ************************************************************************
 * \brief
 *    decodes one slice
 ************************************************************************
 */
void decode_one_slice(struct img_par *img,struct inp_par *inp)
{

  Boolean end_of_slice = FALSE;
  int read_flag;
  img->cod_counter=-1;

  set_ref_pic_num();

  if (img->type == B_SLICE)
      compute_collocated(Co_located, listX);

  //reset_ec_flags();

  while (end_of_slice == FALSE) // loop over macroblocks
  {

#if TRACE
  fprintf(p_trace,"\n*********** POC: %i (I/P) MB: %i Slice: %i Type %d **********\n", img->ThisPOC, img->current_mb_nr, img->current_slice_nr, img->type);
#endif

	// Initializes the current macroblock
    start_macroblock(img,inp, img->current_mb_nr);
    // Get the syntax elements from the NAL
    read_flag = read_one_macroblock(img,inp);
    decode_one_macroblock(img,inp);

    if(img->MbaffFrameFlag && dec_picture->mb_field[img->current_mb_nr])
    {
      img->num_ref_idx_l0_active >>= 1;
      img->num_ref_idx_l1_active >>= 1;
    }

    ercWriteMBMODEandMV(img,inp);

    end_of_slice=exit_macroblock(img,inp,(!img->MbaffFrameFlag||img->current_mb_nr%2));
  }

  exit_slice();
  //reset_ec_flags();

}


void decode_slice(struct img_par *img,struct inp_par *inp, int current_header)
{
  Slice *currSlice = img->currentSlice;

  if (active_pps->entropy_coding_mode_flag)
  {
    init_contexts (img);
    cabac_new_slice();
  }

  if ( (active_pps->weighted_bipred_idc > 0  && (img->type == B_SLICE)) || (active_pps->weighted_pred_flag && img->type !=I_SLICE))
    fill_wp_params(img);

  //printf("frame picture %d %d %d\n",img->structure,img->ThisPOC,img->direct_spatial_mv_pred_flag);
  

  // decode main slice information
  if ((current_header == SOP || current_header == SOS) && currSlice->ei_flag == 0)
    decode_one_slice(img,inp);
    
  // setMB-Nr in case this slice was lost
//  if(currSlice->ei_flag)  
//    img->current_mb_nr = currSlice->last_mb_nr + 1;

}


/*!
 ************************************************************************
 * \brief
 *    Prepare field and frame buffer after frame decoding
 ************************************************************************
 */
void frame_postprocessing(struct img_par *img, struct inp_par *inp)
{
}

/*!
 ************************************************************************
 * \brief
 *    Prepare field and frame buffer after field decoding
 ************************************************************************
 */
void field_postprocessing(struct img_par *img, struct inp_par *inp)
{
  img->number /= 2;
}



void reset_wp_params(struct img_par *img)
{
  int i,comp;
  int log_weight_denom;

  for (i=0; i<MAX_REFERENCE_PICTURES; i++)
  {
    for (comp=0; comp<3; comp++)
    {
      log_weight_denom = (comp == 0) ? img->luma_log2_weight_denom : img->chroma_log2_weight_denom;
      img->wp_weight[0][i][comp] = 1<<log_weight_denom;
      img->wp_weight[1][i][comp] = 1<<log_weight_denom;
    }
  }
}


void fill_wp_params(struct img_par *img)
{
  int i, j, k;
  int comp;
  int log_weight_denom;
  int p0, pt;
  int bframe = (img->type==B_SLICE);
  int max_bwd_ref, max_fwd_ref;
  int x,z;

  max_fwd_ref = img->num_ref_idx_l0_active;
  max_bwd_ref = img->num_ref_idx_l1_active;

  if (active_pps->weighted_bipred_idc == 2 && bframe)
  {
    img->luma_log2_weight_denom = 5;
    img->chroma_log2_weight_denom = 5;
    img->wp_round_luma = 16;
    img->wp_round_chroma = 16;

    for (i=0; i<MAX_REFERENCE_PICTURES; i++)
    {
      for (comp=0; comp<3; comp++)
      {
        log_weight_denom = (comp == 0) ? img->luma_log2_weight_denom : img->chroma_log2_weight_denom;
        img->wp_weight[0][i][comp] = 1<<log_weight_denom;
        img->wp_weight[1][i][comp] = 1<<log_weight_denom;
        img->wp_offset[0][i][comp] = 0;
        img->wp_offset[1][i][comp] = 0;
      }
    }
  }

  if (bframe)
  {
    for (i=0; i<max_fwd_ref; i++)
    {
      for (j=0; j<max_bwd_ref; j++)
      {
        for (comp = 0; comp<3; comp++)
        {
          log_weight_denom = (comp == 0) ? img->luma_log2_weight_denom : img->chroma_log2_weight_denom;
          if (active_pps->weighted_bipred_idc == 1)
          {
            img->wbp_weight[0][i][j][comp] =  img->wp_weight[0][i][comp];
            img->wbp_weight[1][i][j][comp] =  img->wp_weight[1][j][comp];
          }
          else if (active_pps->weighted_bipred_idc == 2)
          {
            pt = listX[LIST_1][j]->poc - listX[LIST_0][i]->poc;
            if (pt == 0 || listX[LIST_1][j]->is_long_term || listX[LIST_0][i]->is_long_term)
            {
              img->wbp_weight[0][i][j][comp] =   32;
              img->wbp_weight[1][i][j][comp] =   32;
            }
            else
            {
              p0 = img->ThisPOC - listX[LIST_0][i]->poc;

              x = (16384 + (pt>>1))/pt;
              z = Clip3(-1024, 1023, (x*p0 + 32 )>>6);
              
              img->wbp_weight[1][i][j][comp] = z >> 2;
              img->wbp_weight[0][i][j][comp] = 64 - img->wbp_weight[1][i][j][comp];
              if (img->wbp_weight[1][i][j][comp] < -64 || img->wbp_weight[1][i][j][comp] > 128)
              {
                img->wbp_weight[0][i][j][comp] = 32;
                img->wbp_weight[1][i][j][comp] = 32;
                img->wp_offset[0][i][comp] = 0;
                img->wp_offset[1][i][comp] = 0;
              }
            }
          }
        }
     }
   }
 }

  if (bframe && img->MbaffFrameFlag)
  {
    for (i=0; i<2*max_fwd_ref; i++)
    {
      for (j=0; j<2*max_bwd_ref; j++)
      {
        for (comp = 0; comp<3; comp++)
        {
          for (k=2; k<6; k+=2)
          {
            img->wp_offset[k+0][i][comp] = img->wp_offset[0][i/2][comp];
            img->wp_offset[k+1][i][comp] = img->wp_offset[1][i/2][comp];

            log_weight_denom = (comp == 0) ? img->luma_log2_weight_denom : img->chroma_log2_weight_denom;
            if (active_pps->weighted_bipred_idc == 1)
            {
              img->wbp_weight[k+0][i][j][comp] =  img->wp_weight[0][i/2][comp];
              img->wbp_weight[k+1][i][j][comp] =  img->wp_weight[1][j/2][comp];
            }
            else if (active_pps->weighted_bipred_idc == 2)
            {
              pt = listX[k+LIST_1][j]->poc - listX[k+LIST_0][i]->poc;
              if (pt == 0 || listX[k+LIST_1][j]->is_long_term || listX[k+LIST_0][i]->is_long_term)
              {
                img->wbp_weight[k+0][i][j][comp] =   32;
                img->wbp_weight[k+1][i][j][comp] =   32;
              }
              else
              {
                p0 = ((k==2)?img->toppoc:img->bottompoc) - listX[k+LIST_0][i]->poc;
                
                x = (16384 + (pt>>1))/pt;
                z = Clip3(-1024, 1023, (x*p0 + 32 )>>6);

                img->wbp_weight[k+1][i][j][comp] = z >> 2;
                img->wbp_weight[k+0][i][j][comp] = 64 - img->wbp_weight[k+1][i][j][comp];
                if (img->wbp_weight[k+1][i][j][comp] < -64 || img->wbp_weight[k+1][i][j][comp] > 128)
                {
                  img->wbp_weight[k+1][i][j][comp] = 32;
                  img->wbp_weight[k+0][i][j][comp] = 32;
                  img->wp_offset[k+0][i][comp] = 0;
                  img->wp_offset[k+1][i][comp] = 0;
                }
              }
            }
          }
        }
      }
    }
  }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人激情免费网站| 91精品一区二区三区久久久久久| 国产99久久久国产精品| 91福利在线播放| 久久一二三国产| 国产亚洲美州欧州综合国| 亚洲欧洲www| 黑人巨大精品欧美一区| 欧美日韩在线精品一区二区三区激情| 久久久777精品电影网影网 | 六月婷婷色综合| 成人午夜激情视频| 337p日本欧洲亚洲大胆色噜噜| 亚洲精选视频在线| aaa欧美日韩| 久久久久久电影| 久久超级碰视频| 亚洲成人1区2区| 白白色 亚洲乱淫| 久久久久99精品一区| 久久精品国产77777蜜臀| 欧美日本国产视频| 亚洲激情自拍偷拍| 成人国产精品免费观看| 国产日韩亚洲欧美综合| 国产呦精品一区二区三区网站| 91精品久久久久久久99蜜桃| 亚洲国产日韩综合久久精品| 国产成人免费视频一区| 久久这里只精品最新地址| 日韩专区中文字幕一区二区| 欧美精品在欧美一区二区少妇| 亚洲欧美激情视频在线观看一区二区三区| 国产成人在线色| 精品成人免费观看| 久久se这里有精品| 91精品国产美女浴室洗澡无遮挡| 午夜成人免费视频| 欧美一二三在线| 蜜臀精品久久久久久蜜臀 | 欧美成人午夜电影| 老司机精品视频导航| 欧美mv和日韩mv国产网站| 久久精品99国产精品| 久久久影视传媒| 成人动漫精品一区二区| 亚洲欧美激情一区二区| 欧美吻胸吃奶大尺度电影| 亚洲国产精品久久不卡毛片| 欧美亚男人的天堂| 美女性感视频久久| 国产女同性恋一区二区| 色94色欧美sute亚洲13| 婷婷激情综合网| 欧美xxxxxxxx| 国产成人av一区二区三区在线 | 亚洲另类春色校园小说| 337p亚洲精品色噜噜| 精品一区二区久久久| 国产精品久久久久久久裸模| 色欲综合视频天天天| 日韩电影在线观看电影| 久久久久久毛片| 色婷婷激情综合| 久久久久久久综合狠狠综合| 亚洲精品视频在线| 欧美剧情片在线观看| 激情欧美一区二区三区在线观看| 日本一区二区电影| 欧美日韩中文一区| 国产成人综合亚洲91猫咪| 亚洲欧美日韩在线播放| 欧美一区二区三区电影| www..com久久爱| 日本v片在线高清不卡在线观看| 国产欧美1区2区3区| 欧美日韩黄色影视| 丰满放荡岳乱妇91ww| 亚洲综合成人网| 久久视频一区二区| 欧美无砖专区一中文字| 成人国产亚洲欧美成人综合网| 天堂在线亚洲视频| 综合色中文字幕| 久久久九九九九| 69堂成人精品免费视频| 色av成人天堂桃色av| 成人午夜在线视频| 免费欧美在线视频| 亚洲精品成人在线| 久久精品人人做人人爽97| 欧美精品v国产精品v日韩精品| 99re热视频这里只精品| 国产精品18久久久久久久久 | 欧美丝袜丝交足nylons| 成人午夜大片免费观看| 蜜臀av性久久久久av蜜臀妖精| 日韩av电影天堂| 自拍偷拍亚洲激情| 中文字幕欧美国产| 精品国精品自拍自在线| 8v天堂国产在线一区二区| 91日韩精品一区| 国产不卡免费视频| 国产福利一区二区三区在线视频| 免费人成精品欧美精品| 日韩国产精品91| 天天综合天天综合色| 亚洲综合色网站| 亚洲人成网站在线| 亚洲欧美区自拍先锋| 国产精品国产三级国产aⅴ入口 | 国产乱理伦片在线观看夜一区| 青青草国产精品97视觉盛宴| 性感美女久久精品| 午夜精品久久久久久不卡8050| 亚洲一区二区成人在线观看| 亚洲自拍偷拍九九九| 一区二区三区四区亚洲| 亚洲一区中文日韩| 亚洲成精国产精品女| 视频一区二区三区中文字幕| 日韩中文字幕一区二区三区| 日韩高清中文字幕一区| 久久国产欧美日韩精品| 国产成人综合亚洲网站| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产剧情一区在线| 日韩av在线播放中文字幕| 午夜精品久久久久| 日韩高清在线不卡| 日本中文在线一区| 精品综合久久久久久8888| 久久精品国产亚洲一区二区三区| 蜜桃传媒麻豆第一区在线观看| 九色porny丨国产精品| 国产精品中文字幕一区二区三区| 国产成人av一区二区三区在线观看| 国产成人免费视频| 91黄色激情网站| 91精品国产综合久久久久久| 精品999久久久| 中文字幕视频一区二区三区久| 亚洲视频狠狠干| 亚洲一区二区三区视频在线播放| 午夜欧美视频在线观看| 久久成人精品无人区| 成人午夜在线视频| 欧美性一级生活| 日韩欧美激情四射| www久久久久| 成人欧美一区二区三区黑人麻豆 | 欧美理论在线播放| 久久欧美一区二区| 一区二区久久久久久| 激情都市一区二区| 91无套直看片红桃| 日韩精品一区二区三区蜜臀 | 精品免费一区二区三区| 亚洲欧美日韩国产综合| 久久99精品网久久| 在线观看日韩高清av| 久久你懂得1024| 婷婷久久综合九色综合伊人色| 岛国精品一区二区| 欧美成人免费网站| 日韩一区欧美一区| 久久丁香综合五月国产三级网站| 99久久精品费精品国产一区二区| 日韩欧美亚洲一区二区| 亚洲精品成人在线| 国产91精品精华液一区二区三区| 欧美剧情电影在线观看完整版免费励志电影 | av电影在线不卡| 欧美麻豆精品久久久久久| 国产亚洲精品bt天堂精选| 亚洲综合免费观看高清完整版在线| 国产一区二区视频在线播放| 欧美日韩一级黄| 国产精品福利一区| 国内精品伊人久久久久av影院| 欧美视频一区在线| 亚洲视频综合在线| 国产东北露脸精品视频| 欧美tickle裸体挠脚心vk| 亚洲成人tv网| 国产成人亚洲综合a∨猫咪 | 中文字幕av不卡| 美腿丝袜亚洲三区| 欧美日韩激情一区二区| 亚洲黄色小视频| 97精品电影院| 中文字幕一区二区视频| 成人精品高清在线| 国产精品国产成人国产三级| 国产精品夜夜爽| 国产偷国产偷精品高清尤物| 国产一区二区三区国产| 精品99999| 国产精品18久久久久久久久久久久|