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

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

?? mv-search.c

?? h.264官方測試軟件
?? C
?? 第 1 頁 / 共 5 頁
字號:
  search_center_x[list][ref] += img->opix_x;
  search_center_y[list][ref] += img->opix_y;
  
  offset_x = search_center_x[list][ref];
  offset_y = search_center_y[list][ref];
  
  //===== copy original block for fast access =====
  for   (y = img->opix_y; y < img->opix_y+16; y++)
    for (x = img->opix_x; x < img->opix_x+16; x++)
      *orgptr++ = imgY_org [y][x];


  //===== check if whole search range is inside image =====
  if (offset_x >= search_range && offset_x <= max_width  - search_range &&
      offset_y >= search_range && offset_y <= max_height - search_range   )
  {
    range_partly_outside = 0; PelYline_11 = FastLine16Y_11;
  }
  else
  {
    range_partly_outside = 1;
  }

  //===== determine position of (0,0)-vector =====
  if (!input->rdopt)
  {
    ref_x = img->opix_x - offset_x;
    ref_y = img->opix_y - offset_y;

    for (pos = 0; pos < max_pos; pos++)
    {
      if (ref_x == spiral_search_x[pos] &&
          ref_y == spiral_search_y[pos])
      {
        pos_00[list][ref] = pos;
        break;
      }
    }
  }

  //===== loop over search range (spiral search): get blockwise SAD =====
  for (pos = 0; pos < max_pos; pos++)
  {
    abs_y = offset_y + spiral_search_y[pos];
    abs_x = offset_x + spiral_search_x[pos];

    if (range_partly_outside)
    {
      if (abs_y >= 0 && abs_y <= max_height &&
          abs_x >= 0 && abs_x <= max_width    )
      {
        PelYline_11 = FastLine16Y_11;
      }
      else
      {
        PelYline_11 = UMVLine16Y_11;
      }
    }

    orgptr = orig_blocks;
    bindex = 0;
    for (blky = 0; blky < 4; blky++)
    {
      LineSadBlk0 = LineSadBlk1 = LineSadBlk2 = LineSadBlk3 = 0;
      for (y = 0; y < 4; y++)
      {
        refptr = PelYline_11 (ref_pic, abs_y++, abs_x, img_height, img_width);

        LineSadBlk0 += byte_abs [*refptr++ - *orgptr++];
        LineSadBlk0 += byte_abs [*refptr++ - *orgptr++];
        LineSadBlk0 += byte_abs [*refptr++ - *orgptr++];
        LineSadBlk0 += byte_abs [*refptr++ - *orgptr++];
        LineSadBlk1 += byte_abs [*refptr++ - *orgptr++];
        LineSadBlk1 += byte_abs [*refptr++ - *orgptr++];
        LineSadBlk1 += byte_abs [*refptr++ - *orgptr++];
        LineSadBlk1 += byte_abs [*refptr++ - *orgptr++];
        LineSadBlk2 += byte_abs [*refptr++ - *orgptr++];
        LineSadBlk2 += byte_abs [*refptr++ - *orgptr++];
        LineSadBlk2 += byte_abs [*refptr++ - *orgptr++];
        LineSadBlk2 += byte_abs [*refptr++ - *orgptr++];
        LineSadBlk3 += byte_abs [*refptr++ - *orgptr++];
        LineSadBlk3 += byte_abs [*refptr++ - *orgptr++];
        LineSadBlk3 += byte_abs [*refptr++ - *orgptr++];
        LineSadBlk3 += byte_abs [*refptr++ - *orgptr++];
      }
      block_sad[bindex++][pos] = LineSadBlk0;
      block_sad[bindex++][pos] = LineSadBlk1;
      block_sad[bindex++][pos] = LineSadBlk2;
      block_sad[bindex++][pos] = LineSadBlk3;
    }
  }


  //===== combine SAD's for larger block types =====
  SetupLargerBlocks (list, ref, max_pos);

  //===== set flag marking that search setup have been done =====
  search_setup_done[list][ref] = 1;
}
#endif // _FAST_FULL_ME_

/*!
 ************************************************************************
 * \brief
 *    Set motion vector predictor
 ************************************************************************
 */
