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

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

?? mot_est_comp.c

?? < VC++視頻音頻開發>> 這本書的源碼
?? C
字號:
#include "vm_common_defs.h"
#include "mom_util.h"
#include "mot_util.h"
#include "mot_est_mb.h"
extern FILE *ftrace;
static Int roundtab16[] = {0,0,0,1,1,1,1,1,1,1,1,1,1,1,2,2};
Void  	MotionEstCompPicture (	
			SInt *curr,
			SInt *prev,
			SInt *prev_ipol_y,
			SInt *prev_ipol_u,
			SInt *prev_ipol_v,
			Int prev_x,
			Int prev_y,
			Int vop_width,
			Int vop_height,
			Int enable_8x8_mv,
			Int edge,
			Int sr_for,
			Int f_code,
			Int rounding_type,
			Int br_x,
			Int br_y,
			Int br_width,
			Int br_height,
			SInt *curr_comp_y,
			SInt *curr_comp_u,
			SInt *curr_comp_v,
			Float *mad,
			Float *mv16_w,
			Float *mv16_h,
			Float *mv8_w,
			Float *mv8_h,
			SInt *mode16
	);
Void GetPred_Chroma (
			Int x_curr,
			Int y_curr,
			Int dx,
			Int dy,
			SInt *prev_u,
			SInt *prev_v,
			SInt *comp_u,
			SInt *comp_v,
			Int width,
			Int width_prev,
			Int prev_x_min,
			Int prev_y_min,
			Int prev_x_max,
			Int prev_y_max,
			Int rounding_control
	);
