static inline bool isHorizDCAndCopy2Temp(uint8_t src[], int stride)
static inline int isHorizDCAndCopy2Temp(uint8_t src[], int stride)
static inline bool isHorizDCAndCopy2Temp(uint8_t src[], int stride){//	src++;	int numEq= 0;#ifdef HAVE_MMXasm volatile (//		"int $3 \n\t"		"pushl %1\n\t"		"movq b7E, %%mm7				\n\t" // mm7 = 0x7F		"movq b7C, %%mm6				\n\t" // mm6 = 0x7D		"leal tempBlock, %%eax				\n\t"		"pxor %%mm0, %%mm0				\n\t"#define HDC_CHECK_AND_CPY(i) \		"movq -4(%1), %%mm2				\n\t"\		"psrlq $32, %%mm2				\n\t"\		"punpckldq 4(%1), %%mm2				\n\t" /* (%1) */\		"movq %%mm2, %%mm1				\n\t"\		"psrlq $8, %%mm2				\n\t"\		"psubb %%mm1, %%mm2				\n\t"\		"paddb %%mm7, %%mm2				\n\t"\		"pcmpgtb %%mm6, %%mm2				\n\t"\		"paddb %%mm2, %%mm0				\n\t"\		"movq %%mm1," #i "(%%eax)			\n\t"		HDC_CHECK_AND_CPY(0)		"addl %2, %1					\n\t"		HDC_CHECK_AND_CPY(8)		"addl %2, %1					\n\t"		HDC_CHECK_AND_CPY(16)		"addl %2, %1					\n\t"		HDC_CHECK_AND_CPY(24)		"addl %2, %1					\n\t"		HDC_CHECK_AND_CPY(32)		"addl %2, %1					\n\t"		HDC_CHECK_AND_CPY(40)		"addl %2, %1					\n\t"		HDC_CHECK_AND_CPY(48)		"addl %2, %1					\n\t"		HDC_CHECK_AND_CPY(56)		"psllq $8, %%mm0				\n\t" // remove dummy value		"movq %%mm0, %%mm1				\n\t"		"psrlw $8, %%mm0				\n\t"		"paddb %%mm1, %%mm0				\n\t"		"movq %%mm0, %%mm1				\n\t"		"psrlq $16, %%mm0				\n\t"		"paddb %%mm1, %%mm0				\n\t"		"movq %%mm0, %%mm1				\n\t"		"psrlq $32, %%mm0				\n\t"		"paddb %%mm1, %%mm0				\n\t"		"popl %1\n\t"		"movd %%mm0, %0					\n\t"		: "=r" (numEq)		: "r" (src), "r" (stride)		: "%eax"		);//	printf("%d\n", numEq);	numEq= (256 - (numEq & 0xFF)) &0xFF;#else	for(int y=0; y<BLOCK_SIZE; y++)	{		if(((src[0] - src[1] + 1) & 0xFFFF) < 3) numEq++;		if(((src[1] - src[2] + 1) & 0xFFFF) < 3) numEq++;		if(((src[2] - src[3] + 1) & 0xFFFF) < 3) numEq++;		if(((src[3] - src[4] + 1) & 0xFFFF) < 3) numEq++;		if(((src[4] - src[5] + 1) & 0xFFFF) < 3) numEq++;		if(((src[5] - src[6] + 1) & 0xFFFF) < 3) numEq++;		if(((src[6] - src[7] + 1) & 0xFFFF) < 3) numEq++;		tempBlock[0 + y*TEMP_STRIDE] = src[0];		tempBlock[1 + y*TEMP_STRIDE] = src[1];		tempBlock[2 + y*TEMP_STRIDE] = src[2];		tempBlock[3 + y*TEMP_STRIDE] = src[3];		tempBlock[4 + y*TEMP_STRIDE] = src[4];		tempBlock[5 + y*TEMP_STRIDE] = src[5];		tempBlock[6 + y*TEMP_STRIDE] = src[6];		tempBlock[7 + y*TEMP_STRIDE] = src[7];		src+= stride;	}#endif/*	if(abs(numEq - asmEq) > 0)	{//		printf("\nasm:%d  c:%d\n", asmEq, numEq);		for(int y=0; y<8; y++)		{			for(int x=0; x<8; x++)			{				printf("%d ", src[x + y*stride]);			}			printf("\n");		}	}*///	printf("%d\n", numEq);	return numEq > hFlatnessThreshold;}