void SetMotionVectorPredictor (short  pmv[2],
                               char   **refPic,
                               short  ***tmp_mv,
                               short  ref_frame,
                               int    list,
                               int    block_x,
                               int    block_y,
                               int    blockshape_x,
                               int    blockshape_y)
{
  int mb_x                 = 4*block_x;
  int mb_y                 = 4*block_y;
  int mb_nr                = img->current_mb_nr;
  
  int mv_a, mv_b, mv_c, pred_vec=0;
  int mvPredType, rFrameL, rFrameU, rFrameUR;
  int hv;
  
  PixelPos block_a, block_b, block_c, block_d;
  
  int SAD_a=0, SAD_b=0, SAD_c=0, SAD_d=0;
  int temp_pred_SAD[2];

  int fastme_sp_enable=(input->FMEnable==1 && (ref_frame<=0) && (FME_blocktype==1));
  if (fastme_sp_enable) 
    pred_SAD_space=0;
 
  getLuma4x4Neighbour(mb_nr, block_x, block_y,           -1,  0, &block_a);
  getLuma4x4Neighbour(mb_nr, block_x, block_y,            0, -1, &block_b);
  getLuma4x4Neighbour(mb_nr, block_x, block_y, blockshape_x, -1, &block_c);
  getLuma4x4Neighbour(mb_nr, block_x, block_y,           -1, -1, &block_d);
  
  if (mb_y > 0)
  {
    if (mb_x < 8)  // first column of 8x8 blocks
    {
      if (mb_y==8)
      {
        if (blockshape_x == 16)      block_c.available  = 0;
      }
      else
      {
        if (mb_x+blockshape_x == 8)  block_c.available = 0;
      }
    }
    else
    {
      if (mb_x+blockshape_x == 16)   block_c.available = 0;
    }
  }
  
  if (!block_c.available)
  {
    block_c=block_d;
  }
  
  mvPredType = MVPRED_MEDIAN;
  
  if (!img->MbaffFrameFlag)
  {
    rFrameL    = block_a.available    ? refPic[block_a.pos_y][block_a.pos_x] : -1;
    rFrameU    = block_b.available    ? refPic[block_b.pos_y][block_b.pos_x] : -1;
    rFrameUR   = block_c.available    ? refPic[block_c.pos_y][block_c.pos_x] : -1;
  }
  else
  {
    if (img->mb_data[img->current_mb_nr].mb_field)
    {
      rFrameL    = block_a.available    ? 
        img->mb_data[block_a.mb_addr].mb_field ? 
        refPic[block_a.pos_y][block_a.pos_x]:
        refPic[block_a.pos_y][block_a.pos_x] * 2: 
        -1;
      rFrameU    = block_b.available    ? 
        img->mb_data[block_b.mb_addr].mb_field ? 
        refPic[block_b.pos_y][block_b.pos_x]:
        refPic[block_b.pos_y][block_b.pos_x] * 2: 
        -1;
      rFrameUR    = block_c.available    ? 
        img->mb_data[block_c.mb_addr].mb_field ? 
        refPic[block_c.pos_y][block_c.pos_x]:
        refPic[block_c.pos_y][block_c.pos_x] * 2: 
        -1;
    }
    else
    {
      rFrameL    = block_a.available    ? 
        img->mb_data[block_a.mb_addr].mb_field ? 
        refPic[block_a.pos_y][block_a.pos_x] >>1:
        refPic[block_a.pos_y][block_a.pos_x] : 
        -1;
      rFrameU    = block_b.available    ? 
        img->mb_data[block_b.mb_addr].mb_field ? 
        refPic[block_b.pos_y][block_b.pos_x] >>1:
        refPic[block_b.pos_y][block_b.pos_x] : 
        -1;
      rFrameUR    = block_c.available    ? 
        img->mb_data[block_c.mb_addr].mb_field ? 
        refPic[block_c.pos_y][block_c.pos_x] >>1:
        refPic[block_c.pos_y][block_c.pos_x] : 
        -1;
    }
  }
  
  /* Prediction if only one of the neighbors uses the reference frame
   * we are checking
   */
  if(rFrameL == ref_frame && rFrameU != ref_frame && rFrameUR != ref_frame)       mvPredType = MVPRED_L;
  else if(rFrameL != ref_frame && rFrameU == ref_frame && rFrameUR != ref_frame)  mvPredType = MVPRED_U;
  else if(rFrameL != ref_frame && rFrameU != ref_frame && rFrameUR == ref_frame)  mvPredType = MVPRED_UR;
  // Directional predictions 
  if(blockshape_x == 8 && blockshape_y == 16)
  {
    if(mb_x == 0)
    {
      if(rFrameL == ref_frame)
        mvPredType = MVPRED_L;
    }
    else
    {
      if( rFrameUR == ref_frame)
        mvPredType = MVPRED_UR;
    }
  }
  else if(blockshape_x == 16 && blockshape_y == 8)
  {
    if(mb_y == 0)
    {
      if(rFrameU == ref_frame)
        mvPredType = MVPRED_U;
    }
    else
    {
      if(rFrameL == ref_frame)
        mvPredType = MVPRED_L;
    }
  }
  
  for (hv=0; hv < 2; hv++)
  {
    if (!img->MbaffFrameFlag || hv==0)
    {
      mv_a = block_a.available  ? tmp_mv[block_a.pos_y][block_a.pos_x][hv] : 0;
      mv_b = block_b.available  ? tmp_mv[block_b.pos_y][block_b.pos_x][hv] : 0;
      mv_c = block_c.available  ? tmp_mv[block_c.pos_y][block_c.pos_x][hv] : 0;
    }
    else
    {
      if (img->mb_data[img->current_mb_nr].mb_field)
      {
        mv_a = block_a.available  ? img->mb_data[block_a.mb_addr].mb_field
          ? tmp_mv[block_a.pos_y][block_a.pos_x][hv]
          : tmp_mv[block_a.pos_y][block_a.pos_x][hv] / 2
          : 0;
        mv_b = block_b.available  ? img->mb_data[block_b.mb_addr].mb_field
          ? tmp_mv[block_b.pos_y][block_b.pos_x][hv]
          : tmp_mv[block_b.pos_y][block_b.pos_x][hv] / 2
          : 0;
        mv_c = block_c.available  ? img->mb_data[block_c.mb_addr].mb_field
          ? tmp_mv[block_c.pos_y][block_c.pos_x][hv]
          : tmp_mv[block_c.pos_y][block_c.pos_x][hv] / 2
          : 0;
      }
      else
      {
        mv_a = block_a.available  ? img->mb_data[block_a.mb_addr].mb_field
          ? tmp_mv[block_a.pos_y][block_a.pos_x][hv] * 2
          : tmp_mv[block_a.pos_y][block_a.pos_x][hv]
          : 0;
        mv_b = block_b.available  ? img->mb_data[block_b.mb_addr].mb_field
          ? tmp_mv[block_b.pos_y][block_b.pos_x][hv] * 2
          : tmp_mv[block_b.pos_y][block_b.pos_x][hv]
          : 0;
        mv_c = block_c.available  ? img->mb_data[block_c.mb_addr].mb_field
          ? tmp_mv[block_c.pos_y][block_c.pos_x][hv] * 2
          : tmp_mv[block_c.pos_y][block_c.pos_x][hv]
          : 0;
      }
    }
    
    if(fastme_sp_enable)
    {
      SAD_a = block_a.available ? ((list==1) ? (fastme_l1_cost[FME_blocktype][block_a.pos_y][block_a.pos_x]) : (fastme_l0_cost[FME_blocktype][block_a.pos_y][block_a.pos_x])) : 0;
      SAD_b = block_b.available ? ((list==1) ? (fastme_l1_cost[FME_blocktype][block_b.pos_y][block_b.pos_x]) : (fastme_l0_cost[FME_blocktype][block_b.pos_y][block_b.pos_x])) : 0;
      SAD_d = block_d.available ? ((list==1) ? (fastme_l1_cost[FME_blocktype][block_d.pos_y][block_d.pos_x]) : (fastme_l0_cost[FME_blocktype][block_d.pos_y][block_d.pos_x])) : 0;
      SAD_c = block_c.available ? ((list==1) ? (fastme_l1_cost[FME_blocktype][block_c.pos_y][block_c.pos_x]) : (fastme_l0_cost[FME_blocktype][block_c.pos_y][block_c.pos_x])) : SAD_d;
    }
    
    switch (mvPredType)
    {
    case MVPRED_MEDIAN:
      if(!(block_b.available || block_c.available))
      {
        pred_vec = mv_a;
        if(fastme_sp_enable) temp_pred_SAD[hv] = SAD_a;
      }
      else
      {
        pred_vec = mv_a+mv_b+mv_c-min(mv_a,min(mv_b,mv_c))-max(mv_a,max(mv_b,mv_c));
      }
      if(fastme_sp_enable)
      {
        if (pred_vec == mv_a && SAD_a != 0) temp_pred_SAD[hv] = SAD_a;
        else if (pred_vec == mv_b && SAD_b!=0) temp_pred_SAD[hv] = SAD_b;
        else temp_pred_SAD[hv] = SAD_c;
      }
      break;
    case MVPRED_L:
      pred_vec = mv_a;
      if(fastme_sp_enable) temp_pred_SAD[hv] = SAD_a;
      break;
    case MVPRED_U:
      pred_vec = mv_b;
      if(fastme_sp_enable) temp_pred_SAD[hv] = SAD_b;
      break;
    case MVPRED_UR:
      pred_vec = mv_c;
      if(fastme_sp_enable) temp_pred_SAD[hv] = SAD_c;
      break;
    default:
      break;
    }
    
    pmv[hv] = pred_vec;
    
  }
  
  if(fastme_sp_enable) pred_SAD_space = temp_pred_SAD[0]>temp_pred_SAD[1]?temp_pred_SAD[1]:temp_pred_SAD[0];
}

