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

📄 mqmacros.blt

📁 WinCE 3.0 BSP, 包含Inter SA1110, Intel_815E, Advantech_PCM9574 等
💻 BLT
📖 第 1 页 / 共 5 页
字号:
		ulCount = ulDWords; \
		while ( ulCount ) \
		{ \
			ulCount--; \
			ulRData = *pulData++; \
			LOOKUP_32BPP(ulData, ulRData, pLookup); \
			geREG(SRC_IMAGE_DATA, ulData); \
		} \
		pSrcBits += lSrcStride; \
	} \
	while( ulExtras ) \
	{ \
		ulExtras--; \
		geREG(SRC_IMAGE_DATA, 0UL); \
	}
	
#endif	//CHECK_SRCFIFO

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$ Routine: Pump Really Packed Src FIFO $$$$$$$$$$$$$$$$$$$$$$$$
#ifdef CHECK_SRCFIFO

#define	MACRO_PUMP_REALLY_PACKED_SRCFIFO(pulSrc, ulDWordsTotal, ulExtras) \
	while( ulDWordsTotal >= SRC_FIFO_MAX_DWORDS ) \
	{ \
		geWAITSRCFIFO( SRC_FIFO_MAX_DWORDS ); \
		for( LONG i = 0UL; i < SRC_FIFO_MAX_DWORDS; i++ ) \
			geREG(SRC_IMAGE_DATA, *pulSrc++); \
		ulDWordsTotal -= SRC_FIFO_MAX_DWORDS; \
	} \
	if ( ulDWordsTotal + ulExtras ) \
	{ \
		geWAITSRCFIFO( ulDWordsTotal + ulExtras ); \
		while ( ulDWordsTotal-- ) \
			geREG(SRC_IMAGE_DATA, *pulSrc++); \
		while ( ulExtras-- ) \
		{ \
			geREG(SRC_IMAGE_DATA, 0UL); \
		} \
	}
	
#else	//CHECK_SRCFIFO

#define	MACRO_PUMP_REALLY_PACKED_SRCFIFO(pulSrc, ulDWordsTotal, ulExtras) \
	while( ulDWordsTotal-- ) \
		geREG(SRC_IMAGE_DATA, *pulSrc++); \
	while ( ulExtras-- ) \
		geREG(SRC_IMAGE_DATA, 0UL);
		
#endif	//CHECK_SRCFIFO

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$ Routine: Pump Packed Src FIFO LKUP 2BPP $$$$$$$$$$$$$$$$$$$$$
#define	MACRO_PUMP_PACKED_SRCFIFO_LOOKUP2_8BPP(pSrcBits, ulDWords, ulExtras, \
										ulOffset, lSrcStride, height, pLookup) \
	PUCHAR	pubData; \
	ULONG   ulData, i;\
	while( height-- ) \
	{ \
		pubData = (PUCHAR)pSrcBits; \
		for ( i = 0; i < ulDWords; i++ ) \
		{ \
			ulData =  (pLookup[(*pubData >> 6) & 0x03UL]) \
					| (pLookup[(*pubData >> 4) & 0x03UL] << 8) \
					| (pLookup[(*pubData >> 2) & 0x03UL] << 16) \
					| (pLookup[ *pubData       & 0x03UL] << 24); \
			geREG(SRC_IMAGE_DATA, ulData); \
		} \
		pSrcBits += lSrcStride; \
		pubData++; \
	} \
	while( ulExtras-- ) \
		geREG(SRC_IMAGE_DATA, 0UL);

#define	MACRO_PUMP_PACKED_SRCFIFO_LOOKUP2_16BPP(pSrcBits, ulDWords, ulExtras, \
										ulOffset, lSrcStride, height, pLookup) \
	PUCHAR	pubData; \
	ULONG	ulData, i; \
	while( height-- ) \
	{ \
		pubData = (PUCHAR)pSrcBits; \
		for (i = 0; 0 < ulDWords; pubData++) \
		{ \
			for (int j = 6; j >= 0 && i < ulDWords; j -= 4) \
			{ \
				ulData = (pLookup[(*pubData >> j) & 0x03UL]) \
					   | (pLookup[(*pubData >> (j-2)) & 0x03UL] << 16); \
				geREG(SRC_IMAGE_DATA, ulData); \
				i++; \
			} \
		} \
		pSrcBits += lSrcStride; \
	} 

