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

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

?? deblock_vert_default_filter.c

?? MP4 decode source,還不錯用c語言寫的。
?? 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 */



/* Vertical deblocking filter for use in non-flat picture regions */
INLINE void deblock_vert_default_filter(uint8_t *v, int stride, int QP) {
	uint64_t *pmm1;
	const uint64_t mm_0020 = 0x0020002000200020;
	uint64_t mm_8_x_QP;
	int i;
	
	#ifdef PP_SELF_CHECK
	/* define semi-constants to enable us to move up and down the picture easily... */
	int l1 = 1 * stride;
	int l2 = 2 * stride;
	int l3 = 3 * stride;
	int l4 = 4 * stride;
	int l5 = 5 * stride;
	int l6 = 6 * stride;
	int l7 = 7 * stride;
	int l8 = 8 * stride;
	int x, y, a3_0_SC, a3_1_SC, a3_2_SC, d_SC, q_SC;
	uint8_t selfcheck[8][2];
	#endif

	#ifdef PP_SELF_CHECK
	/* compute selfcheck matrix for later comparison */
	for (x=0; x<8; x++) {
		a3_0_SC = 2*v[l3+x] - 5*v[l4+x] + 5*v[l5+x] - 2*v[l6+x];	
		a3_1_SC = 2*v[l1+x] - 5*v[l2+x] + 5*v[l3+x] - 2*v[l4+x];	
		a3_2_SC = 2*v[l5+x] - 5*v[l6+x] + 5*v[l7+x] - 2*v[l8+x];	
		q_SC    = (v[l4+x] - v[l5+x]) / 2;

		if (ABS(a3_0_SC) < 8*QP) {

			d_SC = ABS(a3_0_SC) - MIN(ABS(a3_1_SC), ABS(a3_2_SC));
			if (d_SC < 0) d_SC=0;
				
			d_SC = (5*d_SC + 32) >> 6; 
			d_SC *= SIGN(-a3_0_SC);
							
			//printf("d_SC[%d] preclip=%d\n", x, d_SC);
			/* clip d in the range 0 ... q */
			if (q_SC > 0) {
				d_SC = d_SC<0    ? 0    : d_SC;
				d_SC = d_SC>q_SC ? q_SC : d_SC;
			} else {
				d_SC = d_SC>0    ? 0    : d_SC;
				d_SC = d_SC<q_SC ? q_SC : d_SC;
			}
						
		} else {
			d_SC = 0;		
		}
		selfcheck[x][0] = v[l4+x] - d_SC;
		selfcheck[x][1] = v[l5+x] + d_SC;
	}
	#endif

	((uint32_t *)&mm_8_x_QP)[0] = 
	 ((uint32_t *)&mm_8_x_QP)[1] = 0x00080008 * QP; 
	
	/* working in 4-pixel wide columns, left to right */
	for (i=0; i<2; i++) { /*i=0 in left, i=1 in right */

		/* v should be 64-bit aligned here */
		pmm1 = (uint64_t *)(&(v[4*i]));
		/* pmm1 will be 32-bit aligned but this doesn't matter as we'll use movd not movq */

		__asm {
			push ecx
			mov ecx, pmm1

			pxor      mm7, mm7               /* mm7 = 0000000000000000    0 1 2 3 4 5 6 7w   */
			add      ecx, stride           /* %0 += stride              0 1 2 3 4 5 6 7    */ 

			movd      mm0, [ecx]            /* mm0 = v1v1v1v1v1v1v1v1    0w1 2 3 4 5 6 7    */
			punpcklbw mm0, mm7               /* mm0 = __v1__v1__v1__v1 L  0m1 2 3 4 5 6 7r   */

			add      ecx, stride           /* ecx += stride              0 1 2 3 4 5 6 7    */ 
			movd      mm1, [ecx]            /* mm1 = v2v2v2v2v2v2v2v2    0 1w2 3 4 5 6 7    */

			add      ecx, stride           /* ecx += stride              0 1 2 3 4 5 6 7    */ 
			punpcklbw mm1, mm7               /* mm1 = __v2__v2__v2__v2 L  0 1m2 3 4 5 6 7r   */

			movd      mm2, [ecx]            /* mm2 = v3v3v3v3v3v3v3v3    0 1 2w3 4 5 6 7    */
			add      ecx, stride           /* ecx += stride              0 1 2 3 4 5 6 7    */ 

			punpcklbw mm2, mm7               /* mm2 = __v3__v3__v3__v3 L  0 1 2m3 4 5 6 7r   */

			movd      mm3, [ecx]            /* mm3 = v4v4v4v4v4v4v4v4    0 1 2 3w4 5 6 7    */

			punpcklbw mm3, mm7               /* mm3 = __v4__v4__v4__v4 L  0 1 2 3m4 5 6 7r   */

			psubw     mm1, mm2               /* mm1 = v2 - v3          L  0 1m2r3 4 5 6 7    */

			movq      mm4, mm1               /* mm4 = v2 - v3          L  0 1r2 3 4w5 6 7    */
			psllw     mm1, 2                 /* mm1 = 4 * (v2 - v3)    L  0 1m2 3 4 5 6 7    */

			paddw     mm1, mm4               /* mm1 = 5 * (v2 - v3)    L  0 1m2 3 4r5 6 7    */
			psubw     mm0, mm3               /* mm0 = v1 - v4          L  0m1 2 3r4 5 6 7    */

			psllw     mm0, 1                 /* mm0 = 2 * (v1 - v4)    L  0m1 2 3 4 5 6 7    */

			psubw     mm0, mm1               /* mm0 = a3_1             L  0m1r2 3 4 5 6 7    */

			pxor      mm1, mm1               /* mm1 = 0000000000000000    0 1w2 3 4 5 6 7    */

			pcmpgtw   mm1, mm0               /* is 0 > a3_1 ?          L  0r1m2 3 4 5 6 7    */

			add      ecx, stride           /* ecx += stride              0 1 2 3 4 5 6 7    */ 
			pxor      mm0, mm1               /* mm0 = ABS(a3_1) step 1 L  0m1r2 3 4 5 6 7    */

			psubw     mm0, mm1               /* mm0 = ABS(a3_1) step 2 L  0m1r2 3 4 5 6 7    */

			movd      mm1, [ecx]            /* mm1 = v5v5v5v5v5v5v5v5    0 1w2 3 4 5 6 7    */

			punpcklbw mm1, mm7               /* mm1 = __v5__v5__v5__v5 L  0 1m2 3 4 5 6 7r   */


			add      ecx, stride           /* ecx += stride              0 1 2 3 4 5 6 7    */ 
			psubw     mm3, mm1               /* mm3 = v4 - v5          L  0 1r2 3m4 5 6 7    */

			movd      mm4, [ecx]            /* mm4 = v6v6v6v6v6v6v6v6    0 1 2 3 4w5 6 7    */

			punpcklbw mm4, mm7               /* mm4 = __v6__v6__v6__v6 L  0 1 2 3 4m5 6 7r   */

			add      ecx, stride           /* ecx += stride              0 1 2 3 4 5 6 7    */ 

			movd      mm5, [ecx]            /* mm5 = v7v7v7v7v7v7v7v7    0 1 2 3 4 5w6 7    */
			psubw     mm2, mm4               /* mm2 = v3 - v6          L  0 1 2m3 4r5 6 7    */

			punpcklbw mm5, mm7               /* mm5 = __v7__v7__v7__v7 L  0 1 2 3 4 5m6 7r   */

			add      ecx, stride           /* ecx += stride              0 1 2 3 4 5 6 7    */ 
			psubw     mm5, mm4               /* mm5 = v7 - v6          L  0 1 2 3 4r5m6 7    */

			movq      mm4, mm5               /* mm4 = v7 - v6          L  0 1 2 3 4w5r6 7    */

			psllw     mm4, 2                 /* mm4 = 4 * (v7 - v6)    L  0 1 2 3 4 5m6 7    */

			paddw     mm5, mm4               /* mm5 = 5 * (v7 - v6)    L  0 1 2 3 4r5m6 7    */

			movd      mm4, [ecx]            /* mm4 = v8v8v8v8v8v8v8v8    0 1 2 3 4w5 6 7    */

			punpcklbw mm4, mm7               /* mm4 = __v8__v8__v8__v8 L  0 1 2 3 4m5 6 7r   */



			psubw     mm1, mm4               /* mm1 = v5 - v8          L  0 1m2 3 4r5 6 7    */

			pxor      mm4, mm4               /* mm4 = 0000000000000000    0 1 2 3 4w5 6 7    */
			psllw     mm1, 1                 /* mm1 = 2 * (v5 - v8)    L  0 1m2 3 4 5 6 7    */

			paddw     mm1, mm5               /* mm1 = a3_2             L  0 1m2 3 4 5r6 7    */

			pcmpgtw   mm4, mm1               /* is 0 > a3_2 ?          L  0 1r2 3 4m5 6 7    */

			pxor      mm1, mm4               /* mm1 = ABS(a3_2) step 1 L  0 1m2 3 4r5 6 7    */

			psubw     mm1, mm4               /* mm1 = ABS(a3_2) step 2 L  0 1m2 3 4r5 6 7    */
			/* at this point, mm0 = ABS(a3_1), mm1 = ABS(a3_2), mm2 = v3 - v6, mm3 = v4 - v5 */

			movq      mm4, mm1               /* mm4 = ABS(a3_2)        L  0 1r2 3 4w5 6 7    */

			pcmpgtw   mm1, mm0               /* is ABS(a3_2) > ABS(a3_1)  0r1m2 3 4 5 6 7    */

			pand      mm0, mm1               /* min() step 1           L  0m1r2 3 4 5 6 7    */

			pandn     mm1, mm4               /* min() step 2           L  0 1m2 3 4r5 6 7    */

			por       mm0, mm1               /* min() step 3           L  0m1r2 3 4 5 6 7    */
			/* at this point, mm0 = MIN( ABS(a3_1), ABS(a3_2), mm2 = v3 - v6, mm3 = v4 - v5 */
			movq      mm1, mm3               /* mm1 = v4 - v5          L  0 1w2 3r4 5 6 7    */
			psllw     mm3, 2                 /* mm3 = 4 * (v4 - v5)    L  0 1 2 3m4 5 6 7    */

			paddw     mm3, mm1               /* mm3 = 5 * (v4 - v5)    L  0 1r2 3m4 5 6 7    */
			psllw     mm2, 1                 /* mm2 = 2 * (v3 - v6)    L  0 1 2m3 4 5 6 7    */

			psubw     mm2, mm3               /* mm2 = a3_0             L  0 1 2m3r4 5 6 7    */
			/* at this point, mm0 = MIN( ABS(a3_1), ABS(a3_2), mm1 = v4 - v5, mm2 = a3_0 */
			movq      mm4, mm2               /* mm4 = a3_0             L  0 1 2r3 4w5 6 7    */
			pxor      mm3, mm3               /* mm3 = 0000000000000000    0 1 2 3w4 5 6 7    */

			pcmpgtw   mm3, mm2               /* is 0 > a3_0 ?          L  0 1 2r3m4 5 6 7    */

			movq      mm2, mm_8_x_QP         /* mm4 = 8*QP                0 1 2w3 4 5 6 7    */
			pxor      mm4, mm3               /* mm4 = ABS(a3_0) step 1 L  0 1 2 3r4m5 6 7    */

			psubw     mm4, mm3               /* mm4 = ABS(a3_0) step 2 L  0 1 2 3r4m5 6 7    */
	
			/* compare a3_0 against 8*QP */
			pcmpgtw   mm2, mm4               /* is 8*QP > ABS(d) ?     L  0 1 2m3 4r5 6 7    */

			pand      mm2, mm4               /* if no, d = 0           L  0 1 2m3 4r5 6 7    */

			movq      mm4, mm2               /* mm2 = a3_0             L  0 1 2r3 4w5 6 7    */
			
			/* at this point, mm0 = MIN( ABS(a3_1), ABS(a3_2), mm1 = v4 - v5, mm2 = a3_0 , mm3 = SGN(a3_0), mm4 = ABS(a3_0) */
			psubusw   mm4, mm0               /* mm0 = (A3_0 - a3_0)    L  0r1 2 3 4m5 6 7    */

			movq      mm0, mm4               /* mm0=ABS(d)             L  0w1 2 3 4r5 6 7    */

			psllw     mm0, 2                 /* mm0 = 4 * (A3_0-a3_0)  L  0m1 2 3 4 5 6 7    */

			paddw     mm0, mm4               /* mm0 = 5 * (A3_0-a3_0)  L  0m1 2 3 4r5 6 7    */

			paddw     mm0, mm_0020           /* mm0 += 32              L  0m1 2 3 4 5 6 7    */

			psraw     mm0, 6                 /* mm0 >>= 6              L  0m1 2 3 4 5 6 7    */
			/* at this point, mm0 = ABS(d), mm1 = v4 - v5, mm3 = SGN(a3_0) */
	
			pxor      mm2, mm2               /* mm2 = 0000000000000000    0 1 2w3 4 5 6 7    */

			pcmpgtw   mm2, mm1               /* is 0 > (v4 - v5) ?     L  0 1r2m3 4 5 6 7    */

			pxor      mm1, mm2               /* mm1 = ABS(mm1) step 1  L  0 1m2r3 4 5 6 7    */

			psubw     mm1, mm2               /* mm1 = ABS(mm1) step 2  L  0 1m2r3 4 5 6 7    */

			psraw     mm1, 1                 /* mm1 >>= 2              L  0 1m2 3 4 5 6 7    */
			/* OK at this point, mm0 = ABS(d), mm1 = ABS(q), mm2 = SGN(q), mm3 = SGN(-d) */
			movq      mm4, mm2               /* mm4 = SGN(q)           L  0 1 2r3 4w5 6 7    */

			pxor      mm4, mm3               /* mm4 = SGN(q) ^ SGN(-d) L  0 1 2 3r4m5 6 7    */

			movq      mm5, mm0               /* mm5 = ABS(d)           L  0r1 2 3 4 5w6 7    */

			pcmpgtw   mm5, mm1               /* is ABS(d) > ABS(q) ?   L  0 1r2 3 4 5m6 7    */

			pand      mm1, mm5               /* min() step 1           L  0m1 2 3 4 5r6 7    */

			pandn     mm5, mm0               /* min() step 2           L  0 1r2 3 4 5m6 7    */

			por       mm1, mm5               /* min() step 3           L  0m1 2 3 4 5r6 7    */

			pand      mm1, mm4               /* if signs differ, set 0 L  0m1 2 3 4r5 6 7    */

			pxor      mm1, mm2               /* Apply sign step 1      L  0m1 2r3 4 5 6 7    */

			psubw     mm1, mm2               /* Apply sign step 2      L  0m1 2r3 4 5 6 7    */
			/* at this point we have d in mm1 */
		


		pop ecx



		};

		if (i==0) {
			__asm {
				movq mm6, mm1
			};
		}

	}
	
	/* add d to rows l4 and l5 in memory... */
	pmm1 = (uint64_t *)(&(v[4*stride])); 
	__asm {
		push ecx
		mov ecx, pmm1
		packsswb  mm6, mm1             
		movq      mm0, [ecx]                
		psubb     mm0, mm6               
		movq      [ecx], mm0                
		add       ecx, stride                    /* %0 += stride              0 1 2 3 4 5 6 7    */ 
		paddb     mm6, [ecx]                
		movq      [ecx], mm6                
		pop ecx




	};



	#ifdef PP_SELF_CHECK
	/* do selfcheck */
	for (x=0; x<8; x++) {
		for (y=0; y<2; y++) {
			if (selfcheck[x][y] != v[l4+x+y*stride]) {
				printf("ERROR: problem with vertical default filter in col %d, row %d\n", x, y);	
				printf("%d should be %d\n", v[l4+x+y*stride], selfcheck[x][y]);	
				
			}
		}
	}
	#endif

	


}





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美亚洲另类制服综合在线| 在线免费一区三区| 人人超碰91尤物精品国产| 中文字幕在线不卡一区二区三区| 精品国产乱码久久久久久闺蜜| 欧美精品 国产精品| 欧美三级视频在线播放| 欧美中文字幕一区| 在线播放/欧美激情| 欧美日韩国产精品自在自线| 欧美日韩国产美女| 亚洲精品一线二线三线无人区| 日韩欧美国产一二三区| 精品国产一区久久| 国产丝袜欧美中文另类| 国产精品麻豆欧美日韩ww| 国产精品久久久久久久第一福利| 亚洲天堂2014| 自拍偷拍亚洲综合| 亚洲高清免费视频| 精品一二三四区| 国产精品系列在线播放| 成人av资源在线| 色婷婷激情一区二区三区| 欧美日韩精品免费| 日韩一级在线观看| 欧美国产一区二区在线观看| 亚洲同性gay激情无套| 亚洲国产精品一区二区久久恐怖片 | 亚洲成人av福利| 免费成人性网站| 成人少妇影院yyyy| 欧美日韩一区二区电影| 日韩午夜av一区| 国产精品国产自产拍高清av王其| 亚洲主播在线观看| 国产伦精品一区二区三区在线观看| 成人精品视频网站| 欧美一区二区人人喊爽| 国产精品免费视频观看| 天堂精品中文字幕在线| 高清久久久久久| 欧美伦理电影网| 亚洲品质自拍视频网站| 毛片av一区二区三区| 99国产欧美另类久久久精品 | 粉嫩久久99精品久久久久久夜| 91激情在线视频| 亚洲精品在线网站| 日韩在线观看一区二区| 99久久精品免费观看| 欧美电视剧在线看免费| 亚洲国产日韩av| 成人av资源在线观看| 精品久久国产字幕高潮| 亚洲成人动漫精品| 91丨porny丨首页| 国产欧美一二三区| 精品一区二区三区在线观看国产| 欧美午夜片在线观看| 中文字幕一区日韩精品欧美| 激情久久久久久久久久久久久久久久| 在线看国产一区| 亚洲免费在线看| 成人免费观看视频| 欧美激情一区二区三区不卡| 国产最新精品免费| 日韩你懂的在线观看| 肉色丝袜一区二区| 777亚洲妇女| 亚洲www啪成人一区二区麻豆| 一本久久a久久精品亚洲| 日本一区二区不卡视频| 国产91精品在线观看| 国产亚洲精品福利| 成人性视频网站| 欧美国产1区2区| av电影在线观看不卡| 亚洲欧美日韩国产综合在线| 91社区在线播放| 一区二区久久久久久| 色播五月激情综合网| 亚洲一区二区成人在线观看| 色88888久久久久久影院野外| 一区二区视频在线看| 在线亚洲一区观看| 日韩精品久久久久久| 日韩精品一区二区三区视频在线观看 | 久久99久久精品| 欧美videos大乳护士334| 久久精品久久综合| 久久久蜜桃精品| 99在线视频精品| 亚洲一区二区三区四区的| 欧美日韩成人一区| 国产在线视频一区二区| 欧美国产日韩亚洲一区| 色综合久久综合中文综合网| 一区二区三区四区在线| 91精品国产综合久久国产大片| 美女视频一区在线观看| 国产女主播视频一区二区| 99re成人精品视频| 日韩电影一二三区| 国产欧美视频在线观看| 欧美日韩免费高清一区色橹橹 | 欧美精品一级二级三级| 精品一区二区免费在线观看| 自拍偷拍国产精品| 538prom精品视频线放| 国产激情一区二区三区四区| 亚洲精品日产精品乱码不卡| 日韩一区二区在线看| 成人av在线一区二区三区| 性久久久久久久久久久久| 久久精品亚洲精品国产欧美kt∨| 色综合久久久久综合| 精品一区二区三区在线视频| 日日噜噜夜夜狠狠视频欧美人| 欧美福利视频一区| 成人精品视频.| 狠狠色丁香久久婷婷综合丁香| 日韩伦理av电影| 精品国产乱码久久久久久牛牛| 91美女在线观看| 国产精品99久久久久久久vr| 亚洲国产va精品久久久不卡综合| 久久蜜桃一区二区| 欧美福利视频一区| 在线看日韩精品电影| 91香蕉视频污在线| 福利电影一区二区| 久久www免费人成看片高清| 亚洲国产综合在线| 亚洲丝袜制服诱惑| 中文字幕欧美日韩一区| 精品国产123| 日韩欧美色综合网站| 欧美日韩一区高清| 欧洲一区二区av| 色综合久久中文字幕| 国产不卡高清在线观看视频| 日本免费在线视频不卡一不卡二 | 欧美肥妇free| 在线视频一区二区三区| 成人免费高清在线观看| 国产成人免费在线观看不卡| 激情五月婷婷综合| 国内精品视频666| 国产老妇另类xxxxx| 久久激五月天综合精品| 日本在线播放一区二区三区| 亚洲成人久久影院| 亚洲国产一二三| 亚洲一区在线观看视频| 夜夜嗨av一区二区三区网页| 一区二区三区国产精华| 亚洲精品免费在线| 亚洲一二三四在线观看| 亚洲一区二区在线免费观看视频 | 精品精品国产高清一毛片一天堂| 日韩一区二区三区免费看| 日韩一区二区三| 精品久久人人做人人爽| 欧美精品一区二区三区很污很色的 | 精品一区二区免费看| 久久国产欧美日韩精品| 国产精品一区二区久激情瑜伽| 国产乱码一区二区三区| 国产盗摄一区二区| 色网站国产精品| 欧美日韩国产一级片| 精品免费99久久| 国产精品看片你懂得 | 欧美一区二区三区影视| 精品久久久久一区二区国产| 国产精品五月天| 一区二区三区不卡视频| 日本不卡视频一二三区| 激情综合五月婷婷| 91片黄在线观看| 日韩欧美中文字幕精品| 久久免费视频一区| 亚洲女同女同女同女同女同69| 亚洲成人动漫精品| 成人综合婷婷国产精品久久免费| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲欧美在线视频| 亚洲大尺度视频在线观看| 国内欧美视频一区二区| 在线观看网站黄不卡| 日韩欧美资源站| 亚洲综合免费观看高清完整版在线| 日本欧美一区二区三区乱码| www.亚洲激情.com| 精品久久久久香蕉网| 亚洲一区二区三区不卡国产欧美 | 综合久久国产九一剧情麻豆| 日韩av一区二区三区四区| 成人av在线资源网站|