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

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

?? image.c

?? TML的參考源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
    }
    else {
      for (j = 0; j < BLOCK_SIZE; j++) {
        for (i = 0; i < BLOCK_SIZE; i++) {
          for (result = 0, x = -3; x < 5; x++)
            result += tmp[j][i+x+3]*COEF[dx/2][x+3];
          block2[i][j] = max(0, min(255, (result+32768)/65536));
        }
      }
    }

    average_block(block, block2);
  }
  else if ((dx == 1 || dx == 7) && (dy == 1 || dy == 7)) { /* Diagonal averaging */
    interp_block_X(ref_frame, pres_x, (y_pos+1)>>3, COEF[(dx+1)/4], max_x, max_y, block);
    interp_block_Y(ref_frame, (x_pos+1)>>3, pres_y, COEF[(dy+1)/4], max_x, max_y, block2);
    average_block(block, block2);
  }
  else if (dx == 1 || dx == 7 || dy == 1 || dy == 7) { /* Diagonal linear interpolation */

    interp_block_X(ref_frame, pres_x, (y_pos+3)>>3, COEF[1], max_x, max_y, block);
    interp_block_Y(ref_frame, (x_pos+3)>>3, pres_y, COEF[1], max_x, max_y, block2);

    if (dx == 1 || dx == 7)
      interp_block_3_1(block, block2, block);
    else
      interp_block_3_1(block, block, block2);
  }
  else { /* Diagonal interpolation using a full pixel and a center 1/2-pixel */

    for (j = -3; j < BLOCK_SIZE+5; j++) {
      for (i = 0; i < BLOCK_SIZE; i++) {
        for (tmp[i][j+3] = 0, x = -3; x < 5; x++)
          tmp[i][j+3] += mref[ref_frame][max(0,min(pres_y+j,max_y))][max(0,min(pres_x+i+x,max_x))]*COEF[1][x+3];
      }
    }

    for (j = 0; j < BLOCK_SIZE; j++) {
      for (i = 0; i < BLOCK_SIZE; i++) {
        for (result = 0, y = -3; y < 5; y++)
          result += tmp[i][j+y+3]*COEF[1][y+3];
        block[i][j] = max(0, min(255, (result+32768)/65536));
      }
    }

    get_fullpel_block(ref_frame, (x_pos+3)>>3, (y_pos+3)>>3, max_x, max_y, block2);
    interp_block_3_1(block, block, block2);
  }
}

/*!
 ************************************************************************
 * \brief
 *    Reads new slice (picture) from bit_stream
 ************************************************************************
 */
int read_new_slice(struct img_par *img, struct inp_par *inp)
{

    int current_header;
    Slice *currSlice = img->currentSlice;

    // read new slice
    current_header = currSlice->readSlice(img,inp);
    return  current_header;
}


/*!
 ************************************************************************
 * \brief
 *    Initializes the parameters for a new frame
 ************************************************************************
 */
void init_frame(struct img_par *img, struct inp_par *inp)
{
  static int first_P = TRUE;
  int i,j;


  img->current_mb_nr=0;
  img->current_slice_nr=0;

  img->mb_y = img->mb_x = 0;
  img->block_y = img->pix_y = img->pix_c_y = 0; // define vertical positions
  img->block_x = img->pix_x = img->pix_c_x = 0; // define horizontal positions

  //WYK: When entire non-B frames are lost, adjust the reference buffers
  //! TO 4.11.2001 Yes, but only for Bitstream mode! We do not loose anything in bitstream mode!
  //! Should remove this one time!
  
  if(inp->of_mode == PAR_OF_26L) //! TO 4.11.2001 just to make sure that this piece of code 
  {                              //! does not affect any other input mode where this refPicID is not supported
    j = img->refPicID-img->refPicID_old;
    if(j<0) j += 16;    // img->refPicID is 4 bit, wrapps at 15
    if(j > 1) //at least one non-B frame has been lost  
    {
      for(i=1; i<j; i++)  // j-1 non-B frames are lost
      {
        img->number++;
        copy2fb(img);
      }
    }
  }
  
  if (img->number == 0) // first picture
  {
    nextP_tr=prevP_tr=img->tr;
  }
  else if(img->type == INTRA_IMG || img->type == INTER_IMG_1 || img->type == INTER_IMG_MULT || img->type == SP_IMG_1 || img->type == SP_IMG_MULT)  // I or P pictures
  {
#ifdef _ADAPT_LAST_GROUP_
    for (i = img->buf_cycle-1; i > 0; i--)
      last_P_no[i] = last_P_no[i-1];
    last_P_no[0] = nextP_tr;
#endif
    nextP_tr=img->tr;
    
    if(first_P) // first P picture
    {
      first_P = FALSE;
      P_interval=nextP_tr-prevP_tr; //! TO 4.11.2001 we get problems here in case the first P-Frame was lost
    }
    write_prev_Pframe(img, p_out);  // imgY_prev, imgUV_prev -> file
  }
  
  if (img->type > SP_IMG_MULT)
  {
    set_ec_flag(SE_PTYPE);
    img->type = INTER_IMG_1;  // concealed element
  }

  img->max_mb_nr = (img->width * img->height) / (MB_BLOCK_SIZE * MB_BLOCK_SIZE);

  // allocate memory for frame buffers
  if (img->number == 0) 
  {
    init_frame_buffers(inp, img); 
    init_global_buffers(inp, img); 
  }

  for(i=0;i<img->width/BLOCK_SIZE+1;i++)          // set edge to -1, indicate nothing to predict from
    img->ipredmode[i+1][0]=-1;
  for(j=0;j<img->height/BLOCK_SIZE+1;j++)
    img->ipredmode[0][j+1]=-1;

  if(img->UseConstrainedIntraPred)
  {
    for (i=0; i<img->width/MB_BLOCK_SIZE*img->height/MB_BLOCK_SIZE; i++)
      img->intra_mb[i] = 1; // default 1 = intra mb
  }

  // WYK: Oct. 8, 2001. Set the slice_nr member of each MB to -1, to ensure correct when packet loss occurs
  for(i=0; i<img->max_mb_nr; i++)
    img->mb_data[i].slice_nr = -1; 

}

