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

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

?? slice.c

?? h264標(biāo)準(zhǔn)的VC實現(xiàn)
?? C
?? 第 1 頁 / 共 3 頁
字號:
  Slice *slice;
  const int buffer_size = (img->width * img->height * 4); // AH 190202: There can be data expansion with 
                                                          // low QP values. So, we make sure that buffer 
                                                          // does not overflow. 4 is probably safe multiplier.

  if ((slice = (Slice *) calloc(1, sizeof(Slice))) == NULL) no_mem_exit ("malloc_slice: slice structure");

  if (input->symbol_mode == CABAC)
    {
      // create all context models
      slice->mot_ctx = create_contexts_MotionInfo();
      slice->tex_ctx = create_contexts_TextureInfo();
    }

  slice->max_part_nr = input->partition_mode==0?1:3;

  //for IDR img there should be only one partition
  if(img->currentPicture->idr_flag)
    slice->max_part_nr = 1;
  
  assignSE2partition[0] = assignSE2partition_NoDP;
  //ZL 
  //for IDR img all the syntax element should be mapped to one partition        
  if(!img->currentPicture->idr_flag&&input->partition_mode==1)
    assignSE2partition[1] =  assignSE2partition_DP;
  else
    assignSE2partition[1] =  assignSE2partition_NoDP;        



  slice->num_mb = 0;          // no coded MBs so far

  if ((slice->partArr = (DataPartition *) calloc(slice->max_part_nr, sizeof(DataPartition))) == NULL) no_mem_exit ("malloc_slice: partArr");
  for (i=0; i<slice->max_part_nr; i++) // loop over all data partitions
  {
    dataPart = &(slice->partArr[i]);
    if ((dataPart->bitstream = (Bitstream *) calloc(1, sizeof(Bitstream))) == NULL) no_mem_exit ("malloc_slice: Bitstream");
    if ((dataPart->bitstream->streamBuffer = (byte *) calloc(buffer_size, sizeof(byte))) == NULL) no_mem_exit ("malloc_slice: StreamBuffer");
    // Initialize storage of bitstream parameters
  }
  return slice;
}


/*!
 ************************************************************************
 * \brief
 *    Memory frees of all Slice structures and of its dependent
 *    data structures
 * \par Input:
 *    Image Parameters struct struct img_par *img
 ************************************************************************
 */
void free_slice_list(Picture *currPic)
{
  int i;

  for (i=0; i<currPic->no_slices; i++)
  {
    free_slice (currPic->slices[i]);
    currPic->slices[i]=NULL;
  }
}


/*!
 ************************************************************************
 * \brief
 *    Memory frees of the Slice structure and of its dependent
 *    data structures
 * \param slice:
 *    Slice to be freed
 ************************************************************************
 */
static void free_slice(Slice *slice)
{
  int i;
  DataPartition *dataPart;

  if (slice != NULL)
  {
    for (i=0; i<slice->max_part_nr; i++) // loop over all data partitions
    {
      dataPart = &(slice->partArr[i]);
      if (dataPart != NULL)
      {
        if (dataPart->bitstream->streamBuffer != NULL)
          free(dataPart->bitstream->streamBuffer);
        if (dataPart->bitstream != NULL)
          free(dataPart->bitstream);
      }
    }
    if (slice->partArr != NULL)
      free(slice->partArr);
    if (input->symbol_mode == CABAC)
    {
      delete_contexts_MotionInfo(slice->mot_ctx);
      delete_contexts_TextureInfo(slice->tex_ctx);
    }
    //free(img->currentSlice);
    free(slice);
  }
}


/*!
 ************************************************************************
 * \brief
 *    This function set the value of a bit in a bitstream to 1
 ************************************************************************
 */
void modify_redundant_pic_cnt(unsigned char *buffer)
{
  unsigned char tmp = 1 << (rpc_bits_to_go-1);
  buffer[rpc_bytes_to_go] |= tmp;
}

