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

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

?? mbuffer.c

?? TML的參考源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
  }
}

/*!
 ************************************************************************
 * \brief
 *    remove short term frame from buffer
 *
 * \param shortID
 *    short term ID
 *    
 ************************************************************************
 */
void remove_short_term(int shortID)
{
  int i,j;
  Frame *f;

  for (i=0;i<fb->short_used;i++)
  {
    if ((fb->picbuf_short[i]->picID)==shortID)
    {
      fb->picbuf_short[i]->used=0;
      fb->picbuf_short[i]->lt_picID=-1;
      fb->picbuf_short[i]->picID=-1;
      
      fb->short_used--;

      if (i<fb->short_used) 
      {
        f=fb->picbuf_short[i];
        for (j=i;j<fb->short_used-1;j++);
          fb->picbuf_short[j]=fb->picbuf_short[j+1];
        fb->picbuf_short[fb->short_used-1]=f;
      } 
    }
  }
}

/*!
 ************************************************************************
 * \brief
 *    (re)-allocate memory for mref pointer structure
 ************************************************************************
 */
void alloc_mref(ImageParameters *img)
{
  if (mref) 
    free (mref);

  if((mref = (byte***)calloc(fb->short_size+fb->long_size,sizeof(byte**))) == NULL)
    no_mem_exit("alloc_mref: mref");

  if (mcef) 
    free (mcef);

  if((mcef = (byte****)calloc(fb->short_size+fb->long_size,sizeof(byte***))) == NULL)
    no_mem_exit("alloc_mref: mcef");

}

/*!
 ************************************************************************
 * \brief
 *    init mref pointer structure
 ************************************************************************
 */
void init_mref(ImageParameters *img)
{
  int i,j;

  for (i=0,j=0;i<fb->short_used;i++)
  {
    mref[j]=fb->picbuf_short[i]->mref;
    mcef[j]=fb->picbuf_short[i]->mcef;
    j++;
  }
  for (i=0;i<fb->long_size;i++)
  {
    mref[j]=fb->picbuf_long[i]->mref;
    mcef[j]=fb->picbuf_long[i]->mcef;
    j++;
  }
}


/*!
 ************************************************************************
 * \brief
 *    process RMPNI command list
 ************************************************************************
 */
void reorder_mref(ImageParameters *img)
{
  RMPNIbuffer_t *r;

  int pnp = img->pn;
  int pnq;
  int index,i;
  int size;
  int islong=0;
  int found=0;
  
  Frame **fr;
  Frame *f;

  // if nothing to do update mref and return
  if (img->currentSlice->rmpni_buffer==NULL) 
  {
    init_mref(img);
    return;
  }

  // We have to do the reordering with complete frame structures
  // so we need a temporary frame buffer of ordered references

  size=fb->short_used+fb->long_used;
  if ((fr=(Frame**)calloc(size,sizeof (Frame*)))==NULL) no_mem_exit("init_frame_buffers: fb->picbuf_long");

  for (i=0;i<fb->short_used;i++)
  {
    fr[i]=fb->picbuf_short[i];
    fr[i]->islong=0;
  }

  for (i=0;i<fb->long_used;i++)
  {
    fr[i+fb->short_used]=fb->picbuf_long[i];
    fr[i+fb->short_used]->islong=1;
  }

  r=img->currentSlice->rmpni_buffer;
  while (r)
  {
    switch (r->RMPNI)
    {

    case 0:
      // ADPN correspondig to negative difference
      if ((pnp-r->Data)<0)
        pnq=pnp-r->Data+fb->short_size;
      else
        pnq=pnp-r->Data;

      islong=0;

      break;

    case 1:
      // ADPN correspondig to positive difference
      if ((pnp+r->Data)>fb->short_size-1)
        pnq=pnp+r->Data-fb->short_size;
      else
        pnq=pnp+r->Data;

      islong=0;

      break;

    case 2:
      // LPIR specifying long term index
      pnq=r->Data;
      islong=1;

      break;

    case 3:
      return;
      break;

    }

    // now scan the frame buffer for the needed frame

    found=0;
    i=0;

    while ((!found)&&(i<size))
    {
      if (((!islong)&&(!fr[i]->islong) && (fr[i]->picID==pnq)) ||
          ((islong)&&(fr[i]->islong) && (fr[i]->lt_picID==pnq)))
      {
          found=1;
          index=i;
      }
      i++;
    }

    if (!found) error ("tried to remap non-existent picture",400);

    // now do the actual reordering
    /* cycle frame buffer */
    f=fr[index];
    for (i=index-1;i>=0;i--)
    {
      fr[i+1]=fr[i];
    }
    fr[0]=f;

    // set the picture number prediction correctly
    pnp=pnq;

    img->currentSlice->rmpni_buffer=r->Next;
    free (r);
    r=img->currentSlice->rmpni_buffer;
  }

  // at last init mref and mcef from temporary structure
  for (i=0;i<size;i++)
  {
    mref[i]=fr[i]->mref;
    mcef[i]=fr[i]->mcef;
  }

  // free temporary memory
  free (fr);

}

/*!
 ************************************************************************
 * \brief
 *    mark all frames except last decoded unused
 ************************************************************************
 */
void reset_buffers()
{
  int i;

  /* mark short term pictures unused */
  for (i=1;i<fb->short_used;i++)
    fb->picbuf_short[i]->used=0;
  fb->short_used=1;

  /* mark short term pictures unused */
  for (i=0;i<fb->long_used;i++)
    fb->picbuf_short[i]->used=0;
  fb->long_used=0;

}

/*!
 ************************************************************************
 * \brief
 *    calculate the short term picture ID from DPN
 ************************************************************************
 */
int get_short_ID(int DPN, ImageParameters *img)
{
  if ((img->pn-DPN)<0)
    return (img->pn-DPN+img->buf_cycle);
  else
    return (img->pn-DPN);
}

/*!
 ************************************************************************
 * \brief
 *    store reconstructed frame in multiple reference buffer
 ************************************************************************
 */
void copy2fb(ImageParameters *img)
{
  int i,j,uv;
  Frame *f;
  MMCObuffer_t *tmp_mmco;

  /* delete frames with same short term ID */
  remove_short_term(img->pn);


  /* cycle frame buffer */
  f=fb->picbuf_short[fb->short_size-1];

  for (i=fb->short_size-2;i>=0;i--)
    fb->picbuf_short[i+1]=fb->picbuf_short[i];

  fb->picbuf_short[0]=f;


  fb->picbuf_short[0]->used=1;
  fb->picbuf_short[0]->picID=img->pn;
  fb->picbuf_short[0]->lt_picID=-1;

  (fb->short_used)++;
  if (fb->short_used>fb->short_size)
    fb->short_used=fb->short_size;
  
  for (j=0; j < img->height; j++)
    for (i=0; i < img->width; i++)
      fb->picbuf_short[0]->mref[j][i]=imgY[j][i]; 
  
  for (uv=0; uv < 2; uv++)
    for (i=0; i < img->width_cr; i++)
      for (j=0; j < img->height_cr; j++)
        fb->picbuf_short[0]->mcef[uv][j][i]=imgUV[uv][j][i];// just copy 1/1 pix, interpolate "online"  


  // MMCO will be done after storing the decoded frame
  while (img->mmco_buffer)
  {
    tmp_mmco=img->mmco_buffer;
    switch (tmp_mmco->MMCO)
    {
    case 1: // Mark Short-Term Picture as "Unused"
      remove_short_term(get_short_ID(tmp_mmco->DPN,img));
      break;
    case 2: // Mark Long-Term Picture as "Unused"
      remove_long_term(tmp_mmco->LPIN);
      break;
    case 3: // Assign a Long-Term Index to a Picture
      assign_long_term_id(get_short_ID(tmp_mmco->DPN,img),tmp_mmco->LPIN,img);
      break;
    case 4: // Specify the Maximum Long-Term Picture Index
      init_long_term_buffer(tmp_mmco->MLIP1-1,img);
      break;
    case 5: // Reset
      reset_buffers();
      break;
    }

    img->mmco_buffer=tmp_mmco->Next;
    free (tmp_mmco);
  }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品第一国产综合精品aⅴ| 欧美在线短视频| 国产午夜精品一区二区三区四区| 久久国产精品一区二区| 26uuu国产在线精品一区二区| 美女高潮久久久| 337p粉嫩大胆噜噜噜噜噜91av| 国产综合色精品一区二区三区| 久久免费美女视频| 北条麻妃一区二区三区| 亚洲精选视频在线| 91.成人天堂一区| 国产一区日韩二区欧美三区| 国产精品毛片高清在线完整版| 91同城在线观看| 日本一道高清亚洲日美韩| 精品国精品国产| 国产69精品一区二区亚洲孕妇| 国产精品成人一区二区艾草| 欧美影视一区在线| 日本午夜一本久久久综合| 久久久久久久久免费| av一区二区久久| 亚洲午夜一区二区三区| www欧美成人18+| 91蜜桃网址入口| 免费人成黄页网站在线一区二区| 国产亚洲精品精华液| 一本色道a无线码一区v| 免费成人在线播放| 日韩一区日韩二区| 日韩一区二区三区在线观看| 成人福利视频在线看| 视频一区欧美日韩| 久久久91精品国产一区二区三区| 91黄视频在线| 国产精品538一区二区在线| 一级女性全黄久久生活片免费| 欧美草草影院在线视频| 91免费看`日韩一区二区| 精品午夜久久福利影院 | 日本美女一区二区| 中文字幕乱码久久午夜不卡| 欧美人与z0zoxxxx视频| 91色视频在线| 国产伦精品一区二区三区免费 | 欧美成人在线直播| 91国在线观看| 成人av手机在线观看| 美女视频黄免费的久久| 亚洲va欧美va人人爽| 中文字幕永久在线不卡| 精品国产成人系列| 7777精品久久久大香线蕉| 日本精品视频一区二区三区| 成人精品高清在线| 美女在线视频一区| 日韩国产成人精品| 亚洲一区二区av电影| 1024精品合集| 中文字幕一区二区视频| 久久亚洲精品小早川怜子| 欧美一级一区二区| 欧美日韩成人一区二区| 色婷婷久久一区二区三区麻豆| 成人美女在线观看| 成人午夜又粗又硬又大| 国产精品亚洲一区二区三区在线| 久久精品99久久久| 捆绑紧缚一区二区三区视频| 日韩电影在线一区| 爽爽淫人综合网网站| 亚洲福利视频一区| 五月天婷婷综合| 午夜免费欧美电影| 亚洲福利国产精品| 日本三级亚洲精品| 免费成人结看片| 久久国产尿小便嘘嘘尿| 久久99热99| 国产盗摄一区二区| 成人精品一区二区三区四区| 大胆欧美人体老妇| 97se亚洲国产综合在线| 91国偷自产一区二区三区观看| 一本色道亚洲精品aⅴ| 欧美午夜精品免费| 欧美久久久影院| 在线不卡一区二区| 欧美成人aa大片| 国产色婷婷亚洲99精品小说| 国产人成亚洲第一网站在线播放| 国产欧美日韩在线| 中文字幕一区二区在线观看| 伊人开心综合网| 五月天丁香久久| 麻豆一区二区99久久久久| 韩国欧美国产1区| 97久久人人超碰| 欧美日韩视频在线观看一区二区三区 | 国产精品麻豆一区二区| 亚洲精品成人精品456| 亚洲成人动漫精品| 国内成+人亚洲+欧美+综合在线| 国产乱人伦精品一区二区在线观看| 成人免费av资源| 欧美精品日韩一区| 中文字幕国产一区二区| 亚洲综合男人的天堂| 九九精品视频在线看| 成人sese在线| 欧美一区二区视频在线观看2022 | 欧美日韩黄色影视| 久久久久久久久免费| 亚洲女人小视频在线观看| 日韩一区欧美二区| 国产成人综合视频| 欧美精选午夜久久久乱码6080| 国产亚洲综合色| 亚洲国产欧美日韩另类综合 | 精品入口麻豆88视频| 国产精品理论在线观看| 日韩二区在线观看| 成人综合婷婷国产精品久久蜜臀 | 一区二区三区在线视频播放| 日韩专区在线视频| 99精品视频在线播放观看| 91麻豆精品国产自产在线 | 欧美国产精品v| 午夜精品久久久久久久| 成人性生交大合| 欧美一区二区成人6969| 亚洲色图都市小说| 国内不卡的二区三区中文字幕| 在线观看免费视频综合| 久久青草欧美一区二区三区| 一个色在线综合| 成人午夜视频免费看| 日韩一卡二卡三卡四卡| 亚洲午夜一区二区| 91视频免费观看| 欧美国产综合色视频| 青青草国产成人99久久| 色老综合老女人久久久| 久久精品人人做人人爽97| 青青青爽久久午夜综合久久午夜 | 欧美日本韩国一区二区三区视频 | 国产剧情av麻豆香蕉精品| 91精品婷婷国产综合久久性色| 亚洲乱码国产乱码精品精98午夜 | 美女视频一区在线观看| 欧美专区日韩专区| 一区二区中文字幕在线| 激情国产一区二区| 精品久久久久久久久久久久久久久久久 | 亚洲国产综合色| 91麻豆产精品久久久久久| 日本一区二区成人| 国产在线国偷精品免费看| 91精品国产欧美日韩| 亚洲chinese男男1069| 欧美亚洲图片小说| 一个色在线综合| 欧洲一区二区三区免费视频| 综合激情网...| 91免费视频观看| 亚洲综合激情网| 欧美三级中文字幕| 亚欧色一区w666天堂| 欧美群妇大交群中文字幕| 日韩成人一级大片| 日韩欧美一级二级三级| 久久99久久99| 国产亚洲欧美日韩日本| 国产99久久久国产精品免费看| 欧美韩日一区二区三区| 国产99久久精品| 成人欧美一区二区三区1314| 99re成人精品视频| 亚洲韩国精品一区| 欧美一区在线视频| 久久99热99| 国产精品免费aⅴ片在线观看| 波波电影院一区二区三区| 亚洲卡通动漫在线| 69堂精品视频| 国产在线精品不卡| 自拍视频在线观看一区二区| 色综合色狠狠天天综合色| 亚洲成人av资源| 日韩免费高清av| 国产成人免费视频一区| 亚洲精品福利视频网站| 宅男在线国产精品| 国产精品77777竹菊影视小说| 亚洲欧美在线aaa| 在线播放国产精品二区一二区四区| 久久99在线观看| 亚洲婷婷国产精品电影人久久| 欧美视频在线一区二区三区|