#define	MACRO_PUMP_PACKED_SRCFIFO_LOOKUP2_32BPP(pSrcBits, ulDWords, ulExtras, \
										ulOffset, lSrcStride, height, pLookup) \
	PUCHAR	pubData; \
	ULONG   i; \
	while( height-- ) \
	{ \
		pubData = (PUCHAR)pSrcBits; \
		for ( i = 0; i < ulDWords; pubData++) \
		{ \
			for (int j = 6; j >= 0 && i < ulDWords; j -= 2) \
			{ \
				geREG(SRC_IMAGE_DATA, pLookup[(*pubData >> j) & 0x03UL]); \
				i++; \
			} \
		} \
		pSrcBits += lSrcStride; \
	} 

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$ Routine: Pump Packed Src FIFO LKUP 4BPP $$$$$$$$$$$$$$$$$$$$$
#ifdef CHECK_SRCFIFO

#define	MACRO_PUMP_PACKED_SRCFIFO_LOOKUP4_8BPP(pSrcBits, ulDWords, ulExtras, \
										ulOffset, lSrcStride, height, pLookup) \
	PULONG  pulData; \
	ULONG ulData, ulRData, ulCount; \
	ULONG	i, j, k; \
	while( height-- ) \
	{ \
		pulData = (PULONG)pSrcBits; \
	   j = ulDWords; \
		while (j >= SRC_FIFO_MAX_DWORDS) \
		{ \
	    	geWAITSRCFIFO( SRC_FIFO_MAX_DWORDS ); \
			for (i=0; i < SRC_FIFO_MAX_DWORDS; i+=2) \
			{ \
			   ulRData = *pulData++; \
				for (k=0; k < 32; k+=16) \
				{ \
					ulRData >>= k; \
					LOOKUP4_8BPP(ulData, ulRData, pLookup); \
					geREG(SRC_IMAGE_DATA, ulData); \
				} \
			} \
			j -= SRC_FIFO_MAX_DWORDS; \
		} \
		geWAITSRCFIFO(j); \
		ulCount = j >> 1; \
		while (ulCount) \
		{ \
		   ulRData = *pulData++; \
			for (k=0; k < 32; k+=16) \
			{ \
				ulRData >>= k; \
				LOOKUP4_8BPP(ulData, ulRData, pLookup); \
				geREG(SRC_IMAGE_DATA, ulData); \
			} \
			ulCount--; \
		} \
		if (j & 0x01UL) \
		{ \
			ulRData = *pulData; \
			LOOKUP4_8BPP(ulData, ulRData, pLookup); \
			geREG(SRC_IMAGE_DATA, ulData); \
		} \
		pSrcBits += lSrcStride; \
	} 
	