void set_ref_pic_num()
{
  int i,j;
  
  //! need to add field ref_pic_num that handles field pair.

  for (i=0;i<listXsize[LIST_0];i++)
  {
    enc_picture->ref_pic_num        [LIST_0][i]=listX[LIST_0][i]->poc * 2 + ((listX[LIST_0][i]->structure==BOTTOM_FIELD)?1:0) ; 
    enc_picture->frm_ref_pic_num    [LIST_0][i]=listX[LIST_0][i]->frame_poc * 2; 
    enc_picture->top_ref_pic_num    [LIST_0][i]=listX[LIST_0][i]->top_poc * 2; 
    enc_picture->bottom_ref_pic_num [LIST_0][i]=listX[LIST_0][i]->bottom_poc * 2 + 1; 
  }

  for (i=0;i<listXsize[LIST_1];i++)
  {
    enc_picture->ref_pic_num        [LIST_1][i]=listX[LIST_1][i]->poc  *2 + ((listX[LIST_1][i]->structure==BOTTOM_FIELD)?1:0);
    enc_picture->frm_ref_pic_num    [LIST_1][i]=listX[LIST_1][i]->frame_poc * 2; 
    enc_picture->top_ref_pic_num    [LIST_1][i]=listX[LIST_1][i]->top_poc * 2; 
    enc_picture->bottom_ref_pic_num [LIST_1][i]=listX[LIST_1][i]->bottom_poc * 2 + 1; 
  }

  if (img->structure==FRAME)
    for (j=2;j<6;j++)
      for (i=0;i<listXsize[j];i++)
      {    
        enc_picture->ref_pic_num[j][i] = listX[j][i]->poc * 2 + ((listX[j][i]->structure==BOTTOM_FIELD)?1:0);
        enc_picture->frm_ref_pic_num[j][i] = listX[j][i]->frame_poc * 2 ;
        enc_picture->top_ref_pic_num[j][i] = listX[j][i]->top_poc * 2 ;
        enc_picture->bottom_ref_pic_num[j][i] = listX[j][i]->bottom_poc * 2 + 1;
      }

}

