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

📄 pixelproc.c

📁 在CCS环境下的一个视频采集源代码
💻 C
字号:
#include "PixelProc.h"
#include "defines.h"
#include "menu.h"

#include <csl.h>
#include <csl_emifa.h>
#include <csl_gpio.h>
#include <csl_irq.h>
#include <csl_chip.h>
#include <csl_dat.h>

extern UserSettings us;

void savePic(Uint32 srcY, Uint32 destY, Uint32 srcCr, Uint32 destCr, 
			 Uint32 srcCb, Uint32 destCb)
{
	int i;
	// Y buffer
	for(i=0;i<NUMLINES;i++){
		DAT_copy((void *)(srcY + i * 720), 
	             (void *)(destY + i * 720),
	             720);
	}
	// Cr buffer
	for(i=0;i<NUMLINES;i++){
	    DAT_copy((void *)(srcCr + i * 360), 
	             (void *)(destCr + i * 360),
	             360);
	}
	// Cb buffer
	for(i=0;i<NUMLINES;i++){
	    DAT_copy((void *)(srcCb + i * 360), 
	             (void *)(destCb + i * 360),
	             360);
	}
}

void savePic_down(Uint32 srcY, Uint32 destY, Uint32 srcCr, Uint32 destCr, 
			 Uint32 srcCb, Uint32 destCb)
{
	int i;
	// Y buffer
	for(i=0;i<NUMLINES;i++){
		DAT_copy((void *)(srcY + i * 720), 
	             (void *)(destY + (i+2) * 720),
	             720);
	}
	// Cr buffer
	for(i=0;i<NUMLINES;i++){
	    DAT_copy((void *)(srcCr + i * 360), 
	             (void *)(destCr + (i+2) * 360),
	             360);
	}
	// Cb buffer
	for(i=0;i<NUMLINES;i++){
	    DAT_copy((void *)(srcCb + i * 360), 
	             (void *)(destCb + (i+2) * 360),
	             360);
	}
}

void MirrorPic(Uint32 srcY, Uint32 destY, Uint32 srcCr, Uint32 destCr, 
			    Uint32 srcCb, Uint32 destCb)
{	int i,j; 

	for (i=0;i<NUMLINES;i++){
		for(j=0;j<NUMPIXELS;j++){
			*(Uint8*)(destY + i*NUMPIXELS +(NUMPIXELS-j-1)) = *(Uint8*)(srcY + i*NUMPIXELS +j);
		}
		for(j=0;j<NUMPIXELS/2;j++){
			*(Uint8*)(destCr + i*NUMPIXELS/2 +(NUMPIXELS/2-j-1)) = *(Uint8*)(srcCr + i*NUMPIXELS/2 +j);
		}
		for(j=0;j<NUMPIXELS/2;j++){
			*(Uint8*)(destCb + i*NUMPIXELS/2 +(NUMPIXELS/2-j-1)) = *(Uint8*)(srcCb + i*NUMPIXELS/2 +j);
		}
	}
}

void FlipPic(Uint32 srcY, Uint32 destY, Uint32 srcCr, Uint32 destCr, 
			  Uint32 srcCb, Uint32 destCb)
{	int i;
	for (i=0;i<NUMLINES;i++){
		DAT_copy((void *)(srcY + i * 720), 
	             (void *)(destY + (NUMLINES-i-1) * 720),
	             720);
	}
	for(i=0;i<NUMLINES;i++){
	    DAT_copy((void *)(srcCr + i * 360), 
	             (void *)(destCr + (NUMLINES-i-1) * 360),
	             360);
	}
	for(i=0;i<NUMLINES;i++){
	    DAT_copy((void *)(srcCb + i * 360), 
	             (void *)(destCb + (NUMLINES-i-1) * 360),
	             360);
	}
}

void InvertPic(Uint32 srcY, Uint32 destY, Uint32 srcCr, Uint32 destCr, 
			   Uint32 srcCb, Uint32 destCb)
{
	int i;
	int j;

	for(i=0;i<NUMLINES;i++){
		for(j=0;j<NUMPIXELS;j++){
			*(Uint8*)(destY + i*NUMPIXELS +j) = 255 - *(Uint8*)(srcY + i*NUMPIXELS +j);
		}
		for(j=0;j<NUMPIXELS/2;j++){
			*(Uint8*)(destCr + i*NUMPIXELS/2 +j) = *(Uint8*)(srcCr + i*NUMPIXELS/2 +j);
		}
		for(j=0;j<NUMPIXELS/2;j++){
				*(Uint8*)(destCb + i*NUMPIXELS/2 +j) = *(Uint8*)(srcCb + i*NUMPIXELS/2 +j);
		}
	}
}


