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

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

?? image.c

?? H264解碼器,本解碼器實現了圖像的264解碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
        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_type);
  

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产第一区二区三区| 日韩欧美国产综合一区| 国产日韩亚洲欧美综合| 精品午夜久久福利影院| 久久人人97超碰com| 久久国产精品色| 国产欧美va欧美不卡在线| 成人高清视频在线观看| 中文字幕五月欧美| 一本久久a久久免费精品不卡| 一区二区三区四区精品在线视频| 欧美色视频一区| 蜜臀av一区二区| 国产人成一区二区三区影院| 99re66热这里只有精品3直播 | 蜜桃视频在线观看一区| 日韩视频一区在线观看| 韩国成人精品a∨在线观看| 国产精品美女久久久久aⅴ| 成人黄色免费短视频| 亚洲一区二区三区中文字幕在线| 欧美一区二区播放| 懂色av一区二区三区免费观看| 中文一区二区完整视频在线观看| 91视视频在线观看入口直接观看www | 国产成人免费av在线| 亚洲欧美另类在线| 日韩一区二区麻豆国产| www.亚洲精品| 日韩经典中文字幕一区| 国产三级精品视频| 在线不卡的av| 波多野结衣中文字幕一区 | 国产精品久久久久久久久久免费看| 91免费观看在线| 美女精品自拍一二三四| **欧美大码日韩| 日韩欧美一区中文| 91免费观看视频| 激情欧美一区二区三区在线观看| 亚洲人吸女人奶水| 欧美xingq一区二区| 欧美中文字幕一二三区视频| 韩国欧美国产一区| 午夜伦理一区二区| 亚洲乱码一区二区三区在线观看| 精品国产一区久久| 欧美日韩久久久| 9i在线看片成人免费| 精品无码三级在线观看视频| 偷窥少妇高潮呻吟av久久免费| 国产精品理伦片| 精品日韩一区二区三区| 欧美日韩夫妻久久| 欧洲精品视频在线观看| 成人免费观看视频| 国产精品99久久久| 精品一区二区在线免费观看| 亚洲成av人综合在线观看| 亚洲婷婷综合色高清在线| 久久久久久免费| 日韩精品在线一区二区| 欧美人体做爰大胆视频| 色婷婷久久久亚洲一区二区三区| 成人av电影在线| 高清久久久久久| 丁香婷婷综合色啪| 国产在线精品视频| 精品一区二区在线看| 日韩激情视频在线观看| 亚洲国产精品欧美一二99| 亚洲色图在线看| 亚洲精品成人天堂一二三| 国产精品久久久久久一区二区三区| 久久精品欧美一区二区三区不卡| 精品对白一区国产伦| 欧美大胆人体bbbb| www国产亚洲精品久久麻豆| 日韩精品一区二区三区四区视频 | zzijzzij亚洲日本少妇熟睡| 国产福利一区二区三区视频| 国产精品456| 成人av片在线观看| 99精品视频一区二区| 99久久综合国产精品| 波多野结衣在线aⅴ中文字幕不卡| 福利电影一区二区三区| 91色九色蝌蚪| 欧美日韩一区视频| 欧美一区中文字幕| 日韩欧美一区二区免费| 亚洲福利一区二区| 日韩精品电影在线| 精品写真视频在线观看| 成人午夜大片免费观看| 丁香五精品蜜臀久久久久99网站| 成人美女在线观看| 91浏览器打开| 欧美色图第一页| 欧美大片在线观看一区| 久久精品亚洲乱码伦伦中文| 欧美国产日本韩| 亚洲已满18点击进入久久| 奇米精品一区二区三区四区| 国产一二三精品| 91在线视频网址| 欧美顶级少妇做爰| 久久日一线二线三线suv| 国产精品超碰97尤物18| 午夜影视日本亚洲欧洲精品| 美女脱光内衣内裤视频久久网站| 国产成人在线网站| 欧美在线视频日韩| 精品欧美乱码久久久久久1区2区| 久久久精品免费网站| 一区二区国产盗摄色噜噜| 久久se这里有精品| 97久久精品人人爽人人爽蜜臀| 欧美精品在线一区二区| 中文幕一区二区三区久久蜜桃| 亚洲成人三级小说| 粉嫩欧美一区二区三区高清影视| 91黄色激情网站| 久久久99久久| 亚洲18女电影在线观看| 国产福利不卡视频| 欧美系列一区二区| 中文字幕精品一区二区精品绿巨人| 亚洲图片一区二区| 成人晚上爱看视频| 56国语精品自产拍在线观看| 国产精品你懂的在线欣赏| 麻豆91免费观看| 欧洲人成人精品| 国产精品久久久久9999吃药| 麻豆专区一区二区三区四区五区| 99精品视频在线观看| 精品国产乱码久久久久久闺蜜| 亚洲男女一区二区三区| 国产精品一级二级三级| 欧美日韩亚洲综合一区二区三区 | 欧美精品在欧美一区二区少妇| 国产精品女同一区二区三区| 精品一区二区日韩| 欧美精品乱码久久久久久按摩 | 久久久久久久久久美女| 午夜精品久久久久久久99樱桃| 97国产一区二区| 国产精品素人一区二区| 久久91精品国产91久久小草| 欧美日韩一区二区三区不卡| 亚洲青青青在线视频| bt7086福利一区国产| 久久久噜噜噜久久中文字幕色伊伊| 爽爽淫人综合网网站| 欧美亚洲高清一区二区三区不卡| 国产精品美女久久福利网站| 国产传媒一区在线| 日韩欧美久久久| 喷白浆一区二区| 欧美一级午夜免费电影| 丝袜亚洲另类欧美综合| 欧美日韩在线一区二区| 亚洲一级二级三级在线免费观看| 一本色道久久综合亚洲aⅴ蜜桃| 国产精品无圣光一区二区| 成人国产精品免费网站| 国产精品入口麻豆九色| 成人听书哪个软件好| 国产精品久久久久久久久久免费看 | 日一区二区三区| 欧美精品xxxxbbbb| 亚洲va欧美va人人爽| 欧美精品三级在线观看| 偷窥少妇高潮呻吟av久久免费 | 精品久久久久久久久久久久包黑料| 日本欧美一区二区三区乱码| 69精品人人人人| 蜜桃视频一区二区三区在线观看| 精品国产不卡一区二区三区| 国产一区二区主播在线| 国产婷婷色一区二区三区在线| 蜜臀av一区二区在线观看| 亚洲电影在线免费观看| 日韩欧美激情在线| 欧洲另类一二三四区| eeuss鲁片一区二区三区| 久久精品国产色蜜蜜麻豆| 一区二区三区中文字幕| 欧美激情艳妇裸体舞| 精品国产乱码久久久久久牛牛| 欧美三级中文字| 色综合久久中文综合久久97| 久久99这里只有精品| 日韩欧美成人午夜| 国产成人亚洲综合a∨猫咪| 亚洲欧美日韩国产另类专区| 欧美精品在线一区二区| 国产精品正在播放| 亚洲精品videosex极品|