#define	MACRO_PUMP_PACKED_SRCFIFO_LOOKUP4_16BPP(pSrcBits, ulDWords, ulExtras, \
										ulOffset, lSrcStride, height, pLookup) \
	PULONG	pulData; \
	ULONG ulData, ulRData, ulRByte, ulMax, ulCount, ulNByte, i, j, k; \
	if (ulOffset) \
	{ \
		if ((0x04UL - ulOffset) <= ulDWords) \
		{ \
			ulMax = 0x20UL; \
			ulCount = ulDWords + ulOffset - 0x04UL; \
		} \
		else \
		{ \
			ulMax = (ulDWords + ulOffset) << 3; \
			ulCount = 0UL; \
		} \
		ulOffset <<= 3; \
	} \
	else \
		ulCount = ulDWords; \
	ulNByte = (ulCount & 0x03UL) << 3; \
	while( height-- ) \
	{ \
		pulData = (PULONG)pSrcBits; \
		if (ulOffset) \
		{ \
			ulRData = *pulData++; \
	  		geWAITSRCFIFO(4); \
			for (i=ulOffset; i < ulMax; i+=8 ) \
			{ \
				ulRByte = ulRData >> i; \
				LOOKUP4_16BPP(ulData, ulRByte, pLookup); \
				geREG(SRC_IMAGE_DATA, ulData); \
			} \
		} \
		j = ulCount; \
		while (j >= SRC_FIFO_MAX_DWORDS) \
		{ \
	    	geWAITSRCFIFO( SRC_FIFO_MAX_DWORDS ); \
			for (k = 0; k < SRC_FIFO_MAX_DWORDS; k+=4) \
			{ \
				ulRData = *pulData++; \
				for (i=0; i < 32; i+=8 ) \
				{ \
					ulRByte = ulRData >> i; \
					LOOKUP4_16BPP(ulData, ulRByte, pLookup); \
					geREG(SRC_IMAGE_DATA, ulData); \
				} \
			} \
			j -= SRC_FIFO_MAX_DWORDS; \
		} \
		geWAITSRCFIFO(j); \
		if (j >>= 2) \
		{ \
			for (k = 0; k < j; k++) \
			{ \
				ulRData = *pulData++; \
				for (i=0; i < 32; i+=8 ) \
				{ \
					ulRByte = ulRData >> i; \
					LOOKUP4_16BPP(ulData, ulRByte, pLookup); \
					geREG(SRC_IMAGE_DATA, ulData); \
				} \
			} \
		} \
		if (ulNByte) \
		{ \
			ulRData = *pulData; \
			for (i=0; i < ulNByte; i+=8 ) \
			{ \
				ulRByte = ulRData >> i; \
				LOOKUP4_16BPP(ulData, ulRByte, pLookup); \
				geREG(SRC_IMAGE_DATA, ulData); \
			} \
		} \
		pSrcBits += lSrcStride; \
	}	

#define	MACRO_PUMP_PACKED_SRCFIFO_LOOKUP4_32BPP(pSrcBits, ulDWords, ulExtras, \
										ulOffset, lSrcStride, height, pLookup) \
	PULONG	pulData; \
	ULONG   i,j,k,ulRData,ulRByte,ulCount,ulBCnt,ulNCnt,ulMax; \
	if (ulOffset) \
	{ \
		ulOffset <<= 1; \
		if ((0x08UL - ulOffset) <= ulDWords) \
		{ \
			ulMax = 0x20UL; \
			ulCount = ulDWords + ulOffset - 0x08UL; \
		} \
		else \
		{ \
			ulMax = (ulDWords + ulOffset) << 2; \
			ulCount = 0UL; \
		} \
		ulOffset <<= 2; \
	} \
	else \
		ulCount = ulDWords; \
	ulBCnt = (ulCount & 0x07UL) >> 1; \
	ulNCnt = ulCount & 0x01UL; \
	while( height-- ) \
	{ \
		pulData = (PULONG)pSrcBits; \
		if (ulOffset) \
		{ \
			ulRData = *pulData++; \
			geWAITSRCFIFO(4); \
			for (i=ulOffset; i < ulMax; i+=8) \
			{ \
				ulRByte = ulRData >> i; \
				LOOKUP4_32BPP(ulRByte,pLookup); \
			} \
		} \
		j = ulCount; \
		while (j >= SRC_FIFO_MAX_DWORDS) \
		{ \
	    	geWAITSRCFIFO( SRC_FIFO_MAX_DWORDS ); \
			for (k = 0; k < SRC_FIFO_MAX_DWORDS; k+=8) \
			{ \
				ulRData = *pulData++; \
				for (i=0; i < 32; i+=8 ) \
				{ \
					ulRByte = ulRData >> i; \
					LOOKUP4_32BPP(ulRByte, pLookup); \
				} \
			} \
			j -= SRC_FIFO_MAX_DWORDS; \
		} \
		geWAITSRCFIFO(j); \
		if (j >>= 3) \
		{ \
			for (k = 0; k < j; k++) \
			{ \
				ulRData = *pulData++; \
				for (i=0; i < 32; i+=8 ) \
				{ \
					ulRByte = ulRData >> i; \
					LOOKUP4_32BPP(ulRByte, pLookup); \
				} \
			} \
		} \
		if (ulBCnt || ulNCnt) \
		{ \
			ulRData = *pulData; \
	   	for (k=0;k < ulBCnt;k++) \
			{ \
				LOOKUP4_32BPP(ulRData,pLookup); \
				ulRData >>= 8; \
			} \
			if (ulNCnt) \
			{ \
				geREG(SRC_IMAGE_DATA, pLookup[ulRData & 0x0FUL]); \
			} \
		} \
		pSrcBits += lSrcStride; \
	} 
	
#else  /* CHECK_SRCFIFO DISABLED */

#define	MACRO_PUMP_PACKED_SRCFIFO_LOOKUP4_8BPP(pSrcBits, ulDWords, ulExtras, \
										ulOffset, lSrcStride, height, pLookup) \
	PULONG	pulData; \
	ULONG   ulData,ulCount,ulRData,i,j; \
	while( height-- ) \
	{ \
		pulData = (PULONG)pSrcBits; \
		ulCount = ulDWords >> 1; \
		for (i=0; i < ulCount; i++ ) \
		{ \
		   ulRData = *pulData++; \
			for (j=0; j < 32; j+=16) \
			{ \
				ulRData >>= j; \
				LOOKUP4_8BPP(ulData, ulRData, pLookup); \
				geREG(SRC_IMAGE_DATA, ulData); \
			} \
		} \
		if (ulDWords & 0x01UL) \
		{ \
			ulRData = *pulData; \
			LOOKUP4_8BPP(ulData, ulRData, pLookup); \
			geREG(SRC_IMAGE_DATA, ulData); \
		} \
		pSrcBits += lSrcStride; \
	} 

#define	MACRO_PUMP_PACKED_SRCFIFO_LOOKUP4_16BPP(pSrcBits, ulDWords, ulExtras, \
										ulOffset, lSrcStride, height, pLookup) \
	PULONG	pulData; \
	ULONG ulData, ulRData, ulMax, ulRByte, ulCount, ulNByte, i, j; \
	if (ulOffset) \
	{ \
		if ((0x04UL - ulOffset) <= ulDWords) \
		{ \
			ulMax = 0x20UL; \
			ulCount = ulDWords + ulOffset - 0x04UL; \
		} \
		else \
		{ \
			ulMax = (ulDWords + ulOffset) << 3; \
			ulCount = 0UL; \
		} \
		ulOffset <<= 3; \
	} \
	else \
		ulCount = ulDWords; \
	ulNByte = (ulCount & 0x03UL) << 3; \
	ulCount >>= 2; \
	while( height-- ) \
	{ \
		pulData = (PULONG)pSrcBits; \
		if (ulOffset) \
		{ \
			ulRData = *pulData++; \
			for (i=ulOffset; i < ulMax; i+=8 ) \
			{ \
				ulRByte = ulRData >> i; \
				LOOKUP4_16BPP(ulData, ulRByte, pLookup); \
				geREG(SRC_IMAGE_DATA, ulData); \
			} \
		} \
		for (j=0; j < ulCount; j++) \
		{ \
			ulRData = *pulData++; \
			for (i=0; i < 32; i+=8 ) \
			{ \
				ulRByte = ulRData >> i; \
				LOOKUP4_16BPP(ulData, ulRByte, pLookup); \
				geREG(SRC_IMAGE_DATA, ulData); \
			} \
		} \
		if (ulNByte) \
		{ \
			ulRData = *pulData++; \
			for (i=0; i < ulNByte; i+=8 ) \
			{ \
				ulRByte = ulRData >> i; \
				LOOKUP4_16BPP(ulData, ulRByte, pLookup); \
				geREG(SRC_IMAGE_DATA, ulData); \
			} \
		} \
		pSrcBits += lSrcStride; \
	} 