void MultiPic4(Uint32 srcY, Uint32 destY, Uint32 srcCr, Uint32 destCr, 
			  Uint32 srcCb, Uint32 destCb)
{
	int i = 0;
	int j = 0;

	if(us.MP_index<3){
		for(i=0;i<NUMLINES;i++){
			DAT_copy((void *)(srcY + i* 720), 
		             (void *)(multiYbuffer + (2 * i + us.MP_index - 1) * 720),
		             720);
		}
		for(i=0;i<NUMLINES;i++){
		    DAT_copy((void *)(srcCr + i * 360), 
		             (void *)(multiCrbuffer + (2 * i + us.MP_index - 1) * 360),
		             360);
		}
		for(i=0;i<NUMLINES;i++){
		    DAT_copy((void *)(srcCb + i * 360), 
		             (void *)(multiCbbuffer + (2 * i + us.MP_index - 1) * 360),
		             360);
		}
	}
	else{
		for(i=0;i<NUMLINES;i++){
			// Y buffer
			DAT_copy((void *)(srcY + i* 720), 
		             (void *)(multiYbuffer + (2 * i + us.MP_index - 3 + 974) * 720),
		             720);
		}
		for(i=0;i<NUMLINES;i++){
			// Cr buffer
		    DAT_copy((void *)(srcCr + i * 360), 
		             (void *)(multiCrbuffer + (2 * i + us.MP_index - 3 + 974) * 360),
		             360);
		}
		for(i=0;i<NUMLINES;i++){
			// Cb buffer
		    DAT_copy((void *)(srcCb + i * 360), 
		             (void *)(multiCbbuffer + (2 * i + us.MP_index - 3 + 974) * 360),
		             360);
		}
	}

	// process zoom out on the temporary memory space, count for 4 times.
	for (i=0;i<122;i++){
		//zoom out Y
		for(j=0;j<NUMPIXELS;j++){
			*(Uint8*)(destY + i * NUMPIXELS + j)
			= *(Uint8*)(multiYbuffer + 2 * i * 2 * NUMPIXELS + 2 * j);
		}
		//zoom out Cr
		for(j=0;j<NUMPIXELS/2;j++){
			*(Uint8*)(destCr + i * NUMPIXELS/2 + j)
			= *(Uint8*)(multiCrbuffer + 2 * i * 2 * NUMPIXELS/2 + 2 * j);
		}
		//zoom out Cb
		for(j=0;j<NUMPIXELS/2;j++){
			*(Uint8*)(destCb + i * NUMPIXELS/2 + j)
			= *(Uint8*)(multiCbbuffer + 2 * i * 2 * NUMPIXELS/2 + 2 * j);
		}
	}

	for (i=122;i<244;i++){
		//zoom out Y
		for(j=0;j<NUMPIXELS;j++){
			*(Uint8*)(destY + i * NUMPIXELS + j)
			= *(Uint8*)(multiYbuffer + (2 * i + 243) * 2 * NUMPIXELS + 2 * j);
		}
		//zoom out Cr
		for(j=0;j<NUMPIXELS/2;j++){
			*(Uint8*)(destCr + i * NUMPIXELS/2 + j)
			= *(Uint8*)(multiCrbuffer + (2 * i + 243) * 2 * NUMPIXELS/2 + 2 * j);
		}
		//zoom out Cb
		for(j=0;j<NUMPIXELS/2;j++){
			*(Uint8*)(destCb + i * NUMPIXELS/2 + j)
			= *(Uint8*)(multiCbbuffer + (2 * i + 243) * 2 * NUMPIXELS/2 + 2 * j);
		}
	}

	for (i=244;i<365;i++){
		//zoom out Y
		for(j=0;j<NUMPIXELS;j++){
			*(Uint8*)(destY + i * NUMPIXELS + j)
			= *(Uint8*)(multiYbuffer + 2 * (i - 122) * 2 * NUMPIXELS + 2 * j);
		}
		//zoom out Cr
		for(j=0;j<NUMPIXELS/2;j++){
			*(Uint8*)(destCr + i * NUMPIXELS/2 + j)
			= *(Uint8*)(multiCrbuffer + 2 * (i - 122) * 2 * NUMPIXELS/2 + 2 * j);
		}
		//zoom out Cb
		for(j=0;j<NUMPIXELS/2;j++){
			*(Uint8*)(destCb + i * NUMPIXELS/2 + j)
			= *(Uint8*)(multiCbbuffer + 2 * (i - 122) * 2 * NUMPIXELS/2 + 2 * j);
		}
	}

	for (i=365;i<NUMLINES;i++){//i = 365
		//zoom out Y
		for(j=0;j<NUMPIXELS;j++){
			*(Uint8*)(destY + (i+1) * NUMPIXELS + j)
			= *(Uint8*)(multiYbuffer + 2 * i * 2 * NUMPIXELS + 2 * j);
		}
		//zoom out Cr
		for(j=0;j<NUMPIXELS/2;j++){
			*(Uint8*)(destCr + (i+1) * NUMPIXELS/2 + j)
			= *(Uint8*)(multiCrbuffer + 2 * i * 2 * NUMPIXELS/2 + 2 * j);
		}
		//zoom out Cb
		for(j=0;j<NUMPIXELS/2;j++){
			*(Uint8*)(destCb + (i+1) * NUMPIXELS/2 + j)
			= *(Uint8*)(multiCbbuffer + 2 * i * 2 * NUMPIXELS/2 + 2 * j);
		}
	}
}

