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

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

?? mbuffer.c

?? jm_frext22.ZIP的壓縮文件,主要用于嵌入式系統圖象的編解碼的開發.
?? C
?? 第 1 頁 / 共 5 頁
字號:

/*!
 ************************************************************************
 * \brief
 *    mark FrameStore unused for reference
 *
 ************************************************************************
 */
static void unmark_for_reference(FrameStore* fs)
{

  if (fs->is_used & 1)
  {
    fs->top_field->used_for_reference = 0;
  }
  if (fs->is_used & 2)
  {
    fs->bottom_field->used_for_reference = 0;
  }
  if (fs->is_used == 3)
  {
    fs->top_field->used_for_reference = 0;
    fs->bottom_field->used_for_reference = 0;
    fs->frame->used_for_reference = 0;
  }

  fs->is_reference = 0;
}


/*!
 ************************************************************************
 * \brief
 *    mark FrameStore unused for reference and reset long term flags
 *
 ************************************************************************
 */
static void unmark_for_long_term_reference(FrameStore* fs)
{

  if (fs->is_used & 1)
  {
    fs->top_field->used_for_reference = 0;
    fs->top_field->is_long_term = 0;
  }
  if (fs->is_used & 2)
  {
    fs->bottom_field->used_for_reference = 0;
    fs->bottom_field->is_long_term = 0;
  }
  if (fs->is_used == 3)
  {
    fs->top_field->used_for_reference = 0;
    fs->top_field->is_long_term = 0;
    fs->bottom_field->used_for_reference = 0;
    fs->bottom_field->is_long_term = 0;
    fs->frame->used_for_reference = 0;
    fs->frame->is_long_term = 0;
  }

  fs->is_reference = 0;
  fs->is_long_term = 0;
}


/*!
 ************************************************************************
 * \brief
 *    compares two stored pictures by picture number for qsort in descending order
 *
 ************************************************************************
 */
static int compare_pic_by_pic_num_desc( const void *arg1, const void *arg2 )
{
  if ( (*(StorablePicture**)arg1)->pic_num < (*(StorablePicture**)arg2)->pic_num)
    return 1;
  if ( (*(StorablePicture**)arg1)->pic_num > (*(StorablePicture**)arg2)->pic_num)
    return -1;
  else
    return 0;
}

/*!
 ************************************************************************
 * \brief
 *    compares two stored pictures by picture number for qsort in descending order
 *
 ************************************************************************
 */
static int compare_pic_by_lt_pic_num_asc( const void *arg1, const void *arg2 )
{
  if ( (*(StorablePicture**)arg1)->long_term_pic_num < (*(StorablePicture**)arg2)->long_term_pic_num)
    return -1;
  if ( (*(StorablePicture**)arg1)->long_term_pic_num > (*(StorablePicture**)arg2)->long_term_pic_num)
    return 1;
  else
    return 0;
}

/*!
 ************************************************************************
 * \brief
 *    compares two frame stores by pic_num for qsort in descending order
 *
 ************************************************************************
 */
static int compare_fs_by_frame_num_desc( const void *arg1, const void *arg2 )
{
  if ( (*(FrameStore**)arg1)->frame_num_wrap < (*(FrameStore**)arg2)->frame_num_wrap)
    return 1;
  if ( (*(FrameStore**)arg1)->frame_num_wrap > (*(FrameStore**)arg2)->frame_num_wrap)
    return -1;
  else
    return 0;
}


/*!
 ************************************************************************
 * \brief
 *    compares two frame stores by lt_pic_num for qsort in descending order
 *
 ************************************************************************
 */
static int compare_fs_by_lt_pic_idx_asc( const void *arg1, const void *arg2 )
{
  if ( (*(FrameStore**)arg1)->long_term_frame_idx < (*(FrameStore**)arg2)->long_term_frame_idx)
    return -1;
  if ( (*(FrameStore**)arg1)->long_term_frame_idx > (*(FrameStore**)arg2)->long_term_frame_idx)
    return 1;
  else
    return 0;
}


/*!
 ************************************************************************
 * \brief
 *    compares two stored pictures by poc for qsort in ascending order
 *
 ************************************************************************
 */
