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

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

?? deblock_vert_usedc.c

?? 針對MPEG4標準的編解源代碼,可以移植到DSP系統.
?? C
字號:
/**************************************************************************
 *                                                                        *
 * This code has been developed by John Funnell. This software is an      *
 * implementation of a part of one or more MPEG-4 Video tools as          *
 * specified in ISO/IEC 14496-2 standard.  Those intending to use this    *
 * software module in hardware or software products are advised that its  *
 * use may infringe existing patents or copyrights, and any such use      *
 * would be at such party's own risk.  The original developer of this     *
 * software module and his/her company, and subsequent editors and their  *
 * companies (including Project Mayo), will have no liability for use of  *
 * this software or modifications or derivatives thereof.                 *
 *                                                                        *
 * Project Mayo gives users of the Codec a license to this software       *
 * module or modifications thereof for use in hardware or software        *
 * products claiming conformance to the MPEG-4 Video Standard as          *
 * described in the Open DivX license.                                    *
 *                                                                        *
 * The complete Open DivX license can be found at                         *
 * http://www.projectmayo.com/opendivx/license.php                        *
 *                                                                        *
 **************************************************************************/
/**
*  Copyright (C) 2001 - Project Mayo
 *
 * John Funnell
 *
 * DivX Advanced Research Center <darc@projectmayo.com>
*
**/

/***

References:  
 * ISO/IEC 14496-2
 * MoMuSys-FDIS-V1.0-990812
 * Intel Architecture Software Developer's Manual
   Volume 2: Instruction Set Reference

***/

#include "postprocess_mmx.h"

/* John Funnell, December 2000 */

