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

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

?? mbuffer.c

?? jm_frext22.ZIP的壓縮文件,主要用于嵌入式系統圖象的編解碼的開發.
?? C
?? 第 1 頁 / 共 5 頁
字號:
 ************************************************************************
 * \brief
 *    Update the list of frame stores that contain reference frames/fields
 *
 ************************************************************************
 */
void update_ref_list()
{
  unsigned i, j;
  for (i=0, j=0; i<dpb.used_size; i++)
  {
    if (is_short_term_reference(dpb.fs[i]))
    {
      dpb.fs_ref[j++]=dpb.fs[i];
    }
  }

  dpb.ref_frames_in_buffer = j;

  while (j<dpb.size)
  {
    dpb.fs_ref[j++]=NULL;
  }
}


/*!
 ************************************************************************
 * \brief
 *    Update the list of frame stores that contain long-term reference 
 *    frames/fields
 *
 ************************************************************************
 */
void update_ltref_list()
{
  unsigned i, j;
  for (i=0, j=0; i<dpb.used_size; i++)
  {
    if (is_long_term_reference(dpb.fs[i]))
    {
      dpb.fs_ltref[j++]=dpb.fs[i];
    }
  }

  dpb.ltref_frames_in_buffer=j;

  while (j<dpb.size)
  {
    dpb.fs_ltref[j++]=NULL;
  }
}

/*!
 ************************************************************************
 * \brief
 *    Perform Memory management for idr pictures
 *
 ************************************************************************
 */
static void idr_memory_management(StorablePicture* p)
{
  unsigned i;

  assert (p->idr_flag);

  if (p->no_output_of_prior_pics_flag)
  {
    // free all stored pictures
    for (i=0; i<dpb.used_size; i++)
    {
      // reset all reference settings
      free_frame_store(dpb.fs[i]);
      dpb.fs[i] = alloc_frame_store();
    }
    for (i=0; i<dpb.ref_frames_in_buffer; i++)
    {
      dpb.fs_ref[i]=NULL;
    }
    for (i=0; i<dpb.ltref_frames_in_buffer; i++)
    {
      dpb.fs_ltref[i]=NULL;
    }
    dpb.used_size=0;
  }
  else
  {
    flush_dpb();
  }
  dpb.last_picture = NULL;

  update_ref_list();
  update_ltref_list();
  dpb.last_output_poc = INT_MIN;
  
  if (p->long_term_reference_flag)
  {
    dpb.max_long_term_pic_idx = 0;
    p->is_long_term           = 1;
    p->long_term_frame_idx    = 0;
  }
  else
  {
    dpb.max_long_term_pic_idx = -1;
    p->is_long_term           = 0;
  }
}

/*!
 ************************************************************************
 * \brief
 *    Perform Sliding window decoded reference picture marking process
 *
 ************************************************************************
 */
static void sliding_window_memory_management(StorablePicture* p)
{
  unsigned i;

  assert (!p->idr_flag);
  // if this is a reference pic with sliding sliding window, unmark first ref frame
  if (dpb.ref_frames_in_buffer==dpb.num_ref_frames - dpb.ltref_frames_in_buffer)
  {
    for (i=0; i<dpb.used_size;i++)
    {
      if (dpb.fs[i]->is_reference  && (!(dpb.fs[i]->is_long_term)))
      {
        unmark_for_reference(dpb.fs[i]);
        update_ref_list();
        break;
      }
    }
  }

  p->is_long_term = 0;
}

/*!
 ************************************************************************
 * \brief
 *    Calculate picNumX
 ************************************************************************
 */
static int get_pic_num_x (StorablePicture *p, int difference_of_pic_nums_minus1)
{
  int currPicNum;

  if (p->structure == FRAME)
    currPicNum = p->frame_num;
  else 
    currPicNum = 2 * p->frame_num + 1;
  
  return currPicNum - (difference_of_pic_nums_minus1 + 1);
}


/*!
 ************************************************************************
 * \brief
 *    Adaptive Memory Management: Mark short term picture unused
 ************************************************************************
 */