void MultiPic2(Uint32 srcY, Uint32 destY, Uint32 srcCr, Uint32 destCr, 
			  Uint32 srcCb, Uint32 destCb)
{
	int i = 0;
	int j = 0;

	if(us.MP_index<3){
		for(i=0;i<NUMLINES;i++){
			// Y buffer
			DAT_copy((void *)(srcY + i* 720), 
		             (void *)(multiYbuffer + (2 * i + us.MP_index - 1) * 720),
		             720);
		}
		for(i=0;i<NUMLINES;i++){
			// Cr buffer
		    DAT_copy((void *)(srcCr + i * 360), 
		             (void *)(multiCrbuffer + (2 * i + us.MP_index - 1) * 360),
		             360);
		}
		for(i=0;i<NUMLINES;i++){
			// Cb buffer
		    DAT_copy((void *)(srcCb + i * 360), 
		             (void *)(multiCbbuffer + (2 * i + us.MP_index - 1) * 360),
		             360);
		}
	}
	else{
		for(i=0;i<NUMLINES;i++){
			// Y buffer
			DAT_copy((void *)(srcY + i* 720), 
		             (void *)(multiYbuffer + (2 * i + us.MP_index - 3 + 974) * 720),
		             720);
		}
		for(i=0;i<NUMLINES;i++){
			// Cr buffer
		    DAT_copy((void *)(srcCr + i * 360), 
		             (void *)(multiCrbuffer + (2 * i + us.MP_index - 3 + 974) * 360),
		             360);
		}
		for(i=0;i<NUMLINES;i++){
			// Cb buffer
		    DAT_copy((void *)(srcCb + i * 360), 
		             (void *)(multiCbbuffer + (2 * i + us.MP_index - 3 + 974) * 360),
		             360);
		}
	}

	// zoomout X only 
	for (i=0;i<NUMLINES;i++){
		//zoom out Y
		for(j=0;j<NUMPIXELS;j++){
			*(Uint8*)(destY + i*NUMPIXELS + j) = *(Uint8*)(srcY + 2 * i * NUMPIXELS + 2 * j);
		}
		//zoom out Cr
		for(j=0;j<NUMPIXELS/2;j++){
			*(Uint8*)(destCr + i*NUMPIXELS/2 + j) = *(Uint8*)(srcCr + 2 * i * NUMPIXELS/2 + 2 * j);
		}
		//zoom out Cb
		for(j=0;j<NUMPIXELS/2;j++){
			*(Uint8*)(destCb + i*NUMPIXELS/2 + j) = *(Uint8*)(srcCb + 2 * i * NUMPIXELS/2 + 2 * j);
		}
	}
}



⌨️ 快捷键说明

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