/* decide DC mode or default mode in assembler */
INLINE  int deblock_vert_useDC(uint8_t *v, int stride) {
	const uint64_t mask   = 0xfefefefefefefefe;
	uint32_t mm_data1;
	uint64_t *pmm1;
	int eq_cnt, useDC;
	#ifdef PP_SELF_CHECK
	int useDC2, i, j;
	#endif

	#ifdef PP_SELF_CHECK
	/* C-code version for testing */
	eq_cnt = 0;
	for (j=1; j<8; j++) {
		for (i=0; i<8; i++) {
			if (ABS(v[j*stride+i] - v[(j+1)*stride+i]) <= 1) eq_cnt++;
		}
	}
	useDC2 = (eq_cnt > DEBLOCK_VERT_USEDC_THR); 
	#endif
			
	/* starting pointer is at v[stride] == v1 in mpeg4 notation */
	pmm1 = (uint64_t *)(&(v[stride]));

	/* first load some constants into mm4, mm6, mm7 */
	__asm {
		push eax
		mov eax, pmm1

		movq mm6, mask               /*mm6 = 0xfefefefefefefefe       */
		pxor mm7, mm7                /*mm7 = 0x0000000000000000       */

		movq mm2, [eax]             /* mm2 = *p_data                 */
		pxor mm4, mm4                /*mm4 = 0x0000000000000000       */

		add   eax, stride          /* p_data += stride              */
		movq   mm3, mm2              /* mm3 = *p_data                 */






	};

	__asm {

		movq   mm2, [eax]          /* mm2 = *p_data                 */
		movq   mm0, mm3             /* mm0 = mm3                     */

		movq   mm3, mm2             /* mm3 = *p_data                 */
		movq   mm1, mm0             /* mm1 = mm0                     */

		psubusb mm0, mm2            /* mm0 -= mm2                    */
		add   eax, stride         /* p_data += stride              */

		psubusb mm2, mm1            /* mm2 -= mm1                    */
		por    mm0, mm2             /* mm0 |= mm2                    */

		pand   mm0, mm6             /* mm0 &= 0xfefefefefefefefe     */      
		pcmpeqb mm0, mm4            /* is mm0 == 0 ?                 */

		movq   mm2, [eax]          /* mm2 = *p_data                 */
		psubb  mm7, mm0             /* mm7 has running total of eqcnts */

		movq   mm5, mm3             /* mm5 = mm3                     */
		movq   mm3, mm2             /* mm3 = *p_data                 */

		movq   mm1, mm5             /* mm1 = mm5                     */
		psubusb mm5, mm2            /* mm5 -= mm2                    */

		psubusb mm2, mm1            /* mm2 -= mm1                    */
		por    mm5, mm2             /* mm5 |= mm2                    */

		add   eax, stride         /* p_data += stride              */
		pand   mm5, mm6             /* mm5 &= 0xfefefefefefefefe     */      

		pcmpeqb mm5, mm4            /* is mm0 == 0 ?                 */
		psubb  mm7, mm5             /* mm7 has running total of eqcnts */

		movq   mm2, [eax]          /* mm2 = *p_data                 */
		movq   mm0, mm3             /* mm0 = mm3                     */

		movq   mm3, mm2             /* mm3 = *p_data                 */
		movq   mm1, mm0             /* mm1 = mm0                     */

		psubusb mm0, mm2            /* mm0 -= mm2                    */
		add   eax, stride         /* p_data += stride              */

		psubusb mm2, mm1            /* mm2 -= mm1                    */
		por    mm0, mm2             /* mm0 |= mm2                    */

		pand   mm0, mm6             /* mm0 &= 0xfefefefefefefefe     */      
		pcmpeqb mm0, mm4            /* is mm0 == 0 ?                 */

		movq   mm2, [eax]          /* mm2 = *p_data                 */
		psubb  mm7, mm0             /* mm7 has running total of eqcnts */

		movq   mm5, mm3             /* mm5 = mm3                     */
		movq   mm3, mm2             /* mm3 = *p_data                 */

		movq   mm1, mm5             /* mm1 = mm5                     */
		psubusb mm5, mm2            /* mm5 -= mm2                    */

		psubusb mm2, mm1            /* mm2 -= mm1                    */
		por    mm5, mm2             /* mm5 |= mm2                    */

		add   eax, stride         /* p_data += stride              */
		pand   mm5, mm6             /* mm5 &= 0xfefefefefefefefe     */      

		pcmpeqb mm5, mm4            /* is mm0 == 0 ?                 */
		psubb  mm7, mm5             /* mm7 has running total of eqcnts */

		movq   mm2, [eax]          /* mm2 = *p_data                 */
		movq   mm0, mm3             /* mm0 = mm3                     */

		movq   mm3, mm2             /* mm3 = *p_data                 */
		movq   mm1, mm0             /* mm1 = mm0                     */

		psubusb mm0, mm2            /* mm0 -= mm2                    */
		add   eax, stride         /* p_data += stride              */

		psubusb mm2, mm1            /* mm2 -= mm1                    */
		por    mm0, mm2             /* mm0 |= mm2                    */

		pand   mm0, mm6             /* mm0 &= 0xfefefefefefefefe     */      
		pcmpeqb mm0, mm4            /* is mm0 == 0 ?                 */

		movq   mm2, [eax]          /* mm2 = *p_data                 */
		psubb  mm7, mm0             /* mm7 has running total of eqcnts */

		movq   mm5, mm3             /* mm5 = mm3                     */
		movq   mm3, mm2             /* mm3 = *p_data                 */

		movq   mm1, mm5             /* mm1 = mm5                     */
		psubusb mm5, mm2            /* mm5 -= mm2                    */

		psubusb mm2, mm1            /* mm2 -= mm1                    */
		por    mm5, mm2             /* mm5 |= mm2                    */

		add   eax, stride         /* p_data += stride              */
		pand   mm5, mm6             /* mm5 &= 0xfefefefefefefefe     */      

		pcmpeqb mm5, mm4            /* is mm0 == 0 ?                 */
		psubb  mm7, mm5             /* mm7 has running total of eqcnts */

		movq   mm2, [eax]          /* mm2 = *p_data                 */
		movq   mm0, mm3             /* mm0 = mm3                     */

		movq   mm3, mm2             /* mm3 = *p_data                 */
		movq   mm1, mm0             /* mm1 = mm0                     */

		psubusb mm0, mm2            /* mm0 -= mm2                    */
		add   eax, stride         /* p_data += stride              */

		psubusb mm2, mm1            /* mm2 -= mm1                    */
		por    mm0, mm2             /* mm0 |= mm2                    */

		pand   mm0, mm6             /* mm0 &= 0xfefefefefefefefe     */      
		pcmpeqb mm0, mm4            /* is mm0 == 0 ?                 */

		psubb  mm7, mm0             /* mm7 has running total of eqcnts */

		pop eax	
		
	
	
	
	
	                                       
	};
			
	/* now mm7 contains negative eq_cnt for all 8-columns */
	/* copy this to mm_data1                              */
	/* sum all 8 bytes in mm7 */
	__asm {
		movq    mm1, mm7            /* mm1 = mm7             0 1w2 3 4 5 6 7r   */
		psrlq   mm7, 32             /* mm7 >>= 32            0 1 2 3 4 5 6 7m   */

		paddb   mm7, mm1            /* mm7 has running total of eqcnts */

		movq mm1, mm7               /* mm1 = mm7             0 1w2 3 4 5 6 7r   */
		psrlq   mm7, 16             /* mm7 >>= 16            0 1 2 3 4 5 6 7m   */

		paddb   mm1, mm7            /* mm7 has running total of eqcnts */

		movq mm7, mm1               /* mm1 = mm7             0 1w2 3 4 5 6 7r   */
		psrlq   mm7, 8              /* mm7 >>= 8             0 1 2 3 4 5 6 7m   */

		paddb   mm7, mm1            /* mm7 has running total of eqcnts */

		movd mm_data1, mm7          /* mm_data1 = mm7       */

	};

	eq_cnt = mm_data1 & 0xff;
			
	useDC = (eq_cnt  > DEBLOCK_VERT_USEDC_THR);			
			
	#ifdef PP_SELF_CHECK
	if (useDC != useDC2) printf("ERROR: MMX version of useDC is incorrect\n");
	#endif
	
	return useDC;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃视频在线观看一区| 国产精品一区二区三区99| 欧美大胆一级视频| 99久久伊人久久99| 国内精品写真在线观看| 久久99精品国产.久久久久| 美女网站视频久久| 欧美在线看片a免费观看| 欧美美女直播网站| www久久久久| 亚洲欧美自拍偷拍| 天天亚洲美女在线视频| 狠狠久久亚洲欧美| 制服丝袜国产精品| 久久久另类综合| 亚洲欧美激情插| 成人精品国产一区二区4080| 亚洲综合999| 日本在线不卡视频| 黄色精品一二区| 制服丝袜成人动漫| 婷婷综合另类小说色区| 日本韩国欧美在线| 欧美成人精品高清在线播放| 国产精品久久午夜| 视频一区中文字幕国产| 国产成人精品亚洲777人妖| 在线亚洲精品福利网址导航| 中文字幕日韩av资源站| 成人午夜电影久久影院| 7777女厕盗摄久久久| 亚洲无线码一区二区三区| 国内精品不卡在线| 久久久亚洲午夜电影| 国产精品一二三区在线| 欧美本精品男人aⅴ天堂| 蓝色福利精品导航| 91久久精品网| 亚洲图片有声小说| 欧美放荡的少妇| 蜜桃av一区二区在线观看| 欧美不卡一区二区| 国产91高潮流白浆在线麻豆| 播五月开心婷婷综合| 免费精品99久久国产综合精品| 国产精品66部| 国产精品欧美久久久久无广告 | 欧美一级二级在线观看| 国产精品久久久久影视| kk眼镜猥琐国模调教系列一区二区 | av在线这里只有精品| 成人免费在线观看入口| 欧美中文一区二区三区| 热久久久久久久| 欧美精品一区二区不卡| 亚洲国产精品视频| 精品伦理精品一区| www.久久久久久久久| 亚洲成人www| 欧洲精品在线观看| 免费人成黄页网站在线一区二区 | 免费在线观看精品| 久久一日本道色综合| 99久久精品免费| 五月激情综合色| 久久久久99精品一区| 91国产丝袜在线播放| 久久国产生活片100| 国产精品二三区| 日韩你懂的在线观看| 不卡高清视频专区| 日本不卡不码高清免费观看| 国产精品免费看片| 日韩三级电影网址| 99re6这里只有精品视频在线观看| 午夜激情一区二区| 中文字幕在线视频一区| 91精品国产高清一区二区三区蜜臀 | 色老头久久综合| 韩国成人福利片在线播放| 伊人性伊人情综合网| 欧美在线免费视屏| 高清av一区二区| 久久福利资源站| 亚洲一线二线三线视频| 日本一二三四高清不卡| 99久久99精品久久久久久| 久久精品99国产精品| 一区二区三区中文字幕| 在线不卡a资源高清| 99久久综合国产精品| 国产一区二区在线电影| 亚洲视频狠狠干| 欧美蜜桃一区二区三区| 免播放器亚洲一区| 亚洲国产另类av| 亚洲另类色综合网站| 国产精品午夜在线观看| 久久综合久久鬼色| 日韩一区二区三区视频在线| 欧美视频三区在线播放| 青青草91视频| 婷婷成人综合网| 天天色综合成人网| 亚洲福利一区二区| 亚洲精选在线视频| 亚洲六月丁香色婷婷综合久久 | 精品久久久久99| 欧美一区二区播放| 欧美一个色资源| 欧美一区二区视频网站| 欧美丰满少妇xxxxx高潮对白| 欧美视频在线观看一区| 欧美午夜在线一二页| 欧美亚洲禁片免费| 欧美日本韩国一区| 欧美女孩性生活视频| 欧美日韩成人激情| 欧美一卡二卡三卡四卡| 日韩一区二区在线观看| 欧美精品一区二区不卡| 国产亚洲成年网址在线观看| 欧美日韩一区二区三区在线看 | 色婷婷久久99综合精品jk白丝 | 91社区在线播放| 激情五月婷婷综合| 国产久卡久卡久卡久卡视频精品| 国产精品自在欧美一区| 国产成人精品www牛牛影视| 成人激情小说乱人伦| 91免费版pro下载短视频| 日本久久电影网| 欧美男男青年gay1069videost| 欧美一区二区成人| 国产校园另类小说区| 亚洲人成伊人成综合网小说| 亚洲与欧洲av电影| 久久99国产精品成人| 不卡一区中文字幕| 欧美日韩一级二级三级| 欧美www视频| 自拍av一区二区三区| 五月天精品一区二区三区| 经典一区二区三区| 白白色 亚洲乱淫| 欧美亚洲动漫精品| 久久一区二区视频| 亚洲人成网站在线| 麻豆专区一区二区三区四区五区| 国产福利不卡视频| 欧美日韩三级在线| 国产无一区二区| 亚洲午夜视频在线观看| 国产毛片精品一区| 欧美丝袜自拍制服另类| 精品国产一区二区精华| 亚洲精品免费在线观看| 国产中文字幕一区| 在线欧美一区二区| 久久久亚洲午夜电影| 亚洲电影欧美电影有声小说| 岛国精品在线播放| 欧美一级日韩免费不卡| 最新久久zyz资源站| 激情偷乱视频一区二区三区| 色婷婷av一区| 国产女主播在线一区二区| 国产精品视频线看| 免费精品视频在线| 亚洲欧洲av色图| 亚洲精品国产品国语在线app| 精品一区二区三区久久久| 欧亚洲嫩模精品一区三区| 欧美激情一区二区在线| 麻豆视频观看网址久久| 欧美性视频一区二区三区| 国产精品久久久久久久裸模| 国内精品伊人久久久久av影院 | 在线不卡中文字幕播放| 国产精品成人免费在线| 国产一区在线视频| 欧美一区二区三区电影| 亚洲电影在线播放| 色8久久人人97超碰香蕉987| 日本一区二区三区四区在线视频 | 亚洲第一狼人社区| 色呦呦日韩精品| 亚洲日本乱码在线观看| 东方aⅴ免费观看久久av| 精品国产一区二区精华| 蜜桃在线一区二区三区| 91精品国产综合久久久久久漫画| 一区二区三区资源| 欧洲av在线精品| 亚洲国产精品综合小说图片区| 在线亚洲免费视频| 亚洲第四色夜色| 欧美剧情片在线观看| 日本午夜一区二区| 日韩视频免费观看高清完整版在线观看 |