static void mm_unmark_short_term_for_reference(StorablePicture *p, int difference_of_pic_nums_minus1)
{
  int picNumX;

  unsigned i;

  picNumX = get_pic_num_x(p, difference_of_pic_nums_minus1);

  for (i=0; i<dpb.ref_frames_in_buffer; i++)
  {
    if (p->structure == FRAME)
    {
      if ((dpb.fs_ref[i]->is_reference==3) && (dpb.fs_ref[i]->is_long_term==0))
      {
        if (dpb.fs_ref[i]->frame->pic_num == picNumX)
        {
          unmark_for_reference(dpb.fs_ref[i]);
          return;
        }
      }
    }
    else
    {
      if ((dpb.fs_ref[i]->is_reference & 1) && (!(dpb.fs_ref[i]->is_long_term & 1)))
      {
        if (dpb.fs_ref[i]->top_field->pic_num == picNumX)
        {
          dpb.fs_ref[i]->top_field->used_for_reference = 0;
          dpb.fs_ref[i]->is_reference &= 2;
          if (dpb.fs_ref[i]->is_used == 3)
          {
            dpb.fs_ref[i]->frame->used_for_reference = 0;
          }
          return;
        }
      }
      if ((dpb.fs_ref[i]->is_reference & 2) && (!(dpb.fs_ref[i]->is_long_term & 2)))
      {
        if (dpb.fs_ref[i]->bottom_field->pic_num == picNumX)
        {
          dpb.fs_ref[i]->bottom_field->used_for_reference = 0;
          dpb.fs_ref[i]->is_reference &= 1;
          if (dpb.fs_ref[i]->is_used == 3)
          {
            dpb.fs_ref[i]->frame->used_for_reference = 0;
          }
          return;
        }
      }
    }
  }
}


/*!
 ************************************************************************
 * \brief
 *    Adaptive Memory Management: Mark long term picture unused
 ************************************************************************
 */
static void mm_unmark_long_term_for_reference(StorablePicture *p, int long_term_pic_num)
{
  unsigned i;
  for (i=0; i<dpb.ltref_frames_in_buffer; i++)
  {
    if (p->structure == FRAME)
    {
      if ((dpb.fs_ltref[i]->is_reference==3) && (dpb.fs_ltref[i]->is_long_term==3))
      {
        if (dpb.fs_ltref[i]->frame->long_term_pic_num == long_term_pic_num)
        {
          unmark_for_long_term_reference(dpb.fs_ltref[i]);
        }
      }
    }
    else
    {
      if ((dpb.fs_ltref[i]->is_reference & 1) && ((dpb.fs_ltref[i]->is_long_term & 1)))
      {
        if (dpb.fs_ltref[i]->top_field->long_term_pic_num == long_term_pic_num)
        {
          dpb.fs_ltref[i]->top_field->used_for_reference = 0;
          dpb.fs_ltref[i]->top_field->is_long_term = 0;
          dpb.fs_ltref[i]->is_reference &= 2;
          dpb.fs_ltref[i]->is_long_term &= 2;
          if (dpb.fs_ltref[i]->is_used == 3)
          {
            dpb.fs_ltref[i]->frame->used_for_reference = 0;
            dpb.fs_ltref[i]->frame->is_long_term = 0;
          }
          return;
        }
      }
      if ((dpb.fs_ltref[i]->is_reference & 2) && ((dpb.fs_ltref[i]->is_long_term & 2)))
      {
        if (dpb.fs_ltref[i]->bottom_field->long_term_pic_num == long_term_pic_num)
        {
          dpb.fs_ltref[i]->bottom_field->used_for_reference = 0;
          dpb.fs_ltref[i]->bottom_field->is_long_term = 0;
          dpb.fs_ltref[i]->is_reference &= 1;
          dpb.fs_ltref[i]->is_long_term &= 1;
          if (dpb.fs_ltref[i]->is_used == 3)
          {
            dpb.fs_ltref[i]->frame->used_for_reference = 0;
            dpb.fs_ltref[i]->frame->is_long_term = 0;
          }
          return;
        }
      }
    }
  }
}


/*!
 ************************************************************************
 * \brief
 *    Mark a long-term reference frame or complementary field pair unused for referemce
 ************************************************************************
 */