static int compare_pic_by_poc_asc( const void *arg1, const void *arg2 )
{
  if ( (*(StorablePicture**)arg1)->poc < (*(StorablePicture**)arg2)->poc)
    return -1;
  if ( (*(StorablePicture**)arg1)->poc > (*(StorablePicture**)arg2)->poc)
    return 1;
  else
    return 0;
}


/*!
 ************************************************************************
 * \brief
 *    compares two stored pictures by poc for qsort in descending order
 *
 ************************************************************************
 */
static int compare_pic_by_poc_desc( const void *arg1, const void *arg2 )
{
  if ( (*(StorablePicture**)arg1)->poc < (*(StorablePicture**)arg2)->poc)
    return 1;
  if ( (*(StorablePicture**)arg1)->poc > (*(StorablePicture**)arg2)->poc)
    return -1;
  else
    return 0;
}


/*!
 ************************************************************************
 * \brief
 *    compares two frame stores by poc for qsort in ascending order
 *
 ************************************************************************
 */
static int compare_fs_by_poc_asc( const void *arg1, const void *arg2 )
{
  if ( (*(FrameStore**)arg1)->poc < (*(FrameStore**)arg2)->poc)
    return -1;
  if ( (*(FrameStore**)arg1)->poc > (*(FrameStore**)arg2)->poc)
    return 1;
  else
    return 0;
}


/*!
 ************************************************************************
 * \brief
 *    compares two frame stores by poc for qsort in descending order
 *
 ************************************************************************
 */
static int compare_fs_by_poc_desc( const void *arg1, const void *arg2 )
{
  if ( (*(FrameStore**)arg1)->poc < (*(FrameStore**)arg2)->poc)
    return 1;
  if ( (*(FrameStore**)arg1)->poc > (*(FrameStore**)arg2)->poc)
    return -1;
  else
    return 0;
}


/*!
 ************************************************************************
 * \brief
 *    returns true, if picture is short term reference picture
 *
 ************************************************************************
 */
int is_short_ref(StorablePicture *s)
{
  return ((s->used_for_reference) && (!(s->is_long_term)));
}


/*!
 ************************************************************************
 * \brief
 *    returns true, if picture is long term reference picture
 *
 ************************************************************************
 */
int is_long_ref(StorablePicture *s)
{
  return ((s->used_for_reference) && (s->is_long_term));
}


/*!
 ************************************************************************
 * \brief
 *    Generates a alternating field list from a given FrameStore list
 *
 ************************************************************************
 */
static void gen_pic_list_from_frame_list(PictureStructure currStrcture, FrameStore **fs_list, int list_idx, StorablePicture **list, int *list_size, int long_term)
{
  int top_idx = 0;
  int bot_idx = 0;

  int (*is_ref)(StorablePicture *s);

  if (long_term)
    is_ref=is_long_ref;
  else
    is_ref=is_short_ref;

  if (currStrcture == TOP_FIELD)
  {
    while ((top_idx<list_idx)||(bot_idx<list_idx))
    {
      for ( ; top_idx<list_idx; top_idx++)
      {
        if(fs_list[top_idx]->is_used & 1)
        {
          if(is_ref(fs_list[top_idx]->top_field))
          {
            // short term ref pic
            list[*list_size] = fs_list[top_idx]->top_field;
            (*list_size)++;
            top_idx++;
            break;
          }
        }
      }
      for ( ; bot_idx<list_idx; bot_idx++)
      {
        if(fs_list[bot_idx]->is_used & 2)
        {
          if(is_ref(fs_list[bot_idx]->bottom_field))
          {
            // short term ref pic
            list[*list_size] = fs_list[bot_idx]->bottom_field;
            (*list_size)++;
            bot_idx++;
            break;
          }
        }
      }
    }
  }
  if (currStrcture == BOTTOM_FIELD)
  {
    while ((top_idx<list_idx)||(bot_idx<list_idx))
    {
      for ( ; bot_idx<list_idx; bot_idx++)
      {
        if(fs_list[bot_idx]->is_used & 2)
        {
          if(is_ref(fs_list[bot_idx]->bottom_field))
          {
            // short term ref pic
            list[*list_size] = fs_list[bot_idx]->bottom_field;
            (*list_size)++;
            bot_idx++;
            break;
          }
        }
      }
      for ( ; top_idx<list_idx; top_idx++)
      {
        if(fs_list[top_idx]->is_used & 1)
        {
          if(is_ref(fs_list[top_idx]->top_field))
          {
            // short term ref pic
            list[*list_size] = fs_list[top_idx]->top_field;
            (*list_size)++;
            top_idx++;
            break;
          }
        }
      }
    }
  }
}