Void
MotionEstimationCompensation (
Vop    *curr_vop,								  
Vop    *prev_rec_vop,							  
Int    enable_8x8_mv,							  
Int    edge,									  
Int    f_code,									  
Vop    *curr_comp_vop,							  
Float  *mad,									  
Image  **mot_x,									  
Image  **mot_y,									  
Image  **mode									  
)
{
	Image   *pr_rec_y;							  
	Image   *pi_y;								  
	Image   *mode16;
	Image   *mv16_w;
	Image   *mv16_h;
	Image   *mv8_w;
	Image   *mv8_h;
	SInt    *prev_ipol_y,						  
			*prev_orig_y;						  
	Int     vop_width, vop_height;
	Int     br_x;
	Int     br_y;
	Int     br_height;
	Int     br_width;
	Int     mv_h, mv_w;
	
	br_y=curr_vop->ver_spat_ref;
	br_x=curr_vop->hor_spat_ref;
	br_height=curr_vop->height;
	br_width=curr_vop->width;
	mv_h=br_height/MB_SIZE;
	mv_w=br_width/MB_SIZE;
	
	vop_width=prev_rec_vop->width;
	vop_height=prev_rec_vop->height;
	
	pr_rec_y = prev_rec_vop->y_chan;
	prev_orig_y = (SInt*)GetImageData(pr_rec_y);
	pi_y = AllocImage (2*vop_width, 2*vop_height, SHORT_TYPE);
	InterpolateImage(pr_rec_y, pi_y, GetVopRoundingType(curr_vop));
	prev_ipol_y = (SInt*)GetImageData(pi_y);
	
	mode16=AllocImage (mv_w,mv_h,SHORT_TYPE);
	SetConstantImage (mode16,(Float)MBM_INTRA);
	
	mv16_w=AllocImage (mv_w*2,mv_h*2,FLOAT_TYPE);
	mv16_h=AllocImage (mv_w*2,mv_h*2,FLOAT_TYPE);
	mv8_w =AllocImage (mv_w*2,mv_h*2,FLOAT_TYPE);
	mv8_h =AllocImage (mv_w*2,mv_h*2,FLOAT_TYPE);
	SetConstantImage (mv16_h,+0.0);
	SetConstantImage (mv16_w,+0.0);
	SetConstantImage (mv8_h,+0.0);
	SetConstantImage (mv8_w,+0.0);
	SetConstantImage (curr_comp_vop->u_chan, 0);
	SetConstantImage (curr_comp_vop->v_chan, 0);
	
	MotionEstCompPicture(
		(SInt *)GetImageData(GetVopY(curr_vop)), 
		prev_orig_y,							  
		prev_ipol_y,							  
		(SInt*)GetImageData(prev_rec_vop->u_chan) + (vop_width/2) * (16/2) + (16/2),
		(SInt*)GetImageData(prev_rec_vop->v_chan) + (vop_width/2) * (16/2) + (16/2),
		prev_rec_vop->hor_spat_ref,
		prev_rec_vop->ver_spat_ref,
		vop_width,vop_height,
		enable_8x8_mv,
		edge,
		GetVopSearchRangeFor(curr_vop), 
		f_code,
		GetVopRoundingType(curr_vop),
		br_x,br_y,								  
		br_width,br_height,						  
		(SInt*)GetImageData(curr_comp_vop->y_chan),
		(SInt*)GetImageData(curr_comp_vop->u_chan),
		(SInt*)GetImageData(curr_comp_vop->v_chan),
		mad,
		(Float*)GetImageData(mv16_w),
		(Float*)GetImageData(mv16_h),
		(Float*)GetImageData(mv8_w),
		(Float*)GetImageData(mv8_h),
		(SInt*) GetImageData(mode16)
		);
	
	GetMotionImages(mv16_w, mv16_h, mv8_w, mv8_h, mode16, mot_x, mot_y, mode);
	
	FreeImage(mv16_w); FreeImage(mv16_h);
	FreeImage(mv8_w);  FreeImage(mv8_h);
	FreeImage(mode16);
	FreeImage(pi_y);
}
Void
MotionEstCompPicture(
SInt    *curr,									  
SInt    *prev,									  
SInt    *prev_ipol,								  
SInt    *prev_u,								  
SInt    *prev_v,								  
Int     prev_x,									  
Int     prev_y,									  
Int     vop_width,								  
Int     vop_height,								  
Int     enable_8x8_mv,							  
Int     edge,									  
Int		sr_for,									  
Int     f_code,          /* <-- MV search range 1/2 or 1/4 pel: 1=32,2=64,...,7=2048*/
Int		rounding_type,							  
Int     br_x,									  
Int     br_y,									  
Int     br_width,								  
Int     br_height,								  
SInt	*curr_comp_y,							  
SInt	*curr_comp_u,							  
SInt	*curr_comp_v,							  
Float	*mad,									  
Float   *mv16_w,								  
Float   *mv16_h,								  
Float   *mv8_w,									  
Float   *mv8_h,									  
SInt    *mode16									  
)
{
	Int		i, j, k;
	SInt	curr_mb[MB_SIZE][MB_SIZE];
	SInt	curr_comp_mb_16[MB_SIZE][MB_SIZE];
	SInt	curr_comp_mb_8[MB_SIZE][MB_SIZE];
	Int		sad8 = MV_MAX_ERROR, sad16, sad;
	Int		imas_w, imas_h,	Mode;
	Int		posmode, pos16,	pos8;
	Int		min_error16,
			min_error8_0, min_error8_1, min_error8_2, min_error8_3;
	
	SInt	*halfpelflags;
	Float	hint_mv_w, hint_mv_h;
	Int		xsum,ysum,dx,dy;
	Int		prev_x_min,prev_x_max,prev_y_min,prev_y_max;
	prev_x_min = 2 * prev_x + 2 * 16;
	prev_y_min = 2 * prev_y + 2 * 16;
	prev_x_max = prev_x_min + 2 * vop_width - 4 * 16;
	prev_y_max = prev_y_min + 2 * vop_height - 4 * 16; 
	imas_w=br_width/MB_SIZE;
	imas_h=br_height/MB_SIZE;
	
	halfpelflags=(SInt*)malloc(5*4*sizeof(SInt));
	
	sad = 0;
	for ( j=0; j< (br_height/MB_SIZE); j++)
	{
		hint_mv_w = hint_mv_h = 0.f;
		for ( i=0; i< (br_width/MB_SIZE); i++)
		{
			
			Int min_error;
			posmode =          j * imas_w +   i;
			pos16   = pos8 = 2*j*2*imas_w + 2*i;
			MBMotionEstimation(curr,
				prev, br_x, br_y,
				br_width, i, j, prev_x, prev_y,
				vop_width, vop_height, enable_8x8_mv, edge,
				f_code, sr_for, 
				hint_mv_w, hint_mv_h, 
				mv16_w, mv16_h,
				mv8_w, mv8_h, &min_error, halfpelflags);
			
			Mode = ChooseMode(curr, 
				i*MB_SIZE,j*MB_SIZE, min_error, br_width);
			hint_mv_w = mv16_w[pos16];
			hint_mv_h = mv16_h[pos16];
			LoadArea(curr, i*MB_SIZE, j*MB_SIZE, 16, 16, br_width, (SInt *)curr_mb);
			
			if ( Mode != 0)
			{
				FindSubPel (i*MB_SIZE,j*MB_SIZE, prev_ipol,
					&curr_mb[0][0], 16, 16 , 0,
					br_x-prev_x,br_y-prev_y,vop_width, vop_height,
					edge, halfpelflags, &curr_comp_mb_16[0][0],
					&mv16_w[pos16], &mv16_h[pos16], &min_error16);
				
				sad16 = min_error16;
				mode16[posmode] = MBM_INTER16;
				if (enable_8x8_mv)
				{
					xsum = 0; ysum = 0;
					FindSubPel(i*MB_SIZE, j*MB_SIZE, prev_ipol,
						&curr_mb[0][0], 8, 8 , 0,
						br_x-prev_x,br_y-prev_y, vop_width, vop_height,
						edge, halfpelflags, &curr_comp_mb_8[0][0],
						&mv8_w[pos8], &mv8_h[pos8],	&min_error8_0);
					xsum += (Int)(2*(mv8_w[pos8]));
					ysum += (Int)(2*(mv8_h[pos8]));
					FindSubPel(i*MB_SIZE, j*MB_SIZE, prev_ipol,
						&curr_mb[0][8], 8, 8 , 1,
						br_x-prev_x,br_y-prev_y, vop_width,vop_height,
						edge, halfpelflags, &curr_comp_mb_8[0][8],
						&mv8_w[pos8+1], &mv8_h[pos8+1],	&min_error8_1);
					xsum += (Int)(2*(mv8_w[pos8+1]));
					ysum += (Int)(2*(mv8_h[pos8+1]));
					pos8+=2*imas_w;
					FindSubPel(i*MB_SIZE, j*MB_SIZE, prev_ipol,
						&curr_mb[8][0], 8, 8 , 2,
						br_x-prev_x,br_y-prev_y, vop_width,vop_height,
						edge, halfpelflags, &curr_comp_mb_8[8][0], 
						&mv8_w[pos8], &mv8_h[pos8],	&min_error8_2);
					xsum += (Int)(2*(mv8_w[pos8]));
					ysum += (Int)(2*(mv8_h[pos8]));
					FindSubPel(i*MB_SIZE, j*MB_SIZE, prev_ipol, 
						&curr_mb[8][8], 8, 8 , 3,
						br_x-prev_x,br_y-prev_y, vop_width,vop_height,
						edge, halfpelflags, &curr_comp_mb_8[8][8], 
						&mv8_w[pos8+1], &mv8_h[pos8+1],	&min_error8_3);
					xsum += (Int)(2*(mv8_w[pos8+1]));
					ysum += (Int)(2*(mv8_h[pos8+1]));
					sad8 = min_error8_0+min_error8_1+min_error8_2+min_error8_3;
					
					if (sad8 < (sad16 -(128+1)))
						mode16[posmode] = MBM_INTER8;
				}							  
				
				
				if ((mv16_w[pos16]==0.0) && (mv16_h[pos16]==0.0) && (mode16[posmode]==MBM_INTER16))
					sad16 += 128+1;
				
				if(mode16[posmode] == MBM_INTER8)
				{
					dx = SIGN (xsum) * (roundtab16[ABS (xsum) % 16] + (ABS (xsum) / 16) * 2);
					dy = SIGN (ysum) * (roundtab16[ABS (ysum) % 16] + (ABS (ysum) / 16) * 2);
					sad += sad8;
				}
				else 
				{
					dx = (Int)(2 * mv16_w[pos16]);
					dy = (Int)(2 * mv16_h[pos16]);
					dx = ( dx % 4 == 0 ? dx >> 1 : (dx>>1)|1 );
					dy = ( dy % 4 == 0 ? dy >> 1 : (dy>>1)|1 );
					sad += sad16;
				}
				GetPred_Chroma (i*MB_SIZE, j*MB_SIZE, dx, dy, 
					prev_u, prev_v, curr_comp_u, curr_comp_v,
					br_width, vop_width,
					prev_x_min/4,prev_y_min/4,prev_x_max/4,prev_y_max/4, rounding_type);
			}								  
			else							  
			{
				mode16[posmode] = MBM_INTRA;				
				for (k = 0; k < MB_SIZE*MB_SIZE; k++) 
				{
					
					curr_comp_mb_16[k/MB_SIZE][k%MB_SIZE] = 0;
					
					sad += curr_mb[k/MB_SIZE][k%MB_SIZE];
				}
			}
			if (mode16[posmode] == MBM_INTER8)
				SetArea((SInt*)curr_comp_mb_8, i*MB_SIZE, j*MB_SIZE, 16, 16, br_width, curr_comp_y);
			else
				SetArea((SInt*)curr_comp_mb_16, i*MB_SIZE, j*MB_SIZE, 16, 16, br_width, curr_comp_y);
		}   
	}	
	*mad = (float)sad/(br_width*br_height);
	free((Char*)halfpelflags);
	return;
}
#define unrestricted_MC_chro(x,y,npix,prev_x_min,prev_y_min,prev_x_max,prev_y_max) ((x)+(y)*(npix))
Void GetPred_Chroma (
	Int x_curr,
	Int y_curr,
	Int dx,
	Int dy,
	SInt *prev_u,
	SInt *prev_v,
	SInt *comp_u,
	SInt *comp_v,
	Int width,
	Int width_prev,
	Int prev_x_min,
	Int prev_y_min,
	Int prev_x_max,
	Int prev_y_max,
	Int rounding_control)
{
	Int m,n;
	Int x, y, ofx, ofy, lx;
	Int xint, yint;
	Int xh, yh;
	Int index1,index2,index3,index4;
	lx = width_prev/2;
	x = x_curr>>1;
	y = y_curr>>1;
	xint = dx>>1;
	xh = dx & 1;
	yint = dy>>1;
	yh = dy & 1;
	if (!xh && !yh)
	{
		for (n = 0; n < 8; n++)
		{
			for (m = 0; m < 8; m++)
			{
				ofx = x + xint + m;
				ofy = y + yint + n;
				index1 = unrestricted_MC_chro(ofx,ofy,lx,prev_x_min,
					prev_y_min,prev_x_max,prev_y_max);
				comp_u[(y+n)*width/2+x+m]
					= *(prev_u+index1);
				comp_v[(y+n)*width/2+x+m]
					= *(prev_v+index1);
			}
		}
	}
	else if (!xh && yh)
	{
		for (n = 0; n < 8; n++)
		{
			for (m = 0; m < 8; m++)
			{
				ofx = x + xint + m;
				ofy = y + yint + n;
				index1 =  unrestricted_MC_chro(ofx,ofy,lx,prev_x_min,
					prev_y_min,prev_x_max,prev_y_max);
				index2 =  unrestricted_MC_chro(ofx,ofy+yh,lx,prev_x_min,
					prev_y_min,prev_x_max,prev_y_max);
				comp_u[(y+n)*width/2+x+m]
					= (*(prev_u+index1) +
					*(prev_u+index2) + 1- rounding_control)>>1;
				comp_v[(y+n)*width/2+x+m]
					= (*(prev_v+index1) +
					*(prev_v+index2) + 1- rounding_control)>>1;
			}
		}
	}
	else if (xh && !yh)
	{
		for (n = 0; n < 8; n++)
		{
			for (m = 0; m < 8; m++)
			{
				ofx = x + xint + m;
				ofy = y + yint + n;
				index1 =  unrestricted_MC_chro(ofx,ofy,lx,prev_x_min,
					prev_y_min,prev_x_max,prev_y_max);
				index2 =  unrestricted_MC_chro(ofx+xh,ofy,lx,prev_x_min,
					prev_y_min,prev_x_max,prev_y_max);
				comp_u[(y+n)*width/2+x+m]
					= (*(prev_u+index1) +
					*(prev_u+index2) + 1- rounding_control)>>1;
				comp_v[(y+n)*width/2+x+m]
					= (*(prev_v+index1) +
					*(prev_v+index2) + 1- rounding_control)>>1;
			}
		}
	}
	else
	{											  
		for (n = 0; n < 8; n++)
		{
			for (m = 0; m < 8; m++)
			{
				ofx = x + xint + m;
				ofy = y + yint + n;
				index1 =  unrestricted_MC_chro(ofx,ofy,lx,prev_x_min,
					prev_y_min,prev_x_max,prev_y_max);
				index2 =  unrestricted_MC_chro(ofx+xh,ofy,lx,prev_x_min,
					prev_y_min,prev_x_max,prev_y_max);
				index3 =  unrestricted_MC_chro(ofx,ofy+yh,lx,prev_x_min,
					prev_y_min,prev_x_max,prev_y_max);
				index4 =  unrestricted_MC_chro(ofx+xh,ofy+yh,lx,prev_x_min,
					prev_y_min,prev_x_max,prev_y_max);
				comp_u[(y+n)*width/2+x+m]
					= (*(prev_u+index1)+
					*(prev_u+index2)+
					*(prev_u+index3)+
					*(prev_u+index4)+
					2- rounding_control)>>2;
				comp_v[(y+n)*width/2+x+m]
					= (*(prev_v+index1)+
					*(prev_v+index2)+
					*(prev_v+index3)+
					*(prev_v+index4)+
					2- rounding_control)>>2;
			}
		}
	}
	return;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色哟哟在线观看一区二区三区| 国产欧美精品一区二区三区四区 | 99re视频精品| 91精品国产综合久久福利软件| 亚洲欧美日韩精品久久久久| 777午夜精品视频在线播放| 亚洲一区免费在线观看| 日本二三区不卡| 国产精品久久久久久久久免费桃花 | 福利一区二区在线| 欧美人妖巨大在线| 亚洲国产美国国产综合一区二区| 在线免费视频一区二区| 国产亚洲一区二区在线观看| 国产综合久久久久久鬼色| 欧美天堂一区二区三区| 久久久精品免费网站| 国产一区二区三区观看| 欧美精品久久99久久在免费线 | 欧美日韩国产首页在线观看| 日韩一级大片在线| 国产女主播一区| 国产在线精品一区二区不卡了| 91视频免费观看| 日韩国产成人精品| 91精品婷婷国产综合久久竹菊| 一区二区免费视频| 99精品视频中文字幕| 欧美国产精品专区| 91网站黄www| 久久国产精品一区二区| 中文字幕一区二区在线播放| 欧美片网站yy| 国产麻豆视频精品| 久久午夜老司机| 亚洲香肠在线观看| 国产凹凸在线观看一区二区| 日韩一区二区免费在线观看| 丁香天五香天堂综合| 99在线精品视频| 欧美国产日韩a欧美在线观看| 欧美视频日韩视频在线观看| 蜜臂av日日欢夜夜爽一区| 中文字幕在线观看不卡视频| 亚洲欧洲成人自拍| 中文字幕中文字幕一区二区| 欧美激情一区二区| 亚洲欧洲成人av每日更新| 日韩美女视频一区| 一区二区三区久久久| 亚洲美女少妇撒尿| 亚洲一区二区三区美女| 婷婷久久综合九色综合伊人色| 亚洲特级片在线| 亚洲国产综合91精品麻豆| 日韩成人免费在线| 国产剧情av麻豆香蕉精品| 不卡视频一二三| 在线观看国产日韩| 欧美一区二区网站| 亚洲精品国产精品乱码不99 | 激情文学综合插| 国产高清成人在线| 色综合久久综合| 7777精品伊人久久久大香线蕉的| 精品乱人伦一区二区三区| 国产色综合一区| 玉足女爽爽91| 美美哒免费高清在线观看视频一区二区| 国内欧美视频一区二区| av爱爱亚洲一区| 精品视频在线免费| 精品免费99久久| 亚洲六月丁香色婷婷综合久久| 日本伊人精品一区二区三区观看方式| 久久69国产一区二区蜜臀| 成人激情电影免费在线观看| 欧美性大战久久久久久久| 欧美精品一区二区三| 亚洲欧美另类综合偷拍| 久久av资源网| 日本高清无吗v一区| 91精品国产综合久久久蜜臀粉嫩| 久久久.com| 日韩在线a电影| 成人国产在线观看| 日韩久久免费av| 一区二区在线观看免费视频播放| 麻豆高清免费国产一区| 91网站最新地址| 精品动漫一区二区三区在线观看| 亚洲欧美区自拍先锋| 精品影视av免费| 欧美亚洲动漫另类| 中文字幕欧美一| 国产精品自在欧美一区| 欧美电影在哪看比较好| 亚洲欧洲国产日韩| 国产一区二区三区在线观看免费| 日本乱人伦一区| 中文字幕不卡的av| 久久99国产精品尤物| 欧美日韩激情一区| 亚洲激情图片小说视频| 成人一区在线看| 久久亚洲捆绑美女| 日韩电影免费在线看| 日本乱人伦一区| 亚洲三级理论片| 国产不卡视频在线观看| 91精品国产欧美一区二区| 亚洲午夜在线电影| 日本乱码高清不卡字幕| 国产精品精品国产色婷婷| 国产一区二区三区免费| 日韩一区二区三区电影| 亚洲大片免费看| 在线视频一区二区免费| 亚洲精品免费播放| 99re热这里只有精品免费视频 | 中文字幕不卡三区| 国产成人在线观看免费网站| 日韩免费高清av| 美国欧美日韩国产在线播放| 欧美一区二区网站| a级高清视频欧美日韩| 久久精品一区二区三区不卡| 狠狠色综合播放一区二区| 欧美一级精品大片| 奇米综合一区二区三区精品视频| 欧美群妇大交群中文字幕| 亚洲亚洲精品在线观看| 欧美唯美清纯偷拍| 视频一区视频二区中文| 欧美一区二区三区在线观看| 午夜国产精品影院在线观看| 6080午夜不卡| 麻豆久久久久久久| 久久这里只有精品6| 国产精选一区二区三区| 国产精品欧美一区二区三区| 不卡的av中国片| 亚洲激情图片qvod| 欧美日韩国产精品成人| 日韩电影在线观看网站| 精品福利av导航| 国产91在线观看| 亚洲人午夜精品天堂一二香蕉| 色吊一区二区三区| 日韩精品欧美成人高清一区二区| 欧美一级黄色大片| 国产黑丝在线一区二区三区| 国产精品免费网站在线观看| 91老司机福利 在线| 视频一区在线视频| 久久人人超碰精品| 91在线观看美女| 视频一区欧美日韩| 国产拍欧美日韩视频二区| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲人快播电影网| 日韩一二三四区| 大胆欧美人体老妇| 亚洲午夜在线电影| 精品精品国产高清一毛片一天堂| 成人一区在线观看| 丝袜亚洲另类欧美| 国产亚洲一区二区在线观看| 欧亚洲嫩模精品一区三区| 蜜臀久久99精品久久久久宅男 | 日韩影视精彩在线| 日本一区二区三区免费乱视频| 91久久线看在观草草青青| 日本欧美大码aⅴ在线播放| 欧美精品一区在线观看| 色综合久久六月婷婷中文字幕| 日韩av一区二| 国产精品美女久久久久久久| 欧美日韩成人一区| 粉嫩13p一区二区三区| 亚洲成人黄色小说| 国产精品丝袜在线| 欧美一级二级在线观看| 99久久久免费精品国产一区二区| 日韩精品一区第一页| 国产精品精品国产色婷婷| 日韩欧美中文字幕精品| 91日韩精品一区| 国产乱子伦视频一区二区三区 | 午夜精品成人在线视频| 欧美国产成人在线| 51精品秘密在线观看| 一本一道久久a久久精品 | 一区二区三区精品在线观看| 精品国产麻豆免费人成网站| 欧美自拍丝袜亚洲| 久久久久青草大香线综合精品| 麻豆成人综合网| 久久一区二区三区四区| 欧美日韩免费观看一区二区三区|