static void unmark_long_term_frame_for_reference_by_frame_idx(int long_term_frame_idx)
{
  unsigned i;
  for(i=0; i<dpb.ltref_frames_in_buffer; i++)
  {
    if (dpb.fs_ltref[i]->long_term_frame_idx == long_term_frame_idx)
      unmark_for_long_term_reference(dpb.fs_ltref[i]);
  }
}

/*!
 ************************************************************************
 * \brief
 *    Mark a long-term reference field unused for reference only if it's not
 *    the complementary field of the picture indicated by picNumX
 ************************************************************************
 */
static void unmark_long_term_field_for_reference_by_frame_idx(PictureStructure structure, int long_term_frame_idx, int mark_current, unsigned curr_frame_num, int curr_pic_num)
{
  unsigned i;

  assert(structure!=FRAME);
  if (curr_pic_num<0)
    curr_pic_num+=(2*img->MaxFrameNum);

  for(i=0; i<dpb.ltref_frames_in_buffer; i++)
  {
    if (dpb.fs_ltref[i]->long_term_frame_idx == long_term_frame_idx)
    {
      if (structure == TOP_FIELD)
      {
        if ((dpb.fs_ltref[i]->is_long_term == 3))
        {
          unmark_for_long_term_reference(dpb.fs_ltref[i]);
        }
        else
        {
          if ((dpb.fs_ltref[i]->is_long_term == 1))
          {
            unmark_for_long_term_reference(dpb.fs_ltref[i]);
          }
          else
          {
            if (mark_current)
            {
              if (dpb.last_picture)
              {
                if ( ( dpb.last_picture != dpb.fs_ltref[i] )|| dpb.last_picture->frame_num != curr_frame_num)
                  unmark_for_long_term_reference(dpb.fs_ltref[i]);
              }
              else
              {
                unmark_for_long_term_reference(dpb.fs_ltref[i]);
              }
            }
            else
            {
              if ((dpb.fs_ltref[i]->frame_num) != (unsigned)(curr_pic_num/2))
              {
                unmark_for_long_term_reference(dpb.fs_ltref[i]);
              }
            }
          }
        }
      }
      if (structure == BOTTOM_FIELD)
      {
        if ((dpb.fs_ltref[i]->is_long_term == 3))
        {
          unmark_for_long_term_reference(dpb.fs_ltref[i]);
        }
        else
        {
          if ((dpb.fs_ltref[i]->is_long_term == 2))
          {
            unmark_for_long_term_reference(dpb.fs_ltref[i]);
          }
          else
          {
            if (mark_current)
            {
              if (dpb.last_picture)
              {
                if ( ( dpb.last_picture != dpb.fs_ltref[i] )|| dpb.last_picture->frame_num != curr_frame_num)
                  unmark_for_long_term_reference(dpb.fs_ltref[i]);
              }
              else
              {
                unmark_for_long_term_reference(dpb.fs_ltref[i]);
              }
            }
            else
            {
              if ((dpb.fs_ltref[i]->frame_num) != (unsigned)(curr_pic_num/2))
              {
                unmark_for_long_term_reference(dpb.fs_ltref[i]);
              }
            }
          }
        }
      }
    }
  }
}


/*!
 ************************************************************************
 * \brief
 *    mark a picture as long-term reference
 ************************************************************************
 */
