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

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

?? mot_est.cpp

?? 通過源代碼詳細的介紹了VC++的用法
?? CPP
字號:
////////////////////////////////////////////////////////////////////////////
//
//
//    Project     : VideoNet version 1.1.
//    Description : Peer to Peer Video Conferencing over the LAN.
//	  Author      :	Nagareshwar Y Talekar ( nsry2002@yahoo.co.in)
//    Date        : 15-6-2004.
//
//    I have converted origional fast h.263 encoder library from C to C++ 
//	  so that it can be integrated into any windows application easily.
//	  I have removed some of unnecessary codes/files from the
//	  fast h263 library.Also moved definitions and declarations
//	  in their proper .h and .cpp files.
//
//    File description : 
//    Name    : mot_est.cpp
//
//
/////////////////////////////////////////////////////////////////////////////

/************************************************* * libr263: fast H.263 encoder library * * Copyright (C) 1996, Roalt Aalmoes, Twente University * SPA multimedia group * * Based on Telenor TMN 1.6 encoder (Copyright (C) 1995, Telenor R&D) * created by Karl Lillevold  * * Author encoder: Roalt Aalmoes, <aalmoes@huygens.nl> *  * Date: 31-07-96 **************************************************/#include "Global.h"





/* Efficient macroblock comparison op. *//* The comparison is between a non-interpolated lowres block of pixel    and a interpolated hires block of pixel. This might be confusing:   Example: compare 3x3 block with 3x3 block, then the 1s of block 1 are   compared with the 2s of block 2.   Block 1:	Block 2:	   1.1.1.	222   ......	222   1.1.1.	222   ......   1.1.1.   You see, for block one (ii), you have 4 times more data!*///inline int SAD_HalfPixelMacroblock(unsigned int *ii,//			    unsigned int *curr,//			    int pixels_on_line, int Min_SAD)int SAD_HalfPixelMacroblock(unsigned int *ii,
			    unsigned int *curr,
			    int pixels_on_line, int Min_SAD)

{  int j = 16;  int sad = 0;  while(j--) {    sad += abs(*ii-(*curr++));    ii += 2;    sad += abs(*ii-(*curr++));    ii += 2;    sad += abs(*ii-(*curr++));    ii += 2;    sad += abs(*ii- (*curr++));    ii += 2;    sad += abs(*ii-(*curr++));    ii += 2;    sad += abs(*ii-(*curr++));    ii += 2;    sad += abs(*ii-(*curr++));    ii += 2;    sad += abs(*ii-(*curr++));    ii += 2;    sad += abs(*ii-(*curr++));    ii += 2;    sad += abs(*ii-(*curr++));    ii += 2;    sad += abs(*ii-(*curr++));    ii += 2;    sad += abs(*ii-(*curr++));    ii += 2;    sad += abs(*ii-(*curr++));    ii += 2;    sad += abs(*ii-(*curr++));      ii += 2;    sad += abs(*ii-(*curr++));    ii += 2;    sad += abs(*ii-*curr);    if(sad > Min_SAD)      return INT_MAX;    ii += pixels_on_line*4 - 30;                                 /* Interpolated image, that means two times */				/* We also take only one of the two pixels */				/* This means another two times ... */    curr += pixels_on_line - 15;  } /* end while */  return sad;} /* This implementation contains two mayor algorithms: exhaustive and    logarithmic. The exhaustive algorithm was adapted to be applied on   half-pixel luminance, and the logarithmic algorithm was implemented   by Roalt Aalmoes and is functional equivalent to the one in berkeley's   MPEG encoder. */void FullMotionEstimation(unsigned int *curr, unsigned int *prev_ipol, 		     int seek_dist, MotionVector *current_MV, int x_curr, 		     int y_curr)				/*  x_curr and y_curr are whole-pixel				    values to indicate upperleft (0,0)				    pixel of this MB in whole frame curr */{  int Min_FRAME;  MotionVector MV_FRAME;  unsigned int *curr_image_MB;  int sxy,xblock,k,yblock,l;  int RightXBorder,LeftXBorder,RightYBorder,LeftYBorder;  int xmax,ymax,sad;  int CenterX, CenterY, origCenterX, origCenterY, newCenterX, newCenterY;  int StepSizeX, StepSizeY;  curr_image_MB = curr + Global::pels*y_curr + x_curr;  /* from now on, all pixel related operations are based on prev_ipol */  /* way: thus resolution is enhanced by 2 for halfpixel search */  CenterX = 2*x_curr;  CenterY = 2*y_curr;  xmax = 2*Global::pels;  ymax = 2*Global::lines;  sxy = mmin(31, seek_dist);    LeftXBorder = CenterX - sxy;  RightXBorder = CenterX + sxy;  LeftYBorder = CenterY - sxy;  RightYBorder = CenterY + sxy;  if (LeftXBorder<0) LeftXBorder = 0;  if (RightXBorder>xmax-32) RightXBorder = xmax-32;   /* Comparison is still on 16x16 blocks */  if (LeftYBorder<0) LeftYBorder = 0;		        /* but this is interleaved by 1 pixel! */  if (RightYBorder>ymax-32) RightYBorder = ymax-32;   /* e.g. comp. pixno.1 3 5 7 or 2 4 6 8 */  /*but never 1 2 3 4 as this is halfres.*/  Min_FRAME = INT_MAX;  MV_FRAME.x = 0;  MV_FRAME.y = 0;  MV_FRAME.x_half = 0;  MV_FRAME.y_half = 0;     if(Global::search_p_frames == CPARAM_EXHAUSTIVE) {    /* This is the spriral search variant of exhaustive seach */    /* First determine zero MV value SAD */    xblock = CenterX; yblock = CenterY;    sad = SAD_HalfPixelMacroblock(prev_ipol + xblock + yblock*Global::pels*2,				  curr_image_MB,				  Global::pels, Min_FRAME) - PREF_NULL_VEC;     /* I assume sad < INT_MAX  */    Min_FRAME = sad;        /* Then do the surrounding MV SADs */    for (l = 1; l <= sxy; l++) {      /* For every loop from inside to outside do */      xblock = CenterX - l;      yblock = CenterY - l;      for (k = 0; k < 8*l; k++) {	if (xblock>=LeftXBorder && xblock<=RightXBorder 	    && yblock>=LeftYBorder && yblock<=RightYBorder) {	  /* 16x16 integer pel MV */	  sad = SAD_HalfPixelMacroblock(prev_ipol + xblock + yblock*Global::pels*2,					curr_image_MB,					Global::pels, Min_FRAME); 	  if (sad < Min_FRAME) {	    MV_FRAME.x = xblock - CenterX;	    MV_FRAME.y = yblock - CenterY;	    Min_FRAME = sad;	  }	}	if      (k<2*l) xblock++;	else if (k<4*l) yblock++;	else if (k<6*l) xblock--;	else            yblock--;      }          } /* end for */  } else { /* Global::search_p_frames == DEF_LOGARITHMIC_SEARCH */        /* origCenter* is necessary because Center* changes */    origCenterX = CenterX; origCenterY = CenterY;    StepSizeX = ((2*sxy + 1) + 1)/3; /* round(Size of Xinterval / 3), 					this is maximum size of between two					probes */     StepSizeY = ((2*sxy + 1) + 1)/3; /* round(Size of Yinterval / 3) */    sad = SAD_HalfPixelMacroblock(prev_ipol + CenterX + CenterY*Global::pels*2,				  curr_image_MB,Global::pels, 				  Min_FRAME) - PREF_NULL_VEC;     /* I assume sad < INT_MAX  */    Min_FRAME = sad;     while (StepSizeX >= 1 || StepSizeY >= 1) {      newCenterX = CenterX;      newCenterY = CenterY;      /* Do this loop three times */      for(xblock = CenterX - StepSizeX; xblock <= CenterX + StepSizeX &&	    (StepSizeX != 0); xblock += StepSizeX) {	if(xblock < LeftXBorder || xblock > RightXBorder)	  continue;	/* Do this loop three times */	for(yblock = CenterY - StepSizeY; yblock <= CenterY + StepSizeY &&	      (StepSizeY != 0); yblock+= StepSizeY) {	  if(yblock < LeftYBorder || yblock > RightYBorder)	    continue;	  /* In fact, the middlest comparison is only required 	     the first time, as the last time it is calculated 	     on the previous while-loop, remember:	     NewCenterZ = zblock */	  sad = SAD_HalfPixelMacroblock(prev_ipol + xblock + yblock*Global::pels*2,					curr_image_MB,Global::pels, Min_FRAME); 	  if (sad < Min_FRAME) {	    MV_FRAME.x = xblock - origCenterX;	    MV_FRAME.y = yblock - origCenterY;	    Min_FRAME = sad;	    newCenterX = xblock; newCenterY = yblock;	  }	}	/* end for yblock */      } /* end for xblock */      if(newCenterX < CenterX) {	RightXBorder = LeftXBorder + StepSizeX - 1;      } else if(newCenterX == CenterX) {	LeftXBorder = LeftXBorder + StepSizeX;        RightXBorder = RightXBorder - StepSizeX;      } else {	LeftXBorder = RightXBorder - StepSizeX + 1;      }      if(newCenterY < CenterY) {	RightYBorder = LeftYBorder + StepSizeY - 1;      } else if(newCenterY == CenterY) {	LeftYBorder = LeftYBorder + StepSizeY;	RightYBorder = RightYBorder - StepSizeY;      } else {	LeftYBorder = RightYBorder - StepSizeY + 1;      }      CenterX = newCenterX;      CenterY = newCenterY;      /* Stepsizes are 0 when RightZBorder == LeftZBorder */      StepSizeX = ((RightXBorder - LeftXBorder + 1) + 1)/3;       /* round(Size of Xinterval / 3), this is maximum size of between two	 probes */       StepSizeY = ((RightYBorder - LeftYBorder + 1) + 1)/3;       /* round(Size of Yinterval / 3) */          } /* End while stepsize */  } /* end logarithmic search algorithm */    current_MV->x = MV_FRAME.x / 2;  current_MV->x_half = MV_FRAME.x % 2; /*This might not work for neg. values!*/  current_MV->y = MV_FRAME.y / 2;  current_MV->y_half = MV_FRAME.y % 2; /* This might not work! */  current_MV->min_error = Min_FRAME;  return;}int SAD_HalfPixelMacroblock2(unsigned int *ii,			    unsigned int *curr,			    int pixels_on_line, int Min_SAD){  int j = 16;  int sad = 0;  while(j--) {    sad += abs(*ii-(*curr));    sad += abs(*(ii + 2)-(*(curr+1)));    sad += abs(*(ii + 4)-(*(curr+2)));    sad += abs(*(ii + 6)-(*(curr+3)));    sad += abs(*(ii + 8)-(*(curr+4)));    sad += abs(*(ii + 10)-(*(curr+5)));    sad += abs(*(ii + 12)-(*(curr+6)));    sad += abs(*(ii + 14)-(*(curr+7)));    sad += abs(*(ii + 16)-(*(curr+8)));    sad += abs(*(ii + 18)-(*(curr+9)));    sad += abs(*(ii + 20)-(*(curr+10)));    sad += abs(*(ii + 22)-(*(curr+11)));    sad += abs(*(ii + 24)-(*(curr+12)));    sad += abs(*(ii + 26)-(*(curr+13)));    sad += abs(*(ii + 28)-(*(curr+14)));    sad += abs(*(ii + 30)-(*(curr+15)));    if(sad > Min_SAD)      return INT_MAX;    ii += pixels_on_line*2*2;                                 /* Interpolated image, that means two times */				/* We also take only one of the two pixels */				/* This means another two times ... */    curr += pixels_on_line;  } /* end while */  return sad;} unsigned int *LoadArea(unsigned int *im, int x, int y, 			int x_size, int y_size, int lx){  unsigned int *res = (unsigned int *)malloc(sizeof(int)*x_size*y_size);  unsigned int *in;  unsigned int *out;  int i = x_size;  int j = y_size;  in = im + (y*lx) + x;  out = res;  while (j--) {    while (i--)      *out++ = *in++;    i = x_size;    in += lx - x_size;  };  return res;}void FindMB(int x, int y, unsigned int *image, unsigned int MB[16][16]){  int n;  unsigned int *MB_ptr = &MB[0][0];  unsigned int *image_ptr;  MB_ptr = &MB[0][0];  image_ptr = image + x + y*Global::pels;#ifdef LONGISDOUBLEINT  for(n = 0; n < 16; n++) {    * (unsigned long *) MB_ptr = * (unsigned long *) image_ptr;     MB_ptr += 2; image_ptr += 2;    * (unsigned long *) MB_ptr = * (unsigned long *) image_ptr;     MB_ptr += 2; image_ptr += 2;    * (unsigned long *) MB_ptr = * (unsigned long *) image_ptr;     MB_ptr += 2; image_ptr += 2;    * (unsigned long *) MB_ptr = * (unsigned long *) image_ptr;     MB_ptr += 2; image_ptr += 2;    * (unsigned long *) MB_ptr = * (unsigned long *) image_ptr;     MB_ptr += 2; image_ptr += 2;    * (unsigned long *) MB_ptr = * (unsigned long *) image_ptr;     MB_ptr += 2; image_ptr += 2;    * (unsigned long *) MB_ptr = * (unsigned long *) image_ptr;     MB_ptr += 2; image_ptr += 2;    * (unsigned long *) MB_ptr = * (unsigned long *) image_ptr;     MB_ptr += 2; image_ptr += 2;        image_ptr += Global::pels - 16;  }#else  for (n = 0; n < 16; n++) {    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    *(unsigned int *) MB_ptr++ = *(unsigned int *) image_ptr++;    image_ptr += Global::pels - 16;  }#endif}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲黄色性网站| 欧美激情一区二区三区| 亚洲综合999| 欧美日韩一区中文字幕| 亚洲色图色小说| 91丨porny丨国产入口| 亚洲日本va午夜在线电影| 色先锋aa成人| 亚洲在线视频免费观看| 欧美精品日韩一本| 奇米一区二区三区| 久久在线观看免费| 国产不卡视频在线播放| 亚洲摸摸操操av| 正在播放亚洲一区| 国产精品自拍三区| 亚洲精品国产视频| 制服丝袜亚洲播放| 成人久久视频在线观看| 一区二区日韩av| 精品日韩一区二区三区| eeuss影院一区二区三区 | 国产激情精品久久久第一区二区| 亚洲国产激情av| 欧美影院一区二区三区| 国产又黄又大久久| 亚洲女人的天堂| 日韩欧美国产不卡| 99久久精品免费看国产免费软件| 午夜激情久久久| 国产亚洲一二三区| 欧美日韩一二三| 福利一区在线观看| 午夜精品在线视频一区| 国产欧美久久久精品影院| 欧美亚洲愉拍一区二区| 国产馆精品极品| 午夜a成v人精品| 国产精品午夜在线观看| 欧美久久一二三四区| k8久久久一区二区三区| 美女看a上一区| 亚洲激情图片一区| 久久久不卡网国产精品二区| 欧美日韩视频在线一区二区| 福利电影一区二区三区| 美女视频一区在线观看| 亚洲男同性恋视频| 日韩一级二级三级精品视频| 色国产综合视频| 国产盗摄视频一区二区三区| 日本vs亚洲vs韩国一区三区| 日韩久久一区二区| 亚洲午夜三级在线| 日本一区二区三区免费乱视频 | 亚洲一区二区三区不卡国产欧美| 国产日韩欧美高清| 91精品国产麻豆| 91久久精品日日躁夜夜躁欧美| 国产成人一区在线| 加勒比av一区二区| 老司机精品视频导航| 亚洲一区二区三区四区不卡| 亚洲欧美色图小说| 亚洲欧美综合色| 国产精品妹子av| 国产亚洲一区字幕| 久久久精品2019中文字幕之3| 日韩欧美一级在线播放| 日韩一区二区三区四区 | 日韩欧美一二三四区| 欧美日韩高清一区二区不卡| 欧美日韩中文精品| 在线欧美一区二区| 欧美曰成人黄网| 欧美图片一区二区三区| 欧美视频中文字幕| 欧美私人免费视频| 欧美久久一二区| 日韩一区二区免费在线电影 | 久久久夜色精品亚洲| 精品免费99久久| 久久美女高清视频| 国产亚洲精品精华液| 欧美激情中文字幕一区二区| 国产精品国产三级国产普通话99 | 色哟哟欧美精品| 欧美性色综合网| 在线不卡欧美精品一区二区三区| 3d动漫精品啪啪一区二区竹菊| 777欧美精品| 精品精品欲导航| 国产嫩草影院久久久久| 亚洲第一会所有码转帖| 天天影视网天天综合色在线播放 | 亚洲一区二区三区四区在线观看| 午夜成人在线视频| 韩国中文字幕2020精品| 成人网在线免费视频| 色婷婷久久一区二区三区麻豆| 欧洲色大大久久| 欧美一级艳片视频免费观看| 久久精品人人做人人爽人人| 亚洲人午夜精品天堂一二香蕉| 一个色在线综合| 久久精品国产99国产精品| 国产成人精品免费看| 在线观看日韩精品| 精品国产伦一区二区三区免费| 欧美国产日韩在线观看| 亚洲国产精品一区二区久久| 国产一区欧美一区| 色综合天天综合网国产成人综合天| 欧美乱妇20p| 国产精品三级av在线播放| 亚洲图片自拍偷拍| 国产99久久久久久免费看农村| 色欧美乱欧美15图片| 精品久久久久久久人人人人传媒 | 欧美国产激情二区三区| 亚洲一区av在线| 国产精品综合一区二区| 91福利社在线观看| 精品国产区一区| 一区二区三区蜜桃网| 国内精品第一页| 一道本成人在线| 欧美精品一区男女天堂| 亚洲一区二区三区国产| 国产成人精品一区二区三区四区| 欧美在线999| 国产精品热久久久久夜色精品三区| 亚洲成人手机在线| 99久久婷婷国产精品综合| 欧美电影一区二区三区| 中文一区一区三区高中清不卡| 日韩电影免费在线| 日本精品免费观看高清观看| 国产午夜精品久久久久久久| 久久国产精品一区二区| 欧美三级三级三级| 亚洲女子a中天字幕| 国产成人精品综合在线观看| 日韩一区二区三区电影 | 色噜噜偷拍精品综合在线| 精品成人在线观看| 蜜臀久久久久久久| 欧美午夜精品久久久久久超碰| 亚洲婷婷综合久久一本伊一区| 国产成人精品一区二区三区网站观看| 日韩一区二区免费电影| 午夜伦理一区二区| 欧美日韩一区 二区 三区 久久精品| 国产精品伦理一区二区| 国产91精品露脸国语对白| 久久嫩草精品久久久精品| 精品一区精品二区高清| 欧美大白屁股肥臀xxxxxx| 天天做天天摸天天爽国产一区| 欧美性猛交xxxxxx富婆| 一区二区免费看| 色噜噜狠狠一区二区三区果冻| 亚洲色大成网站www久久九九| 色老头久久综合| 欧美国产97人人爽人人喊| 国产精品欧美综合在线| 国产日韩欧美一区二区三区乱码 | 日本一二三不卡| 国产婷婷色一区二区三区四区| 欧美中文字幕一区| 日韩精品中文字幕在线一区| 国产精品色在线| 国产91精品露脸国语对白| 国产区在线观看成人精品| 国产精品影视网| 国产午夜精品在线观看| www.日韩大片| 伊人一区二区三区| 欧美这里有精品| 丝袜国产日韩另类美女| 欧美成人一区二区| 国产综合久久久久久久久久久久| 久久久蜜桃精品| a4yy欧美一区二区三区| 一区二区三区日韩精品视频| 欧美日韩专区在线| 丝袜美腿亚洲一区| 久久综合狠狠综合久久综合88| 国产在线看一区| 国产精品国产三级国产有无不卡 | 亚洲精品视频一区二区| 欧美在线小视频| 免费在线成人网| 国产日韩欧美在线一区| 色综合色综合色综合| 日本中文字幕一区二区视频 | 91精品国产一区二区人妖| 久久精品久久99精品久久| 日本一区二区在线不卡| 在线亚洲一区观看|