/*!
************************************************************************
* \brief
*    Initialize the motion search
************************************************************************
*/
void
Init_Motion_Search_Module ()
{
  int bits, i, imin, imax, k, l;
  
  int search_range               = input->search_range;
  int max_search_points          = max(9, (2*search_range+1)*(2*search_range+1));
  int max_ref_bits               = 1 + 2 * (int)floor(log(max(16,img->max_num_references+1)) / log(2) + 1e-10);
  int max_ref                    = (1<<((max_ref_bits>>1)+1))-1;
  int number_of_subpel_positions = 4 * (2*search_range+3);
  int max_mv_bits                = 3 + 2 * (int)ceil (log(number_of_subpel_positions+1) / log(2) + 1e-10);
  max_mvd                        = (1<<( max_mv_bits >>1)   )-1;
  byte_abs_range                 = (img->max_imgpel_value > img->max_imgpel_value_uv) ? (img->max_imgpel_value + 1) * 64 : (img->max_imgpel_value_uv + 1) * 64;
  
  
  //=====   CREATE ARRAYS   =====
  //-----------------------------
  if ((spiral_search_x = (short*)calloc(max_search_points, sizeof(short))) == NULL)
    no_mem_exit("Init_Motion_Search_Module: spiral_search_x");
  if ((spiral_search_y = (short*)calloc(max_search_points, sizeof(short))) == NULL)
    no_mem_exit("Init_Motion_Search_Module: spiral_search_y");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品麻豆| 国产成人aaa| 欧美一级专区免费大片| 视频在线观看一区二区三区| 欧美日韩精品免费| 日本一区中文字幕| 精品国产欧美一区二区| 成人午夜激情片| 亚洲精选视频免费看| 欧美人妖巨大在线| 国产在线精品免费| 亚洲欧洲av另类| 欧美日韩视频在线观看一区二区三区 | 欧洲色大大久久| 亚洲超丰满肉感bbw| 日韩欧美电影一区| 成人91在线观看| 五月综合激情网| 久久婷婷一区二区三区| 99久久免费精品| 日韩高清不卡在线| 国产日韩欧美激情| 色欧美乱欧美15图片| 美国十次了思思久久精品导航| 国产午夜亚洲精品羞羞网站| 在线亚洲一区二区| 久久99精品网久久| 国产精品毛片久久久久久久| 欧美蜜桃一区二区三区| 国产一区二区三区免费| 一区二区三区四区在线播放| 欧美一二三在线| 99久久精品久久久久久清纯| 日韩国产欧美在线视频| 中文天堂在线一区| 欧美一区二区三区在线| 成人妖精视频yjsp地址| 日本成人在线视频网站| 中文字幕日本乱码精品影院| 日韩一区二区三区观看| 99re6这里只有精品视频在线观看| 天涯成人国产亚洲精品一区av| 国产亚洲女人久久久久毛片| 91福利小视频| 国产91富婆露脸刺激对白| 午夜精品福利一区二区三区av | 欧美日韩在线三级| 国产精品88av| 日本va欧美va瓶| 亚洲你懂的在线视频| 久久久噜噜噜久久人人看| 欧美一a一片一级一片| 成人网页在线观看| 精品一区二区三区在线观看| 亚洲综合自拍偷拍| 国产精品国产成人国产三级 | 欧美视频在线观看一区| 不卡欧美aaaaa| 精品一区二区在线视频| 日本亚洲电影天堂| 一区二区三区国产精品| 国产精品天美传媒| 久久女同精品一区二区| 欧美一级夜夜爽| 欧美喷潮久久久xxxxx| 91社区在线播放| 丁香激情综合五月| 国产精品综合久久| 国产在线一区二区综合免费视频| 日韩综合小视频| 午夜精品福利一区二区三区av| 亚洲精品成人在线| 亚洲欧美日韩国产综合| 亚洲欧洲99久久| 综合中文字幕亚洲| 国产精品九色蝌蚪自拍| 欧美激情在线免费观看| 国产免费观看久久| 国产偷国产偷精品高清尤物| 久久午夜电影网| 26uuu国产一区二区三区| 精品日韩一区二区| 欧美精品一区二区三区一线天视频| 51精品久久久久久久蜜臀| 欧美精品v日韩精品v韩国精品v| 欧美在线观看视频在线| 欧美日韩国产综合一区二区 | 欧美群妇大交群中文字幕| 欧美日韩国产综合一区二区 | 国产伦精品一区二区三区免费 | 日韩欧美美女一区二区三区| 日韩区在线观看| 精品黑人一区二区三区久久 | 日韩午夜精品视频| 精品少妇一区二区三区视频免付费 | 久久91精品国产91久久小草| 狠狠色丁香久久婷婷综合_中| 激情偷乱视频一区二区三区| 国产精品77777竹菊影视小说| proumb性欧美在线观看| 91久久精品一区二区| 欧美二区三区91| 欧美成人一区二区三区片免费| 久久奇米777| 中文字幕字幕中文在线中不卡视频| 一区二区三区在线高清| 天天综合天天综合色| 精品一区二区三区在线视频| av在线这里只有精品| 欧美日韩国产高清一区二区三区| 欧美一级黄色片| 国产精品久久午夜夜伦鲁鲁| 亚洲乱码国产乱码精品精小说| 五月天亚洲婷婷| 国产成人精品免费网站| 欧美综合一区二区| 精品sm捆绑视频| 亚洲人成人一区二区在线观看| 午夜精品一区在线观看| 国产精品资源在线| 欧美少妇xxx| 久久久国际精品| 亚洲一区二区中文在线| 激情图片小说一区| 欧美日韩视频不卡| 国产精品久久久久影院亚瑟| 全部av―极品视觉盛宴亚洲| av一二三不卡影片| 日韩一级在线观看| 一区二区三区精品| 国产大陆精品国产| 欧美久久高跟鞋激| 亚洲视频图片小说| 久久99精品国产| 欧美视频一区二区在线观看| 国产精品国产三级国产普通话三级| 视频一区视频二区在线观看| gogogo免费视频观看亚洲一| 日韩欧美成人午夜| 亚洲成人精品在线观看| av中文一区二区三区| 久久久精品tv| 美腿丝袜在线亚洲一区 | 久久精品国产77777蜜臀| 91免费观看在线| 国产欧美日韩久久| 久久99国产精品久久99| 欧美精品在线观看播放| 亚洲精品视频免费看| 国产成人精品影视| 精品国产一区二区三区忘忧草| 亚洲电影第三页| 在线看一区二区| 亚洲免费观看高清完整版在线观看熊 | 一区二区三区美女| 成人精品亚洲人成在线| 欧美精品一区二区在线播放| 蜜臀av一区二区在线免费观看| 欧美性极品少妇| 亚洲乱码中文字幕综合| 99re视频这里只有精品| 国产精品女主播在线观看| 国产福利一区二区三区视频| 精品久久久影院| 久久99精品国产麻豆婷婷洗澡| 日韩一区二区三区视频在线| 午夜影院久久久| 欧美高清www午色夜在线视频| 亚洲午夜激情av| 91精彩视频在线| 亚洲永久免费视频| 欧美日韩久久久一区| 午夜日韩在线电影| 欧美老人xxxx18| 日韩不卡一二三区| 欧美电影免费观看高清完整版 | 91精品国产一区二区人妖| 亚洲成a人在线观看| 欧美日韩在线播放一区| 视频在线观看一区| 精品久久久久香蕉网| 懂色av噜噜一区二区三区av| 国产精品免费视频观看| av亚洲精华国产精华精| 一区二区三区高清不卡| 欧美精品久久久久久久多人混战 | 91精品国产91综合久久蜜臀| 免费成人你懂的| 久久综合av免费| 成人国产免费视频| 亚洲精品中文字幕乱码三区| 精品1区2区3区| 国产综合色精品一区二区三区| 久久综合给合久久狠狠狠97色69| 成人美女视频在线看| 一区二区三区日韩| 日韩欧美在线一区二区三区| 国产电影一区二区三区| 1区2区3区欧美| 91精品国产一区二区三区|