/*!
 ************************************************************************
 * \brief
 *    exit a frame
 ************************************************************************
 */
void exit_frame(struct img_par *img, struct inp_par *inp)
{
    if(img->type==INTRA_IMG || img->type == INTER_IMG_1 || img->type == INTER_IMG_MULT || img->type == SP_IMG_1 || img->type == SP_IMG_MULT)
        copy2fb(img);
}

/*!
 ************************************************************************
 * \brief
 *    write the encoding mode and motion vectors of current 
 *    MB to the buffer of the error concealment module.
 ************************************************************************
 */
#if _ERROR_CONCEALMENT_
void ercWriteMBMODEandMV(struct img_par *img,struct inp_par *inp)
{
  extern objectBuffer_t *erc_object_list;
  int i, ii, jj, currMBNum = img->current_mb_nr;
  int mbx = xPosMB(currMBNum,img->width), mby = yPosMB(currMBNum,img->width);
  objectBuffer_t *currRegion, *pRegion;
  Macroblock *currMB = &img->mb_data[currMBNum];

  currRegion = erc_object_list + (currMBNum<<2);

  if(img->type != B_IMG_1 && img->type != B_IMG_MULT) //non-B frame
  {
    if(currMB->intraOrInter == INTRA_MB_16x16)
    {
      for(i=0; i<4; i++)
      {
        pRegion = currRegion + i;
        pRegion->regionMode = REGMODE_INTRA;
        pRegion->mv[0] = 0;
        pRegion->mv[1] = 0;
        pRegion->mv[2] = currMB->ref_frame;
      }
    }
    else if(currMB->intraOrInter == INTRA_MB_4x4)
    {
      for(i=0; i<4; i++)
      {
        pRegion = currRegion + i;
        pRegion->regionMode = REGMODE_INTRA_8x8;
        pRegion->mv[0] = 0;
        pRegion->mv[1] = 0;
        pRegion->mv[2] = currMB->ref_frame;
      }
    }
    else //if(currMB->intraOrInter == INTER_MB)
    {
      switch(img->mb_mode)
      {
      case COPY_MB:
        for(i=0; i<4; i++)
        {
          pRegion = currRegion + i;
          pRegion->regionMode = REGMODE_INTER_COPY;
          pRegion->mv[0] = 0;
          pRegion->mv[1] = 0;
          pRegion->mv[2] = currMB->ref_frame;
        }
        break;
      case M16x16_MB:
        for(i=0; i<4; i++)
        {
          pRegion = currRegion + i;
          pRegion->regionMode = REGMODE_INTER_PRED;
          pRegion->mv[0] = img->mv[4*mbx+(i%2)*2+BLOCK_SIZE][4*mby+(i/2)*2][0];
          pRegion->mv[1] = img->mv[4*mbx+(i%2)*2+BLOCK_SIZE][4*mby+(i/2)*2][1];
          erc_mvperMB += mabs(pRegion->mv[0]) + mabs(pRegion->mv[1]);
          pRegion->mv[2] = currMB->ref_frame;
        }
        break;
      case M16x8_MB:
      case M8x16_MB:
      case M8x8_MB:
        for(i=0; i<4; i++)
        {
          pRegion = currRegion + i;
          pRegion->regionMode = REGMODE_INTER_PRED_8x8;
          pRegion->mv[0] = img->mv[4*mbx+(i%2)*2+BLOCK_SIZE][4*mby+(i/2)*2][0];
          pRegion->mv[1] = img->mv[4*mbx+(i%2)*2+BLOCK_SIZE][4*mby+(i/2)*2][1];
          erc_mvperMB += mabs(pRegion->mv[0]) + mabs(pRegion->mv[1]);
          pRegion->mv[2] = currMB->ref_frame;
        }
        break;
      case M8x4_MB:
      case M4x8_MB:
      case M4x4_MB:
        for(i=0; i<4; i++)
        {
          pRegion = currRegion + i;
          pRegion->regionMode = REGMODE_INTER_PRED_8x8;
          ii = 4*mbx + (i%2)*2 + BLOCK_SIZE; jj = 4*mby + (i/2)*2;
          pRegion->mv[0] = (img->mv[ii][jj][0] + img->mv[ii+1][jj][0] + img->mv[ii][jj+1][0] + img->mv[ii+1][jj+1][0] + 2)/4;
          pRegion->mv[1] = (img->mv[ii][jj][1] + img->mv[ii+1][jj][1] + img->mv[ii][jj+1][1] + img->mv[ii+1][jj+1][1] + 2)/4;
          erc_mvperMB += mabs(pRegion->mv[0]) + mabs(pRegion->mv[1]);
          pRegion->mv[2] = currMB->ref_frame;
        }
        break;
      default:
        snprintf(errortext, ET_SIZE, "INTER MB mode %i is not supported\n", img->mb_mode);
        error (errortext, 200);
      }
    }
  }
  else  //B-frame
  {
    if(currMB->intraOrInter == INTRA_MB_16x16)
    {
      for(i=0; i<4; i++)
      {
        pRegion = currRegion + i;
        pRegion->regionMode = REGMODE_INTRA;
        pRegion->mv[0] = 0;
        pRegion->mv[1] = 0;
        pRegion->mv[2] = currMB->ref_frame;
      }
    }
    else if(currMB->intraOrInter == INTRA_MB_4x4)
    {
      for(i=0; i<4; i++)
      {
        pRegion = currRegion + i;
        pRegion->regionMode = REGMODE_INTRA_8x8;
        pRegion->mv[0] = 0;
        pRegion->mv[1] = 0;
        pRegion->mv[2] = currMB->ref_frame;
      }
    }
    else //if(currMB->intraOrInter == INTER_MB)
    {
      switch(img->imod)
      {
      case B_Forward:
      case B_Bidirect:
        for(i=0; i<4; i++)
        {
          pRegion = currRegion + i;
          pRegion->regionMode = REGMODE_INTER_PRED_8x8;
          ii = 4*mbx + (i%2)*2 + BLOCK_SIZE; jj = 4*mby + (i/2)*2;
          pRegion->mv[0] = (img->fw_mv[ii][jj][0] + img->fw_mv[ii+1][jj][0] + img->fw_mv[ii][jj+1][0] + img->fw_mv[ii+1][jj+1][0] + 2)/4;
          pRegion->mv[1] = (img->fw_mv[ii][jj][1] + img->fw_mv[ii+1][jj][1] + img->fw_mv[ii][jj+1][1] + img->fw_mv[ii+1][jj+1][1] + 2)/4;
          erc_mvperMB += mabs(pRegion->mv[0]) + mabs(pRegion->mv[1]);
          pRegion->mv[2] = (currMB->ref_frame-1+img->buf_cycle) % img->buf_cycle; //ref_frame_fw
        }
        break;
      case B_Backward:
        for(i=0; i<4; i++)
        {
          pRegion = currRegion + i;
          pRegion->regionMode = REGMODE_INTER_PRED_8x8;
          ii = 4*mbx + (i%2)*2 + BLOCK_SIZE; jj = 4*mby + (i/2)*2;
          pRegion->mv[0] = (img->bw_mv[ii][jj][0] + img->bw_mv[ii+1][jj][0] + img->bw_mv[ii][jj+1][0] + img->bw_mv[ii+1][jj+1][0] + 2)/4;
          pRegion->mv[1] = (img->bw_mv[ii][jj][1] + img->bw_mv[ii+1][jj][1] + img->bw_mv[ii][jj+1][1] + img->bw_mv[ii+1][jj+1][1] + 2)/4;
          erc_mvperMB += mabs(pRegion->mv[0]) + mabs(pRegion->mv[1]);
          pRegion->mv[2] = 0; //ref_frame_bw
        }
        break;
      case B_Direct:
        for(i=0; i<4; i++)
        {
          pRegion = currRegion + i;
          pRegion->regionMode = REGMODE_INTER_PRED_8x8;
          ii = 4*mbx + (i%2)*2 + BLOCK_SIZE; jj = 4*mby + (i/2)*2;
          pRegion->mv[0] = (img->dbMV[ii][jj][0] + img->dbMV[ii+1][jj][0] + img->dbMV[ii][jj+1][0] + img->dbMV[ii+1][jj+1][0] + 2)/4;
          pRegion->mv[1] = (img->dbMV[ii][jj][1] + img->dbMV[ii+1][jj][1] + img->dbMV[ii][jj+1][1] + img->dbMV[ii+1][jj+1][1] + 2)/4;
          erc_mvperMB += mabs(pRegion->mv[0]) + mabs(pRegion->mv[1]);
          pRegion->mv[2] = 0; //ref_frame_bw
        }
        break;
      default:
        snprintf(errortext, ET_SIZE, "B-frame img->imod %i is not supported\n", img->imod);
        error (errortext, 200);
      }
    }

  }
}
#endif

