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

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

?? mbuffer.c

?? 一個(gè)簡(jiǎn)單的視頻會(huì)議VC++MFC工程文件
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
        if( picNumLXPred + ( abs_diff_pic_num_minus1[i] + 1 )  >=  maxPicNum )
          picNumLXNoWrap = picNumLXPred + ( abs_diff_pic_num_minus1[i] + 1 ) - maxPicNum;
        else
          picNumLXNoWrap = picNumLXPred + ( abs_diff_pic_num_minus1[i] + 1 );
      }
      picNumLXPred = picNumLXNoWrap;

      if( picNumLXNoWrap > currPicNum )
        picNumLX = picNumLXNoWrap - maxPicNum;
      else
        picNumLX = picNumLXNoWrap;

      reorder_short_term(list, num_ref_idx_lX_active_minus1, picNumLX, &refIdxLX);
    }
    else //(remapping_of_pic_nums_idc[i] == 2)
    {
      reorder_long_term(list, num_ref_idx_lX_active_minus1, long_term_pic_idx[i], &refIdxLX);
    }
    
  }
  // that's a definition
  *list_size = num_ref_idx_lX_active_minus1 + 1;
}



/*!
 ************************************************************************
 * \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 (img->currentPicture->idr_flag);

  if (img->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 (img->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 (!img->currentPicture->idr_flag);
  // if this is a reference pic with sliding sliding window, unmark first ref frame
  if (dpb.ref_frames_in_buffer==active_sps->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 = img->frame_num;
  else 
    currPicNum = 2 * img->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)
{
  unsigned i;

  assert(structure!=FRAME);

  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]);
              }
            }
          }
        }
      }
      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]);
              }
            }
          }
        }
      }
    }
  }
}


/*!
 ************************************************************************
 * \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;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av在线播放成人| 欧美日韩一区二区三区四区 | www国产精品av| 欧美日韩国产乱码电影| 国产在线精品一区二区不卡了| 中文字幕中文在线不卡住| 国产亚洲欧洲997久久综合| 欧美精品电影在线播放| 国产亚洲自拍一区| 成人黄色大片在线观看| 亚洲国产综合在线| 国产三级精品视频| 欧洲亚洲国产日韩| 日本成人在线一区| 自拍偷在线精品自拍偷无码专区| 国产亚洲综合在线| 国产在线精品一区在线观看麻豆| 国产精品网友自拍| 中文字幕电影一区| 国产女主播一区| 欧美国产成人精品| 国产精品麻豆久久久| 国产欧美精品在线观看| 欧美国产一区视频在线观看| 欧美一区二区三区影视| 欧美日韩情趣电影| 欧美顶级少妇做爰| 欧美精品久久久久久久多人混战| 欧美性极品少妇| 欧美视频一二三区| 欧洲亚洲国产日韩| 9191久久久久久久久久久| 91精品久久久久久久久99蜜臂| 欧美一区二区精品| 日韩在线一区二区| 日韩精品高清不卡| 另类小说欧美激情| 卡一卡二国产精品| 国产一区二区三区视频在线播放| 国产一区二区三区在线观看免费 | 亚洲观看高清完整版在线观看| 亚洲大型综合色站| 日本一区中文字幕| 久草在线在线精品观看| 国产精品一品视频| 99国产精品久久| 欧美日韩在线综合| 91精品在线观看入口| 久久综合九色综合97婷婷女人 | 欧美一卡二卡三卡| 2024国产精品| 亚洲欧美一区二区久久| 夜夜精品浪潮av一区二区三区| 午夜欧美在线一二页| 麻豆freexxxx性91精品| 国产激情视频一区二区三区欧美| 一本大道久久a久久精品综合| 99久久久精品| 欧美妇女性影城| 久久色中文字幕| 亚洲欧美偷拍另类a∨色屁股| 午夜影视日本亚洲欧洲精品| 经典三级视频一区| 成人av电影免费观看| 在线播放91灌醉迷j高跟美女| 国产亚洲综合性久久久影院| 亚洲精品乱码久久久久| 蜜桃视频一区二区三区 | 色哟哟精品一区| 日韩欧美的一区| 中文字幕综合网| 蜜桃视频在线观看一区二区| 91在线视频官网| 欧美不卡在线视频| 亚洲欧美国产毛片在线| 青青草国产精品97视觉盛宴| 成人激情电影免费在线观看| 欧美日高清视频| 国产精品久久久久久久久免费丝袜| 午夜在线电影亚洲一区| av在线不卡电影| 欧美精品一区二区三区蜜桃视频 | 在线观看国产一区二区| 久久久99久久| 日韩精品一二三| 豆国产96在线|亚洲| 51午夜精品国产| 亚洲免费资源在线播放| 国产精品一区二区三区乱码| 777a∨成人精品桃花网| 悠悠色在线精品| 成人免费高清在线观看| 精品国产第一区二区三区观看体验| 亚洲国产日韩在线一区模特| 不卡的电视剧免费网站有什么| 日韩一区二区三区视频在线| 有坂深雪av一区二区精品| 国产九色精品成人porny| 欧美精品久久天天躁| 一区二区三区自拍| 91在线播放网址| 日本一区二区免费在线观看视频| 久色婷婷小香蕉久久| 欧美精品久久久久久久多人混战 | 国产日韩av一区二区| 蜜桃视频一区二区三区在线观看| 日韩一本二本av| 亚洲综合男人的天堂| 国产不卡视频一区| 久久免费精品国产久精品久久久久| 亚洲国产色一区| 在线观看亚洲专区| 综合久久一区二区三区| 9色porny自拍视频一区二区| 久久九九影视网| 国产乱子伦视频一区二区三区| 69精品人人人人| 蜜臀av一区二区| 欧美一级久久久久久久大片| 午夜激情久久久| 在线不卡a资源高清| 五月天丁香久久| 欧美日韩高清一区二区| 午夜欧美2019年伦理| 91麻豆精品国产自产在线观看一区| 亚洲动漫第一页| 欧美日韩免费电影| 天堂影院一区二区| 日本精品裸体写真集在线观看| 亚洲精品高清在线观看| 国产福利一区二区三区视频在线| 欧美日韩免费观看一区三区| 午夜欧美视频在线观看| 欧美精品丝袜中出| 美国毛片一区二区三区| 久久久亚洲精华液精华液精华液| 国产一区二区不卡| 国产精品色哟哟| 日本高清不卡aⅴ免费网站| 一区二区三区波多野结衣在线观看| 在线观看亚洲专区| 亚洲成人自拍偷拍| 欧美一区二区三区日韩| 国产一区美女在线| 国产精品福利影院| 在线视频一区二区三| 亚洲成人综合视频| 欧美mv和日韩mv的网站| 成人在线视频一区| 亚洲国产三级在线| 欧美mv日韩mv亚洲| yourporn久久国产精品| 一区二区三国产精华液| 欧美一区二区成人| 成人免费黄色大片| 亚洲一二三四久久| 欧美xxxxx裸体时装秀| 成人激情午夜影院| 亚洲va在线va天堂| 国产亚洲欧美日韩俺去了| 91香蕉视频污在线| 天堂精品中文字幕在线| 精品久久人人做人人爽| 国产成人在线视频网站| 亚洲色图在线播放| 欧美一级电影网站| 不卡一区在线观看| 日韩av在线播放中文字幕| 国产人妖乱国产精品人妖| 91电影在线观看| 国产伦精品一区二区三区视频青涩| 亚洲免费av在线| 欧美成人欧美edvon| 色综合亚洲欧洲| 国产自产视频一区二区三区| 亚洲精品成人少妇| 久久综合视频网| 欧美视频中文字幕| 成人免费看片app下载| 日韩不卡免费视频| 亚洲手机成人高清视频| 欧美一区二区三区四区高清| 波多野结衣中文字幕一区二区三区| 天天影视网天天综合色在线播放| 国产精品亚洲第一 | 91免费看`日韩一区二区| 国产一区二区三区免费播放| 免费在线看成人av| 婷婷丁香久久五月婷婷| 亚洲夂夂婷婷色拍ww47| 亚洲人成电影网站色mp4| 国产视频一区在线观看| 久久综合中文字幕| 欧美成人福利视频| 日韩欧美国产综合| 制服丝袜日韩国产| 在线播放欧美女士性生活| 欧美猛男超大videosgay| 在线看国产一区二区| 91成人看片片|