#define	MACRO_PUMP_PACKED_SRCFIFO_LOOKUP4_32BPP(pSrcBits, ulDWords, ulExtras, \
										ulOffset, lSrcStride, height, pLookup) \
	PULONG	pulData; \
	ULONG   i,j,ulRData,ulRByte,ulCount,ulBCnt,ulNCnt,ulMax; \
	if (ulOffset) \
	{ \
		ulOffset <<= 1; \
		if ((0x08UL - ulOffset) <= ulDWords) \
		{ \
			ulMax = 0x20UL; \
			ulCount = ulDWords + ulOffset - 0x08UL; \
		} \
		else \
		{ \
			ulMax = (ulDWords + ulOffset) << 2; \
			ulCount = 0UL; \
		} \
		ulOffset <<= 2; \
	} \
	else \
		ulCount = ulDWords; \
	ulBCnt = (ulCount & 0x07UL) >> 1; \
	ulNCnt = ulCount & 0x01UL; \
	ulCount >>= 3; \
	while( height-- ) \
	{ \
		pulData = (PULONG)pSrcBits; \
		if (ulOffset) \
		{ \
			ulRData = *pulData++; \
			for (i=ulOffset; i < ulMax; i+=8) \
			{ \
				ulRByte = ulRData >> i; \
				LOOKUP4_32BPP(ulRByte,pLookup); \
			} \
		} \
		for (j=0;j < ulCount;j++) \
		{ \
			ulRData = *pulData++; \
			for (i=0; i < 32; i+=8) \
			{ \
				ulRByte = ulRData >> i; \
				LOOKUP4_32BPP(ulRByte,pLookup); \
			} \
		} \
		if (ulBCnt || ulNCnt) \
		{ \
			ulRData = *pulData; \
	   	for (j=0;j < ulBCnt;j++) \
			{ \
				LOOKUP4_32BPP(ulRData,pLookup); \
				ulRData >>= 8; \
			} \
			if (ulNCnt) \
			{ \
				geREG(SRC_IMAGE_DATA, pLookup[ulRData & 0x0FUL]); \
			} \
		} \
		pSrcBits += lSrcStride; \
	} 

#endif

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$ Routine: Pump Packed Src FIFO LKUP 8BPP $$$$$$$$$$$$$$$$$$$$$
#ifdef CHECK_SRCFIFO

#define	MACRO_PUMP_PACKED_SRCFIFO_LOOKUP8_16BPP(pSrcBits, ulDWords, ulExtras, \
										ulOffset, lSrcStride, height, pLookup) \
	PULONG  pulData; \
	ULONG  ulRData1,ulRData2,ulRData3,ulData,ulCount,i,j,lsb=0,msb=0; \
	lsb = ulOffset << 3; \
	msb = 0x20UL - lsb; \
	while( height-- ) \
	{ \
		pulData = (PULONG)pSrcBits; \
		if (ulOffset) \
		{ \
			ulRData1 = *pulData++; \
		} \
		ulCount = ulDWords; \
		while (ulCount >= SRC_FIFO_MAX_DWORDS) \
		{ \
	    	geWAITSRCFIFO( SRC_FIFO_MAX_DWORDS ); \
			for(j=0; j < SRC_FIFO_MAX_DWORDS; j+=2) \
			{ \
			   if (ulOffset) \
				{ \
					ulRData2 = *pulData++; \
					ulRData3 = (ulRData2 << msb)|(ulRData1 >> lsb); \
					ulRData1 = ulRData2; \
				} \
				else \
				{ \
					ulRData3 = *pulData++; \
				} \
				for (i=0; i < 32; i+=16) \
				{ \
					ulData = (pLookup[(ulRData3 >> i) & 0xFFUL]) \
					 		| ((pLookup[(ulRData3 >> (i+8)) & 0xFFUL]) << 16); \

⌨️ 快捷键说明

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