/*!
************************************************************************
* \brief
*    decide reference picture reordering, Frame only
************************************************************************
*/
void poc_ref_pic_reorder(StorablePicture **list, unsigned num_ref_idx_lX_active, int *remapping_of_pic_nums_idc, int *abs_diff_pic_num_minus1, int *long_term_pic_idx, int weighted_prediction, int list_no)
{
  unsigned i,j,k;
  
  int currPicNum, picNumLXPred;

  int default_order[32];
  int re_order[32];
  int tmp_reorder[32];
  int list_sign[32];
  int reorder_stop, no_reorder;
  int poc_diff[32];
  int tmp_value, diff;  

  int abs_poc_dist;
  
  if (img->structure==FRAME)
  {
    currPicNum = img->frame_num;
  }
  else
  {
    currPicNum = 2 * img->frame_num + 1;
  }
  
  picNumLXPred = currPicNum;
  
  // First assign default list order. 
  for (i=0; i<num_ref_idx_lX_active; i++)
  {
    default_order[i] = list[i]->pic_num;
  }
  
  // Now access all references in buffer and assign them
  // to a pottential reordering list. For each one of these 
  // references compute the poc distance compared to current
  // frame.
  for (i=0; i<dpb.ref_frames_in_buffer; i++)
  {
    re_order[i] = dpb.fs_ref[i]->frame->pic_num;
  
    if (dpb.fs_ref[i]->is_used==3 && (dpb.fs_ref[i]->frame->used_for_reference)&&(!dpb.fs_ref[i]->frame->is_long_term))
    {
      abs_poc_dist = abs(dpb.fs_ref[i]->frame->poc - enc_picture->poc) ;
      poc_diff[i] = abs_poc_dist;
      if (list_no == LIST_0)
      {
        if ( enc_picture->poc < dpb.fs_ref[i]->frame->poc)
        {
          list_sign[i] = +1;
        }
        else
        {
          list_sign[i] = -1;
        }
      }
      else
      {
        if (enc_picture->poc > dpb.fs_ref[i]->frame->poc)
        {
          list_sign[i] = +1;
        }
        else
        {
          list_sign[i] = -1;
        }
      }
    }
  }
  
  
  // now sort these references based on poc (temporal) distance
  for (i=0; i< dpb.ref_frames_in_buffer-1; i++)
  {
    for (j=i+1; j< dpb.ref_frames_in_buffer; j++)
    {
      
      if (poc_diff[i]>poc_diff[j] || (poc_diff[i] == poc_diff[j] && list_sign[j] > list_sign[i]))
      {
        
        tmp_value = poc_diff[i];
        poc_diff[i] = poc_diff[j];
        poc_diff[j] = tmp_value;
        tmp_value  = re_order[i];
        re_order[i] = re_order[j];
        re_order[j] = tmp_value ;
        tmp_value  = list_sign[i];
        list_sign[i] = list_sign[j];        
        list_sign[j] = tmp_value ;
      }
    }
  }
  
  // Check versus default list to see if any
  // change has happened
  no_reorder = 1;
  for (i=0; i<num_ref_idx_lX_active; i++)
  {
    if (default_order[i] != re_order[i])
    {
      no_reorder = 0;
    }
  }
  
  // If different, then signal reordering
  if (no_reorder==0)
  {
    for (i=0; i<num_ref_idx_lX_active; i++)
    {
      diff = re_order[i]-picNumLXPred;
      if (diff <= 0)
      {
        remapping_of_pic_nums_idc[i] = 0;
        abs_diff_pic_num_minus1[i] = abs(diff)-1;
      }
      else
      {
        remapping_of_pic_nums_idc[i] = 1;
        abs_diff_pic_num_minus1[i] = abs(diff)-1;
      }
      picNumLXPred = re_order[i];
      
      tmp_reorder[i] = re_order[i];
      
      k = i;
      for (j=i; j<num_ref_idx_lX_active; j++)
      {
        if (default_order[j] != re_order[i])
        {
          ++k;
          tmp_reorder[k] = default_order[j];
        }
      }
      reorder_stop = 1;
      for(j=i+1; j<num_ref_idx_lX_active; j++)
      {
        if (tmp_reorder[j] != re_order[j])
        {
          reorder_stop = 0;
          break;
        }
      }
      
      if (reorder_stop==1)
      {
        ++i;
        break;
      }
      
      
      for(j=0; j<num_ref_idx_lX_active; j++)
      {
        default_order[j] = tmp_reorder[j];
      }
      
      
    }
    remapping_of_pic_nums_idc[i] = 3;
    
    for(j=0; j<num_ref_idx_lX_active; j++)
    {
      default_order[j] = tmp_reorder[j];
    }
    
    if (list_no==0)
    {
      img->currentSlice->ref_pic_list_reordering_flag_l0=1;
    }
    else
    {
      img->currentSlice->ref_pic_list_reordering_flag_l1=1;
    }
  }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久天天| 九九**精品视频免费播放| 成人福利电影精品一区二区在线观看 | 色狠狠色狠狠综合| 一区二区在线观看不卡| 日本二三区不卡| 天天影视色香欲综合网老头| 欧美特级限制片免费在线观看| 亚洲一级片在线观看| 欧美高清视频www夜色资源网| 日韩和欧美的一区| 精品国产91乱码一区二区三区| 国产毛片精品一区| 亚洲图片你懂的| 欧美人妇做爰xxxⅹ性高电影 | 丰满亚洲少妇av| 亚洲视频狠狠干| 欧美日本国产视频| 精品亚洲欧美一区| 亚洲私人黄色宅男| 日韩一区二区视频在线观看| 韩国一区二区三区| 一二三四区精品视频| 欧美一级xxx| 99热这里都是精品| 全部av―极品视觉盛宴亚洲| 久久久久久99久久久精品网站| 97久久超碰国产精品| 免费成人美女在线观看| 日本一区二区高清| 5566中文字幕一区二区电影 | 午夜精品影院在线观看| 精品黑人一区二区三区久久| av一二三不卡影片| 美女网站在线免费欧美精品| 亚洲视频中文字幕| 久久综合999| 欧美日韩久久久| 91在线高清观看| 国产一区二区三区在线看麻豆| 亚洲精品成人悠悠色影视| 精品久久一区二区| 欧美日韩三级在线| 99精品视频一区二区三区| 狠狠色丁香久久婷婷综合丁香| 亚洲另类色综合网站| 久久久久久久免费视频了| 欧美一级生活片| 91免费看视频| 高清不卡一区二区在线| 喷水一区二区三区| 亚洲韩国一区二区三区| 国产精品美女久久久久久| 日韩三级伦理片妻子的秘密按摩| 在线免费观看不卡av| 成人晚上爱看视频| 国产美女精品在线| 麻豆精品视频在线观看视频| 性欧美大战久久久久久久久| 自拍偷拍亚洲激情| 中文字幕国产精品一区二区| 久久久亚洲精品石原莉奈| 日韩精品一区二区三区视频| 51精品久久久久久久蜜臀| 欧美午夜在线观看| 日本久久一区二区| 91免费国产在线| jvid福利写真一区二区三区| 国产精品一区二区三区四区| 久久国产免费看| 麻豆精品在线观看| 麻豆91在线观看| 麻豆精品在线播放| 黄一区二区三区| 另类小说视频一区二区| 美女网站一区二区| 另类小说欧美激情| 国产综合久久久久影院| 亚洲人吸女人奶水| 亚洲精品水蜜桃| 一级特黄大欧美久久久| 亚洲制服丝袜在线| 亚洲v中文字幕| 视频一区欧美精品| 人人狠狠综合久久亚洲| 久久精品国产秦先生| 久久国产精品99久久久久久老狼| 麻豆一区二区99久久久久| 免费av网站大全久久| 久久精品国产99国产精品| 国内精品嫩模私拍在线| 国产成人综合亚洲91猫咪| 成人综合婷婷国产精品久久| 99国产精品视频免费观看| 在线精品视频小说1| 3atv一区二区三区| 久久精品夜色噜噜亚洲a∨| 国产网站一区二区| 亚洲视频一区二区在线| 亚洲福利电影网| 久久精品国产77777蜜臀| 国产高清在线观看免费不卡| 成人app网站| 欧美色男人天堂| 精品第一国产综合精品aⅴ| 日本一区二区高清| 亚洲成a人片综合在线| 久久国产尿小便嘘嘘| 成人av在线观| 欧美一区二区三区在| 中文一区在线播放| 天天操天天色综合| 国产成人激情av| 欧美午夜宅男影院| 久久精品人人做人人爽人人| 亚洲人午夜精品天堂一二香蕉| 日本不卡123| 91视频.com| 亚洲精品一区在线观看| 亚洲欧美激情一区二区| 狠狠色狠狠色合久久伊人| 99热国产精品| 亚洲精品一区二区三区香蕉| 亚洲欧美二区三区| 国产寡妇亲子伦一区二区| 欧美日本国产一区| 亚洲婷婷综合久久一本伊一区| 蜜臀久久99精品久久久久久9| 成人一区在线观看| 日韩欧美一区二区在线视频| 国产三级精品在线| 青青草一区二区三区| 一本大道久久a久久综合| 精品久久久网站| 亚洲成人动漫一区| 北条麻妃一区二区三区| 日韩精品一区二区三区中文不卡| 亚洲欧美另类图片小说| 国产很黄免费观看久久| 日韩欧美在线123| 五月天视频一区| 日本丶国产丶欧美色综合| 久久久一区二区三区捆绑**| 爽爽淫人综合网网站| 日本电影欧美片| 亚洲视频在线观看一区| 国产在线播放一区| 日韩欧美亚洲国产精品字幕久久久| 亚洲免费观看高清完整| 成人免费av资源| 国产欧美视频一区二区| 国产一区二区在线免费观看| 欧美一级精品大片| 青青草成人在线观看| 欧美日韩一级视频| 亚洲激情av在线| 91社区在线播放| 亚洲精品国产精华液| av在线这里只有精品| 国产视频911| 成人av资源在线| 国产精品免费视频一区| 国产99精品国产| 日本一区二区视频在线观看| 韩国成人福利片在线播放| 亚洲精品在线免费观看视频| 精品一区二区在线看| 欧美大片一区二区| 国产在线精品不卡| 久久久久久久久岛国免费| 粉嫩aⅴ一区二区三区四区| 中文字幕不卡在线观看| 91色婷婷久久久久合中文| 有码一区二区三区| 欧美日韩一卡二卡三卡| 视频一区二区中文字幕| 日韩一区和二区| 国产精品亚洲一区二区三区在线| 久久亚洲二区三区| 成人午夜在线免费| 亚洲欧洲av另类| 在线亚洲一区二区| 日本在线不卡视频| 精品福利av导航| 99久久国产综合精品色伊| 亚洲免费观看在线观看| 69堂亚洲精品首页| 久久 天天综合| 国产精品电影一区二区| 91成人国产精品| 久久爱www久久做| 中文字幕不卡在线播放| 欧美性猛交xxxxxxxx| 美女视频黄免费的久久| 中文字幕欧美激情一区| 欧美在线看片a免费观看| 久久精品国产秦先生| 中文字幕一区日韩精品欧美| 欧美日韩一区精品| 国产精品91一区二区|