⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 build_sub22_mests.c

📁 Motion JPEG编解码器源代码
💻 C
字号:
#include "config.h"#include "mmxsse_motion.h"#include "fastintfns.h"#include <stdlib.h>int build_sub22_mests_mmxe( me_result_set *sub44set,				me_result_set *sub22set,				int i0,  int j0, int ihigh, int jhigh, 				int null_ctl_sad,				uint8_t *s22org,  uint8_t *s22blk, 				int frowstride, int fh,				int reduction){	int i,k,s;	int threshold = 6*null_ctl_sad / (2 * 2*reduction);	int min_weight;	int ilim = ihigh-i0;	int jlim = jhigh-j0;	int x,y;	uint8_t *s22orgblk;	int32_t resvec[4];        me_result_s *mc = sub22set->mests;	for( k = 0; k < sub44set->len; ++k )	{		x = sub44set->mests[k].x;		y = sub44set->mests[k].y;		s22orgblk =  s22org +((y+j0)>>1)*frowstride +((x+i0)>>1);		/*		  Get SAD for 2*2 subsampled macroblocks: orgblk,orgblk(+2,0),		  orgblk(0,+2), and orgblk(+2,+2) Done all in one go to reduce		  memory bandwidth demand		*/		mblock_sub22_nearest4_sads_mmxe(s22orgblk, s22blk, frowstride, fh, resvec);		for( i = 0; i < 4; ++i )		{			if( x <= ilim && y <= jlim )			{					s =resvec[i]+(intmax(abs(x), abs(y))<<3);				if( s < threshold )				{					mc->x = (int8_t)x;					mc->y = (int8_t)y;					mc->weight = s;                                        mc++;				}			}			if( i == 1 )			{				x -= 2;				y += 2;			}			else			{				x += 2;			}		}	}	sub22set->len = mc - sub22set->mests;		sub_mean_reduction( sub22set, reduction, &min_weight );	return sub22set->len;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -