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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? sad_altivec.c

?? xvid MPEG-4 編解碼源代碼
?? C
字號(hào):
/***************************************************************************** * *  XVID MPEG-4 VIDEO CODEC *  - altivec sum of absolute difference (C version) * *  Copyright (C) 2002 Benjamin Herrenschmidt <benh@kernel.crashing.org> * *  This file is part of XviD, a free MPEG-4 video encoder/decoder * *  XviD is free software; you can redistribute it and/or modify it *  under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA * *  Under section 8 of the GNU General Public License, the copyright *  holders of XVID explicitly forbid distribution in the following *  countries: * *    - Japan *    - United States of America * *  Linking XviD statically or dynamically with other modules is making a *  combined work based on XviD.  Thus, the terms and conditions of the *  GNU General Public License cover the whole combination. * *  As a special exception, the copyright holders of XviD give you *  permission to link XviD with independent modules that communicate with *  XviD solely through the VFW1.1 and DShow interfaces, regardless of the *  license terms of these independent modules, and to copy and distribute *  the resulting combined work under terms of your choice, provided that *  every copy of the combined work is accompanied by a complete copy of *  the source code of XviD (the version of XviD used to produce the *  combined work), being distributed under the terms of the GNU General *  Public License plus this exception.  An independent module is a module *  which is not derived from or based on XviD. * *  Note that people who make modified versions of XviD are not obligated *  to grant this special exception for their modified versions; it is *  their choice whether to do so.  The GNU General Public License gives *  permission to release a modified version without this exception; this *  exception also makes it possible to release a modified version which *  carries forward this exception. * * $Id: sad_altivec.c,v 1.5 2002/11/17 00:32:06 edgomez Exp $ * ****************************************************************************/#define G_REG#ifdef G_REGregister vector unsigned char perm0 asm("%v29");register vector unsigned char perm1 asm("%v30");register vector unsigned int zerovec asm("%v31");#endif#include <stdio.h>#undef DEBUGstatic const vector unsigned char perms[2] = {	(vector unsigned char) (	/* Used when cur is aligned */							   0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,							   0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17),	(vector unsigned char) (	/* Used when cur is unaligned */							   0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,							   0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f),};#ifdef G_REGvoidsadInit_altivec(void){	perm0 = perms[0];	perm1 = perms[1];	zerovec = (vector unsigned int) (0);}static inline const vector unsigned charget_perm(unsigned long i){	return i ? perm1 : perm0;}#define ZERODEF#define ZEROVEC zerovec#elsevoidsadInit_altivec(void){}static inline const vector unsigned charget_perm(unsigned long i){	return perms[i];}#define ZERODEF vector unsigned int zerovec = (vector unsigned int)(0)#define ZEROVEC zerovec#endif#define SAD16() \t1  = vec_perm(ref[0], ref[1], perm);  /* align current vector  */ \t2  = vec_max(t1, *cur);      	 /* find largest of two           */ \t3  = vec_min(t1, *cur); 	         /* find smaller of two           */ \t4  = vec_sub(t2, t3);                   /* find absolute difference      */ \sad = vec_sum4s(t4, sad);                /* accumulate sum of differences */ \cur += stride; ref += stride;/* * This function assumes cur and stride are 16 bytes aligned and ref is unaligned */unsigned longsad16_altivec(const vector unsigned char *cur,			  const vector unsigned char *ref,			  unsigned long stride,			  const unsigned long best_sad){	vector unsigned char perm;	vector unsigned char t1, t2, t3, t4;	vector unsigned int sad;	vector signed int sumdiffs, best_vec;	unsigned long result;	ZERODEF;#ifdef DEBUG	if (((unsigned long) cur) & 0xf)		fprintf(stderr, "sad16_altivec:incorrect align, cur: %x\n", cur);//  if (((unsigned long)ref) & 0xf)//      fprintf(stderr, "sad16_altivec:incorrect align, ref: %x\n", ref);	if (stride & 0xf)		fprintf(stderr, "sad16_altivec:incorrect align, stride: %x\n", stride);#endif	/* initialization */	sad = (vector unsigned int) (ZEROVEC);	stride >>= 4;	perm = vec_lvsl(0, (unsigned char *) ref);	*((unsigned long *) &best_vec) = best_sad;	best_vec = vec_splat(best_vec, 0);	/* perform sum of differences between current and previous */	SAD16();	SAD16();	SAD16();	SAD16();	/* Temp sum for exit */	sumdiffs = vec_sums((vector signed int) sad, (vector signed int) ZEROVEC);	if (vec_all_ge(sumdiffs, best_vec))		goto bail;	SAD16();	SAD16();	SAD16();	SAD16();	sumdiffs = vec_sums((vector signed int) sad, (vector signed int) ZEROVEC);	if (vec_all_ge(sumdiffs, best_vec))		goto bail;	SAD16();	SAD16();	SAD16();	SAD16();	SAD16();	SAD16();	SAD16();	SAD16();	/* sum all parts of difference into one 32 bit quantity */	sumdiffs = vec_sums((vector signed int) sad, (vector signed int) ZEROVEC);  bail:	/* copy vector sum into unaligned result */	sumdiffs = vec_splat(sumdiffs, 3);	vec_ste(sumdiffs, 0, (int *) &result);	return (result);}#define SAD8() \t1  = vec_perm(cur[0], cur[stride], perm_cur);  /* align current vector  */ \t2  = vec_perm(ref[0], ref[1], perm_ref1);  /* align current vector  */ \tp  = vec_perm(ref[stride], ref[stride+1], perm_ref1);  /* align current vector  */ \t2  = vec_perm(t2,tp,perm_ref2); \t3  = vec_max(t1, t2);  	        /* find largest of two           */ \t4  = vec_min(t1, t2);	        	 /* find smaller of two           */ \t5  = vec_sub(t3, t4);                   /* find absolute difference      */ \sad = vec_sum4s(t5, sad);                /* accumulate sum of differences */ \cur += stride<<1; ref += stride<<1;/* * This function assumes cur is 8 bytes aligned, stride is 16 bytes * aligned and ref is unaligned */unsigned longsad8_altivec(const vector unsigned char *cur,			 const vector unsigned char *ref,			 unsigned long stride){	vector unsigned char t1, t2, t3, t4, t5, tp;	vector unsigned int sad;	vector signed int sumdiffs;	vector unsigned char perm_cur;	vector unsigned char perm_ref1, perm_ref2;	unsigned long result;	ZERODEF;#ifdef DEBUG	if (((unsigned long) cur) & 0x7)		fprintf(stderr, "sad8_altivec:incorrect align, cur: %x\n", cur);//  if (((unsigned long)ref) & 0x7)//      fprintf(stderr, "sad8_altivec:incorrect align, ref: %x\n", ref);	if (stride & 0xf)		fprintf(stderr, "sad8_altivec:incorrect align, stride: %x\n", stride);#endif	perm_cur = get_perm((((unsigned long) cur) >> 3) & 0x01);	perm_ref1 = vec_lvsl(0, (unsigned char *) ref);	perm_ref2 = get_perm(0);	/* initialization */	sad = (vector unsigned int) (ZEROVEC);	stride >>= 4;	/* perform sum of differences between current and previous */	SAD8();	SAD8();	SAD8();	SAD8();	/* sum all parts of difference into one 32 bit quantity */	sumdiffs = vec_sums((vector signed int) sad, (vector signed int) ZEROVEC);	/* copy vector sum into unaligned result */	sumdiffs = vec_splat(sumdiffs, 3);	vec_ste(sumdiffs, 0, (int *) &result);	return (result);}#define MEAN16(i)\c##i=*cur;\mean = vec_sum4s(c##i,mean);\cur += stride;#define DEV16(i) \t2  = vec_max(c##i, mn);  	        /* find largest of two           */ \t3  = vec_min(c##i, mn);	        	 /* find smaller of two           */ \t4  = vec_sub(t2, t3);                   /* find absolute difference      */ \dev = vec_sum4s(t4, dev);unsigned longdev16_altivec(const vector unsigned char *cur,			  unsigned long stride){	vector unsigned char t2, t3, t4, mn;	vector unsigned int mean, dev;	vector signed int sumdiffs;	vector unsigned char c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12,		c13, c14, c15;	unsigned long result;	ZERODEF;	mean = (vector unsigned int) (ZEROVEC);	dev = (vector unsigned int) (ZEROVEC);	stride >>= 4;	MEAN16(0);	MEAN16(1);	MEAN16(2);	MEAN16(3);	MEAN16(4);	MEAN16(5);	MEAN16(6);	MEAN16(7);	MEAN16(8);	MEAN16(9);	MEAN16(10);	MEAN16(11);	MEAN16(12);	MEAN16(13);	MEAN16(14);	MEAN16(15);	sumdiffs = vec_sums((vector signed int) mean, (vector signed int) ZEROVEC);	mn = vec_perm((vector unsigned char) sumdiffs,				  (vector unsigned char) sumdiffs, (vector unsigned char) (14,																		   14,																		   14,																		   14,																		   14,																		   14,																		   14,																		   14,																		   14,																		   14,																		   14,																		   14,																		   14,																		   14,																		   14,																		   14));	DEV16(0);	DEV16(1);	DEV16(2);	DEV16(3);	DEV16(4);	DEV16(5);	DEV16(6);	DEV16(7);	DEV16(8);	DEV16(9);	DEV16(10);	DEV16(11);	DEV16(12);	DEV16(13);	DEV16(14);	DEV16(15);	/* sum all parts of difference into one 32 bit quantity */	sumdiffs = vec_sums((vector signed int) dev, (vector signed int) ZEROVEC);	/* copy vector sum into unaligned result */	sumdiffs = vec_splat(sumdiffs, 3);	vec_ste(sumdiffs, 0, (int *) &result);	return (result);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜电影一区二区三区| 成人一区二区三区中文字幕| 亚洲国产精品久久久久婷婷884 | 日韩精品国产精品| 天天色图综合网| 精品一区二区三区不卡| 国产精品一区免费视频| av一区二区三区四区| 97精品久久久午夜一区二区三区| av在线一区二区| 欧美精品乱码久久久久久| 精品日韩欧美一区二区| 欧美国产成人在线| 中文字幕不卡在线| 中文字幕一区二区三区乱码在线| 亚洲综合色丁香婷婷六月图片| 亚洲午夜久久久久久久久久久| 日韩精品亚洲专区| av资源网一区| 日韩视频在线你懂得| 国产精品久久久久7777按摩| 亚洲国产日韩在线一区模特| 国产真实乱子伦精品视频| 91美女视频网站| 欧美精品一区二区三区在线播放 | caoporn国产一区二区| 欧美肥妇bbw| 亚洲人成在线观看一区二区| 精品一区二区免费在线观看| 不卡的av在线| 精品奇米国产一区二区三区| 亚洲精品久久嫩草网站秘色| 激情图片小说一区| 欧美福利视频导航| 亚洲国产欧美在线| 91成人在线精品| 国产精品视频麻豆| 国产99久久久国产精品免费看 | 精品国产一区二区三区av性色| 伊人色综合久久天天人手人婷| 成人综合婷婷国产精品久久| 日韩欧美一二三四区| 视频在线观看一区二区三区| 91啦中文在线观看| 伊人色综合久久天天人手人婷| 丁香激情综合国产| 久久精品一二三| 精品一区二区三区在线观看国产| 欧美亚洲日本一区| 亚洲欧美欧美一区二区三区| 国产另类ts人妖一区二区| 日韩视频一区二区三区在线播放 | 亚洲欧洲av另类| 久久99蜜桃精品| 日韩一区二区三区高清免费看看| 中文字幕一区二区三区在线观看 | 韩国成人在线视频| 精品欧美一区二区在线观看| 丝袜脚交一区二区| 欧美日韩精品专区| 韩国精品一区二区| 在线观看av一区二区| 亚洲韩国一区二区三区| 国产一区二区伦理| 国产嫩草影院久久久久| 国产a区久久久| 国产精品国产自产拍高清av| 91福利在线看| 日本美女视频一区二区| 亚洲第一会所有码转帖| 欧美色偷偷大香| 亚洲成a人v欧美综合天堂| 欧美剧情电影在线观看完整版免费励志电影 | 日韩电影一区二区三区| 欧美精品色一区二区三区| 麻豆久久久久久久| 国产精品久久久久久久浪潮网站| 国产精品99久久久| 亚洲欧美电影院| 欧美大片在线观看一区二区| 国产91高潮流白浆在线麻豆| 中文字幕一区二区三区在线观看| 欧美美女网站色| 成年人国产精品| 免费观看一级特黄欧美大片| 国产精品久线在线观看| 欧美一区二区三区性视频| 成人综合婷婷国产精品久久蜜臀 | 欧美日韩亚洲不卡| 日本欧美一区二区在线观看| 久久人人爽人人爽| 欧美日韩你懂得| 久久精品国产一区二区三| 最近中文字幕一区二区三区| 欧美一区二区视频网站| 国产成人免费视频网站| 久久99久久99小草精品免视看| 国产精品另类一区| 日韩精品一区二区三区蜜臀| 播五月开心婷婷综合| 国产一区二区h| 五月激情六月综合| 亚洲精品视频免费观看| 中文字幕在线免费不卡| 久久婷婷综合激情| 久久久综合视频| 久久奇米777| 久久久久久日产精品| 日韩一区二区三区高清免费看看 | 国产精品天天摸av网| 精品国产污污免费网站入口 | 国产在线精品一区在线观看麻豆| 亚洲第一福利一区| 亚洲成av人**亚洲成av**| 一区二区三区成人在线视频| 日韩毛片精品高清免费| 亚洲最新在线观看| 午夜私人影院久久久久| 日韩黄色免费电影| 免费精品视频最新在线| 美女在线视频一区| 国产一区二区三区精品视频| 国产精品一区二区在线观看网站| 韩国av一区二区三区在线观看 | 一区二区三区在线视频观看58| ●精品国产综合乱码久久久久| 亚洲精品乱码久久久久久日本蜜臀| 亚洲女人小视频在线观看| 亚洲一区视频在线| 免费观看日韩电影| av不卡在线观看| 日韩免费一区二区三区在线播放| 日韩欧美电影一区| 国产精品国产三级国产aⅴ无密码| 亚洲免费观看高清完整版在线| 一区二区在线电影| 蜜桃av噜噜一区| 国产精品 日产精品 欧美精品| 91啪在线观看| 日韩欧美国产wwwww| 亚洲欧美日韩在线| 久久精品国产亚洲一区二区三区 | 懂色中文一区二区在线播放| 91麻豆视频网站| 精品国内二区三区| 亚洲一区二区三区四区五区中文| 蜜臀av亚洲一区中文字幕| 99这里只有精品| 久久免费视频色| 麻豆国产精品777777在线| 色婷婷av一区二区| 99久久精品久久久久久清纯| 欧美亚洲一区二区在线| 亚洲国产精品t66y| 精品在线视频一区| 精品国产三级电影在线观看| 亚洲福利视频导航| 色综合久久天天| 国产精品嫩草久久久久| 成人性生交大片免费看中文网站| 久久精品网站免费观看| 国产一区二区久久| 中文字幕永久在线不卡| 丰满白嫩尤物一区二区| 国产欧美一区二区在线| 北条麻妃国产九九精品视频| √…a在线天堂一区| 欧美视频一区二区三区在线观看| 亚洲国产中文字幕| 精品国产sm最大网站免费看| 国产一区二区导航在线播放| 国产精品卡一卡二| 欧美肥妇bbw| 韩国中文字幕2020精品| 中文字幕永久在线不卡| 精品视频一区二区不卡| 国产主播一区二区| 一区二区三区免费网站| 欧美丰满嫩嫩电影| bt7086福利一区国产| 日韩精品免费视频人成| 国产精品女上位| 欧美一级二级三级蜜桃| 91一区在线观看| 精品一区二区三区免费视频| 亚洲色欲色欲www在线观看| 日韩欧美亚洲国产另类| 色婷婷亚洲一区二区三区| 久久成人精品无人区| 一区二区三区久久| 国产欧美久久久精品影院| 7878成人国产在线观看| 99国产精品久久久久久久久久| 久草精品在线观看| 午夜精品久久久久久久99水蜜桃 | 欧美成va人片在线观看| 色婷婷综合视频在线观看| av资源网一区| 成人精品一区二区三区四区| 久久成人久久鬼色|