/*!
 ************************************************************************
 * \brief
 *    decodes one slice
 ************************************************************************
 */
void decode_one_slice(struct img_par *img,struct inp_par *inp)
{

  Boolean end_of_slice = FALSE;
  int read_flag;

  img->cod_counter=-1;

  reset_ec_flags();

  while (end_of_slice == FALSE) // loop over macroblocks
  {

#if TRACE
    fprintf(p_trace,"\n*********** Pic: %i (I/P) MB: %i Slice: %i Type %d **********\n", img->tr, img->current_mb_nr, img->mb_data[img->current_mb_nr].slice_nr, img->type);
#endif

    // Initializes the current macroblock
    start_macroblock(img,inp);

    // Get the syntax elements from the NAL
    read_flag = read_one_macroblock(img,inp);

    // decode one macroblock
    switch(read_flag)
    {
    case DECODE_MB:
      decode_one_macroblock(img,inp);
      break;
    case DECODE_COPY_MB:
      decode_one_CopyMB(img,inp);
      break;
    case DECODE_MB_BFRAME:
      decode_one_macroblock_Bframe(img);
      break;
    default:
        printf("need to trigger error concealment or something here\n ");
    }

#if _ERROR_CONCEALMENT_
    ercWriteMBMODEandMV(img,inp);
#endif

    DeblockMb( img ) ;
    end_of_slice=exit_macroblock(img,inp);
  }
  reset_ec_flags();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品视频观看| 成人app在线观看| 国产99久久久国产精品| 色婷婷一区二区三区四区| 欧美一卡二卡在线观看| 国产精品久久久久一区| 久久国产精品99精品国产| 色婷婷久久综合| 国产精品欧美极品| 国产精品香蕉一区二区三区| 欧美精选在线播放| 亚洲一二三区不卡| 91丨九色丨尤物| 欧美国产综合一区二区| 麻豆精品视频在线观看视频| 欧美精品第一页| 亚洲成人一区二区| 色综合久久综合| 亚洲日本一区二区| zzijzzij亚洲日本少妇熟睡| 久久精品欧美一区二区三区不卡 | 国产欧美日韩综合| 美国精品在线观看| 欧美久久高跟鞋激| 日本中文在线一区| 日韩免费性生活视频播放| 天堂精品中文字幕在线| 欧美三级乱人伦电影| 亚洲一线二线三线久久久| 在线一区二区视频| 亚洲一区二区三区四区在线免费观看 | 亚洲丝袜另类动漫二区| 成人免费观看视频| 亚洲欧洲成人自拍| 色综合一区二区| 一区二区三区高清不卡| 91福利在线免费观看| 亚洲综合图片区| 欧美日本视频在线| 美女脱光内衣内裤视频久久网站 | 欧美另类久久久品| 日韩激情视频在线观看| 日韩一区二区三区视频| 激情图片小说一区| 国产欧美精品一区| 一本一道综合狠狠老| 午夜在线电影亚洲一区| 欧美一区二区网站| 懂色av中文一区二区三区| 中文字幕人成不卡一区| 欧美老年两性高潮| 国产一区二三区| 亚洲日本一区二区三区| 欧美精品三级日韩久久| 国产真实乱对白精彩久久| 国产精品视频一二三区| 欧美亚洲日本国产| 精品一区二区久久久| 欧美国产综合一区二区| 欧美伦理电影网| 国产乱子轮精品视频| 一区二区三区中文在线观看| 欧美一级欧美三级| 成人av在线资源网| 偷拍一区二区三区| 国产亚洲精品7777| 欧美挠脚心视频网站| 国产毛片一区二区| 亚洲国产日韩精品| 欧美国产1区2区| 欧美一区二区女人| 国产在线乱码一区二区三区| 欧美激情在线一区二区| 欧美高清视频一二三区| 成人精品视频一区| 久久精品免费观看| 一区二区三区四区在线播放| 久久久久久久综合日本| 欧美伊人久久久久久久久影院| 国产专区欧美精品| 亚洲国产精品综合小说图片区| 国产欧美中文在线| 欧美一区午夜精品| 日本韩国欧美国产| 成人黄色软件下载| 韩国精品主播一区二区在线观看| 亚洲国产综合色| 亚洲欧美日韩精品久久久久| 久久久久久久久久看片| 欧美一区二区在线不卡| 色88888久久久久久影院按摩| 国产精品一二三四| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲一区影音先锋| 亚洲人成网站在线| 国产精品麻豆一区二区| 久久精品人人爽人人爽| 精品久久久久久最新网址| 欧美酷刑日本凌虐凌虐| 欧美色图第一页| 日本久久电影网| 91色.com| 色香蕉久久蜜桃| 91搞黄在线观看| 色999日韩国产欧美一区二区| 成人国产在线观看| jlzzjlzz国产精品久久| 成人晚上爱看视频| 99久久精品国产导航| 成人av集中营| 国产mv日韩mv欧美| 成人黄页毛片网站| jvid福利写真一区二区三区| 成人国产精品免费网站| 成人97人人超碰人人99| 成人网男人的天堂| 成人高清在线视频| 色av综合在线| 欧美美女网站色| 欧美成人三级电影在线| 亚洲精品在线电影| 国产欧美日韩久久| 成人免费视频在线观看| 亚洲精品欧美专区| 午夜激情一区二区三区| 麻豆精品新av中文字幕| 国产激情视频一区二区三区欧美 | 国产不卡高清在线观看视频| 国产精品中文字幕日韩精品| 国产成人免费9x9x人网站视频| 国产九色sp调教91| 成人免费视频免费观看| 色综合亚洲欧洲| 欧美一区二区三区在| 久久免费电影网| 亚洲婷婷在线视频| 婷婷久久综合九色综合伊人色| 美女国产一区二区| 岛国精品在线观看| 欧美性猛交xxxxxxxx| 精品国产三级a在线观看| 国产精品理伦片| 亚洲第一福利一区| 国产精品一二三四区| 欧美色区777第一页| 欧美精品一区二区蜜臀亚洲| 亚洲三级电影网站| 韩国欧美一区二区| 色婷婷精品久久二区二区蜜臀av| 91麻豆精品国产91久久久使用方法 | 欧美日韩mp4| 久久久国产精品麻豆| 亚洲一区二区三区四区在线免费观看| 麻豆精品视频在线观看视频| 色哟哟亚洲精品| 久久新电视剧免费观看| 亚洲国产精品综合小说图片区| 国产精品99久久久久久有的能看 | 91同城在线观看| 日韩欧美在线一区二区三区| 亚洲欧美日本韩国| 久久狠狠亚洲综合| 欧洲视频一区二区| 中文字幕免费不卡| 国产一区二区三区免费看| 91丝袜美女网| 欧美激情一区二区三区全黄| 久久精品理论片| 欧美久久久久久久久中文字幕| 亚洲欧美一区二区在线观看| 精彩视频一区二区三区| 欧美人与性动xxxx| 亚洲视频在线一区二区| 国产大片一区二区| 欧美成人官网二区| 五月天一区二区三区| 色天天综合色天天久久| 国产精品拍天天在线| 国产成人精品在线看| 精品国产露脸精彩对白| 日本午夜一本久久久综合| 欧美日韩中文一区| 亚洲精品水蜜桃| 91麻豆123| 中文字幕在线视频一区| 国产成人精品影院| 国产午夜精品一区二区三区嫩草| 日本aⅴ免费视频一区二区三区 | 不卡在线观看av| 国产日韩欧美精品电影三级在线| 蜜桃一区二区三区四区| 51午夜精品国产| 天堂蜜桃一区二区三区| 制服丝袜亚洲精品中文字幕| 午夜日韩在线电影| 777奇米四色成人影色区| 婷婷开心久久网| 日韩视频在线永久播放| 麻豆91小视频| 久久久久国产成人精品亚洲午夜 |