static void mark_pic_long_term(StorablePicture* p, int long_term_frame_idx, int picNumX)
{
  unsigned i;
  int add_top, add_bottom;

  if (p->structure == FRAME)
  {
    for (i=0; i<dpb.ref_frames_in_buffer; i++)
    {
      if (dpb.fs_ref[i]->is_reference == 3)
      {
        if ((!dpb.fs_ref[i]->frame->is_long_term)&&(dpb.fs_ref[i]->frame->pic_num == picNumX))
        {
          dpb.fs_ref[i]->long_term_frame_idx = dpb.fs_ref[i]->frame->long_term_frame_idx
                                             = dpb.fs_ref[i]->top_field->long_term_frame_idx
                                             = dpb.fs_ref[i]->bottom_field->long_term_frame_idx
                                             = long_term_frame_idx;
          dpb.fs_ref[i]->frame->long_term_pic_num = dpb.fs_ref[i]->top_field->long_term_pic_num
                                                  = dpb.fs_ref[i]->bottom_field->long_term_pic_num
                                                  = long_term_frame_idx;
          dpb.fs_ref[i]->frame->is_long_term = dpb.fs_ref[i]->top_field->is_long_term
                                             = dpb.fs_ref[i]->bottom_field->is_long_term
                                             = 1;
          dpb.fs_ref[i]->is_long_term = 3;
          return;
        }
      }
    }
    printf ("Warning: reference frame for long term marking not found\n");
  }
  else
  {
    if (p->structure == 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 & 1)
      {
        if ((!dpb.fs_ref[i]->top_field->is_long_term)&&(dpb.fs_ref[i]->top_field->pic_num == picNumX))
        {
          if ((dpb.fs_ref[i]->is_long_term) && (dpb.fs_ref[i]->long_term_frame_idx != long_term_frame_idx))
          {
              printf ("Warning: assigning long_term_frame_idx different from other field\n");
          }

          dpb.fs_ref[i]->long_term_frame_idx = dpb.fs_ref[i]->top_field->long_term_frame_idx 
                                             = long_term_frame_idx;
          dpb.fs_ref[i]->top_field->long_term_pic_num = 2 * long_term_frame_idx + add_top;
          dpb.fs_ref[i]->top_field->is_long_term = 1;
          dpb.fs_ref[i]->is_long_term |= 1;
          if (dpb.fs_ref[i]->is_long_term == 3)
          {
            dpb.fs_ref[i]->frame->is_long_term = 1;
            dpb.fs_ref[i]->frame->long_term_frame_idx = dpb.fs_ref[i]->frame->long_term_pic_num = long_term_frame_idx;
          }
          return;
        }
      }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲欧美日韩日本| 1区2区3区国产精品| 亚洲资源中文字幕| 99麻豆久久久国产精品免费 | 丝袜美腿亚洲综合| 国产欧美视频一区二区| 精品国产一区二区三区久久影院| 日韩三级免费观看| 91麻豆精品国产自产在线| 欧美一区二区三区四区五区| 日韩免费电影一区| 久久嫩草精品久久久久| 亚洲一区二区三区四区五区中文| 亚洲图片欧美视频| 欧美男同性恋视频网站| 天天操天天综合网| 精品日韩欧美一区二区| 成人激情图片网| 久久亚洲精华国产精华液| 久久免费午夜影院| av激情综合网| 一区二区三区成人| 精品少妇一区二区三区在线视频| 日韩欧美中文字幕公布| 五月婷婷综合在线| 亚洲一区欧美一区| 99久久综合99久久综合网站| 夜夜嗨av一区二区三区中文字幕| 日韩午夜激情电影| 成人黄色av网站在线| 午夜精品久久久久久久久久久| 久久综合色8888| 色屁屁一区二区| 精品一区二区日韩| 最新不卡av在线| 精品少妇一区二区三区| 99热精品一区二区| 九九九久久久精品| 亚洲一区av在线| 久久久精品蜜桃| 欧美午夜不卡在线观看免费| 国产毛片精品视频| 午夜精品久久久久久久久久久 | 3atv一区二区三区| 成人手机电影网| 日本不卡一区二区| 欧美男同性恋视频网站| 成人污视频在线观看| 日本欧美一区二区在线观看| 国产精品成人在线观看| 欧美不卡一区二区| 欧洲国内综合视频| 日本一区二区三区四区在线视频| 成人a级免费电影| 亚洲国产精品国自产拍av| 国产激情一区二区三区四区| 欧美色图12p| 亚洲影院免费观看| 在线看国产一区二区| 亚洲人精品一区| 欧美日韩国产一级| 麻豆成人综合网| 日日骚欧美日韩| 中文字幕免费一区| 日韩视频一区二区三区在线播放 | 欧美本精品男人aⅴ天堂| 午夜一区二区三区视频| 欧美日韩美女一区二区| 蜜臀久久99精品久久久久宅男| 欧美变态tickling挠脚心| 美美哒免费高清在线观看视频一区二区 | 国产日产欧美一区二区视频| 国产精品18久久久久| 成人欧美一区二区三区小说| 欧美日韩成人激情| 丁香婷婷综合激情五月色| 麻豆精品一区二区| 26uuu成人网一区二区三区| 99re8在线精品视频免费播放| 久久精品欧美一区二区三区不卡| 日韩高清在线电影| 国产精品免费看片| 国产视频一区二区在线| 一二三区精品福利视频| 国产精品美日韩| 久久精品免费看| 久久99精品久久久久久| 美国精品在线观看| 九九**精品视频免费播放| 精品在线观看免费| 亚洲一区在线观看视频| 国产91在线观看丝袜| 成人一区二区三区视频在线观看| 国产高清成人在线| 在线观看亚洲成人| 97精品超碰一区二区三区| 国产成人av电影| 六月丁香综合在线视频| 精品一区二区三区久久| 亚洲不卡在线观看| 亚洲永久精品大片| 中文字幕亚洲区| 国产精品福利电影一区二区三区四区| 日韩区在线观看| 亚洲乱码国产乱码精品精的特点| 天堂av在线一区| 欧美日本韩国一区二区三区视频 | 欧美一区二区在线视频| 91精品国产全国免费观看| 日韩欧美中文字幕精品| 国产精品视频九色porn| 亚洲一区在线播放| 激情图区综合网| 91色婷婷久久久久合中文| 欧美色综合久久| 久久午夜电影网| 樱花影视一区二区| 久国产精品韩国三级视频| 中文字幕免费在线观看视频一区| 欧美v国产在线一区二区三区| 国产精品美女一区二区三区| 亚洲国产精品精华液网站| 久久99国产精品成人| 日本高清无吗v一区| 精品粉嫩超白一线天av| 亚洲777理论| 丁香一区二区三区| 国产日韩欧美制服另类| 亚洲最新视频在线观看| 久久精品国产一区二区三| 不卡一卡二卡三乱码免费网站| 在线观看视频91| 久久久久九九视频| 美女在线观看视频一区二区| 色系网站成人免费| 国产精品天天看| 成人性生交大片免费看中文网站| 亚洲欧美日韩国产另类专区| 中文字幕第一页久久| 日本亚洲欧美天堂免费| 色狠狠桃花综合| 国产日韩综合av| 久久97超碰色| 91精品蜜臀在线一区尤物| 777午夜精品视频在线播放| 亚洲乱码中文字幕| 91视视频在线观看入口直接观看www | 国产精品久久国产精麻豆99网站| 午夜激情久久久| 亚洲女性喷水在线观看一区| 国产成人精品一区二区三区四区 | 丝袜美腿亚洲色图| 3atv一区二区三区| 国产欧美一区二区在线观看| 久久精品国产亚洲aⅴ| 成人av在线资源| 国产一区二区三区免费在线观看| 日本不卡视频一二三区| 亚洲精品精品亚洲| 日韩免费一区二区三区在线播放| 一区二区三区欧美日| 欧美精选在线播放| 99re6这里只有精品视频在线观看| 亚洲黄色av一区| 欧美成人激情免费网| 日日夜夜免费精品| 成人在线综合网站| 中文字幕欧美三区| 91在线精品秘密一区二区| 亚洲一二三四区| 欧美精品一二三四| 美女一区二区三区在线观看| 国产日本亚洲高清| 色综合天天综合狠狠| 三级一区在线视频先锋| 欧美精品一区二区三区蜜桃 | 美女网站一区二区| 亚洲国产精品视频| 亚洲3atv精品一区二区三区| 亚洲精品水蜜桃| 精品在线一区二区三区| 午夜精彩视频在线观看不卡| 香蕉乱码成人久久天堂爱免费| 久久久国产一区二区三区四区小说| 9191久久久久久久久久久| 欧美午夜电影在线播放| 日韩欧美在线网站| 国产精品久久久久久久久免费桃花| 久久成人免费网站| 成人精品一区二区三区中文字幕| 在线欧美一区二区| 天天操天天干天天综合网| 日韩欧美区一区二| 精品一区二区三区不卡 | 精品91自产拍在线观看一区| 欧美变态tickle挠乳网站| 亚洲人成小说网站色在线 | 日本一二三不卡| 国产一区二区三区最好精华液| 一本到三区不卡视频|