/*!
 ************************************************************************
 * \brief
 *    Initialize listX[0] and list 1 depending on current picture type
 *
 ************************************************************************
 */
void init_lists(int currSliceType, PictureStructure currPicStructure)
{
  int add_top = 0, add_bottom = 0;
  unsigned i;
  int j;
  int MaxFrameNum = 1 << (active_sps->log2_max_frame_num_minus4 + 4);
  int diff;

  int list0idx = 0;
  int list0idx_1 = 0;
  int listltidx = 0;

  FrameStore **fs_list0;
  FrameStore **fs_list1;
  FrameStore **fs_listlt;

  StorablePicture *tmp_s;

  if (currPicStructure == FRAME)  
  {
    for (i=0; i<dpb.ref_frames_in_buffer; i++)
    {
      if (dpb.fs_ref[i]->is_used==3)
      {
        if ((dpb.fs_ref[i]->frame->used_for_reference)&&(!dpb.fs_ref[i]->frame->is_long_term))
        {
          if( dpb.fs_ref[i]->frame_num > img->frame_num )
          {
            dpb.fs_ref[i]->frame_num_wrap = dpb.fs_ref[i]->frame_num - MaxFrameNum;
          }
          else
          {
            dpb.fs_ref[i]->frame_num_wrap = dpb.fs_ref[i]->frame_num;
          }
          dpb.fs_ref[i]->frame->pic_num = dpb.fs_ref[i]->frame_num_wrap;
          dpb.fs_ref[i]->frame->order_num=list0idx;
        }
      }
    }
  }
  else
  {
    if (currPicStructure == TOP_FIELD)
    {
      add_top    = 1;
      add_bottom = 0;
    }
    else
    {
      add_top    = 0;
      add_bottom = 1;
    }
    
    for (i=0; i<dpb.ref_frames_in_buffer; i++)
    {
      if (dpb.fs_ref[i]->is_reference)
      {
        if( dpb.fs_ref[i]->frame_num > img->frame_num )
        {
          dpb.fs_ref[i]->frame_num_wrap = dpb.fs_ref[i]->frame_num - MaxFrameNum;
        }
        else
        {
          dpb.fs_ref[i]->frame_num_wrap = dpb.fs_ref[i]->frame_num;
        }
        if (dpb.fs_ref[i]->is_reference & 1)
        {
          dpb.fs_ref[i]->top_field->pic_num = (2 * dpb.fs_ref[i]->frame_num_wrap) + add_top;
        }
        if (dpb.fs_ref[i]->is_reference & 2)
        {
          dpb.fs_ref[i]->bottom_field->pic_num = (2 * dpb.fs_ref[i]->frame_num_wrap) + add_bottom;
        }
      }
    }
  }

  if ((currSliceType == I_SLICE)||(currSliceType == SI_SLICE))
  {
    listXsize[0] = 0;
    listXsize[1] = 0;
    return;
  }

  if ((currSliceType == P_SLICE)||(currSliceType == SP_SLICE))
  {
    // Calculate FrameNumWrap and PicNum
    if (currPicStructure == FRAME)  
    {
      for (i=0; i<dpb.ref_frames_in_buffer; i++)
      {
        if (dpb.fs_ref[i]->is_used==3)
        {
          if ((dpb.fs_ref[i]->frame->used_for_reference)&&(!dpb.fs_ref[i]->frame->is_long_term))
          {
            listX[0][list0idx++] = dpb.fs_ref[i]->frame;
          }
        }
      }
      // order list 0 by PicNum
      qsort((void *)listX[0], list0idx, sizeof(StorablePicture*), compare_pic_by_pic_num_desc);
      listXsize[0] = list0idx;
//      printf("listX[0] (PicNum): "); for (i=0; i<list0idx; i++){printf ("%d  ", listX[0][i]->pic_num);} printf("\n");

      // long term handling
      for (i=0; i<dpb.ltref_frames_in_buffer; i++)
      {
        if (dpb.fs_ltref[i]->is_used==3)
        {
          if (dpb.fs_ltref[i]->frame->is_long_term)
          {
            dpb.fs_ltref[i]->frame->long_term_pic_num = dpb.fs_ltref[i]->frame->long_term_frame_idx;
            dpb.fs_ltref[i]->frame->order_num=list0idx;
            listX[0][list0idx++]=dpb.fs_ltref[i]->frame;
          }
        }
      }
      qsort((void *)&listX[0][listXsize[0]], list0idx-listXsize[0], sizeof(StorablePicture*), compare_pic_by_lt_pic_num_asc);
      listXsize[0] = list0idx;
    }
    else
    {
      fs_list0 = calloc(dpb.size, sizeof (FrameStore*));
      if (NULL==fs_list0) 
         no_mem_exit("init_lists: fs_list0");
      fs_listlt = calloc(dpb.size, sizeof (FrameStore*));
      if (NULL==fs_listlt) 
         no_mem_exit("init_lists: fs_listlt");

      for (i=0; i<dpb.ref_frames_in_buffer; i++)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
裸体在线国模精品偷拍| 欧美日韩国产片| 国产麻豆91精品| 国内精品伊人久久久久影院对白| 亚洲自拍偷拍欧美| 一区二区三区四区在线播放| 亚洲男人的天堂一区二区| 亚洲人精品午夜| 亚洲激情自拍偷拍| 亚洲精品中文在线观看| 一区二区三区日韩精品| 亚洲自拍都市欧美小说| 无码av中文一区二区三区桃花岛| 婷婷国产在线综合| 欧美aaaaa成人免费观看视频| 日本大胆欧美人术艺术动态 | 国产v综合v亚洲欧| 成人手机电影网| 97aⅴ精品视频一二三区| 色偷偷88欧美精品久久久| 欧美少妇bbb| 日韩一区二区中文字幕| 精品国免费一区二区三区| 中文一区在线播放| 一区二区三区日本| 久久99国产精品麻豆| 国产精品456| 91在线国产观看| 欧美日韩精品一区视频| ww久久中文字幕| 日韩毛片高清在线播放| 五月天激情小说综合| 激情五月婷婷综合网| 大尺度一区二区| 精品视频一区二区三区免费| 欧美电视剧免费观看| 国产精品国产三级国产aⅴ入口| 伊人夜夜躁av伊人久久| 麻豆成人久久精品二区三区小说| 国产精华液一区二区三区| 一本色道亚洲精品aⅴ| 日韩亚洲欧美中文三级| 欧美极品aⅴ影院| 日韩影视精彩在线| 盗摄精品av一区二区三区| 欧美日韩一区二区三区不卡| 久久婷婷综合激情| 亚洲成人一区在线| 成人午夜电影网站| 欧美一二区视频| 亚洲天堂精品视频| 精品亚洲免费视频| 日本韩国精品在线| 久久久精品天堂| 午夜视频一区在线观看| 风间由美一区二区三区在线观看 | 亚洲人成伊人成综合网小说| 三级精品在线观看| 成av人片一区二区| 欧美刺激午夜性久久久久久久| 中文字幕一区二区三中文字幕| 男女视频一区二区| 91美女片黄在线观看| 欧美精品一区二区精品网| 一区二区在线观看免费| 国产精品一区在线观看乱码| 欧美理论电影在线| 亚洲美女视频在线观看| 国产黄人亚洲片| 日韩精品专区在线| 无码av免费一区二区三区试看| av电影在线观看一区| 久久久久久久久久久久久久久99| 亚洲一二三四久久| 99国产精品久久久久久久久久| 精品免费99久久| 日韩精品1区2区3区| 色吧成人激情小说| 国产精品久久久久久亚洲伦| 国产在线观看免费一区| 日韩免费看的电影| 日韩精品电影一区亚洲| 欧美性色黄大片| 亚洲人亚洲人成电影网站色| 国产成人在线视频免费播放| 精品国一区二区三区| 久久精品国产在热久久| 欧美浪妇xxxx高跟鞋交| 一区二区三区蜜桃网| av资源网一区| 国产精品青草综合久久久久99| 寂寞少妇一区二区三区| 日韩三级视频中文字幕| 午夜电影一区二区| 欧美撒尿777hd撒尿| 伊人夜夜躁av伊人久久| 色视频一区二区| 亚洲精品国产第一综合99久久| 从欧美一区二区三区| 国产日产欧美精品一区二区三区| 国内精品久久久久影院薰衣草 | 日韩欧美一级特黄在线播放| 亚洲不卡av一区二区三区| 在线观看中文字幕不卡| 综合精品久久久| 9人人澡人人爽人人精品| 国产精品污www在线观看| 成a人片亚洲日本久久| 亚洲视频免费看| 色先锋aa成人| 亚洲一区在线观看免费| 91国产免费看| 日韩黄色在线观看| 日韩视频免费观看高清完整版 | 成人免费在线播放视频| 99久久免费视频.com| 综合激情网...| 欧美性感一区二区三区| 无码av中文一区二区三区桃花岛| 91精品国产综合久久精品麻豆| 全部av―极品视觉盛宴亚洲| 日韩色视频在线观看| 国产伦精一区二区三区| 欧美国产激情一区二区三区蜜月| 成人一区二区在线观看| 亚洲天堂精品视频| 欧美久久久一区| 久99久精品视频免费观看| 国产视频一区二区在线观看| 波多野结衣中文字幕一区| 亚洲麻豆国产自偷在线| 欧美日韩一区二区三区四区 | 国产精品香蕉一区二区三区| 中文字幕av一区二区三区免费看| 一区二区三区四区亚洲| 在线观看日韩高清av| 亚洲午夜激情av| 欧美丰满一区二区免费视频| 久久电影网电视剧免费观看| 国产清纯白嫩初高生在线观看91 | 激情综合网av| 国产精品久久久99| 欧美日韩国产天堂| 国产一区二区免费视频| 中文字幕一区二| 欧美精品在线一区二区| 国产美女av一区二区三区| 亚洲美女区一区| 精品国产一区二区亚洲人成毛片 | 国产精品久久久久影院| 欧美日韩在线播放三区| 国产综合色视频| 亚洲色图清纯唯美| 日韩欧美黄色影院| 97精品国产露脸对白| 蓝色福利精品导航| 亚洲码国产岛国毛片在线| 亚洲精品一区二区三区在线观看 | 国产精品美女久久久久aⅴ国产馆| 欧美在线不卡视频| 国产精品综合在线视频| 婷婷国产在线综合| 亚洲天堂免费看| 久久网站最新地址| 欧美久久久影院| 99re6这里只有精品视频在线观看| 天天影视色香欲综合网老头| 日本一区二区成人在线| 日韩视频一区二区三区在线播放 | 一区二区三区中文在线观看| 欧美刺激午夜性久久久久久久| 91亚洲永久精品| 久草热8精品视频在线观看| 亚洲一区成人在线| 国产精品久久久久三级| 久久亚洲一区二区三区明星换脸| 欧美私模裸体表演在线观看| zzijzzij亚洲日本少妇熟睡| 蜜乳av一区二区| 亚洲午夜精品网| 中文字幕一区二区三区不卡在线 | 国产精品久久久久一区| 精品国产伦一区二区三区观看方式 | 色综合一个色综合亚洲| 国产成人免费视频精品含羞草妖精| 日韩精品乱码免费| 亚洲伊人色欲综合网| 亚洲免费成人av| 中文字幕日本乱码精品影院| 久久九九影视网| 欧美成人r级一区二区三区| 欧美日韩久久一区| 在线观看国产一区二区| 91影院在线观看| 本田岬高潮一区二区三区| 国产91丝袜在线播放0| 狠狠色2019综合网| 麻豆成人av在线| 蜜臀a∨国产成人精品| 麻豆精品一区二区三区|