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

📄 tvenc_test.c

📁 s3c6400 ADS下官方测试程序
💻 C
📖 第 1 页 / 共 5 页
字号:
							else if ( (ucTemp == 'd') && (uValue > 0) )
								TVENC_SetContrast(uValue-1);
							else if(ucTemp == 'q')
								break;
						}
						break;	
			case 6	:	UART_Printf("\n");
						UART_Printf("'u' : Up,  'd' : Down\n");
						UART_Printf("'q' key to exit\n");
						UART_Printf("\n");
						
						while(1)
						{	
							uValue = TVENC_GetCbGain();	
							UART_Printf("Current Cb Gain value[0~0xFF] : 0x%02x\n", uValue);
							ucTemp = UART_Getc();
							
							if( (ucTemp == 'u') && (uValue < 0xFF) )
								TVENC_SetCbGain(uValue+1);
							else if ( (ucTemp == 'd') && (uValue > 0) )
								TVENC_SetCbGain(uValue-1);
							else if(ucTemp == 'q')
								break;
						}
						break;		
			case 7	:	UART_Printf("\n");
						UART_Printf("'u' : Up,  'd' : Down\n");
						UART_Printf("'q' key to exit\n");
						UART_Printf("\n");
						
						while(1)
						{	
							uValue = TVENC_GetCrGain();	
							UART_Printf("Current Cr Gain value[0~0xFF] : 0x%02x\n", uValue);
							ucTemp = UART_Getc();
							
							if( (ucTemp == 'u') && (uValue < 0xFF) )
								TVENC_SetCrGain(uValue+1);
							else if ( (ucTemp == 'd') && (uValue > 0) )
								TVENC_SetCrGain(uValue-1);
							else if(ucTemp == 'q')
								break;
						}
						break;
						
			case 8	:	UART_Printf("\n");
						UART_Printf("'u' : Up,  'd' : Down\n");
						UART_Printf("'q' key to exit\n");
						UART_Printf("\n");
						
						while(1)
						{	
							uValue = TVENC_GetBright();	
							UART_Printf("Current Brightness Gain value[0~0xFF] : 0x%02x\n", uValue);
							ucTemp = UART_Getc();
							
							if( (ucTemp == 'u') && (uValue < 0xFF) )
								TVENC_SetBright(uValue+1);
							else if ( (ucTemp == 'd') && (uValue > 0) )
								TVENC_SetBright(uValue-1);
							else if(ucTemp == 'q')
								break;
						}
						break;	
						
			case 9	:	UART_Printf("\n");
						UART_Printf("'w' : Vertical Up,  's' : Vertical Down\n");
						UART_Printf("'e' : Horizontal Up,  'd' : Horizontal Down\n");
						UART_Printf("'q' key to exit\n");
						UART_Printf("\n");
						while(1)
						{	
							u32 uVer, uHor;
							
							TVENC_GetActiveWinCenter(&uVer, &uHor);	
							UART_Printf("Current Active Window Center : [%d, %d]\n", uVer, uHor);
							ucTemp = UART_Getc();
							
							if( (ucTemp == 'w') && (uVer < 0x3F) )
								TVENC_SetActiveWinCenter(uVer+1, uHor);
							else if ( (ucTemp == 's') && (uVer > 0) )
								TVENC_SetActiveWinCenter(uVer-1, uHor);
							else if ( (ucTemp == 'e') && (uHor < 0xFF) )
								TVENC_SetActiveWinCenter(uVer, uHor+1);
							else if ( (ucTemp == 'd') && (uHor > 0) )
								TVENC_SetActiveWinCenter(uVer, uHor-1);
							else if(ucTemp == 'q')
								break;
						}
						break;	

			case 10	:	TVENC_EnableEnhancerDemoWindow(TRUE);
						UART_Printf("\n");
						UART_Printf("'w' : Vertical Start Point Up,  	's' : Vertical Start Point Down\n");
						UART_Printf("'e' : Horizontal Start Point Up,  	'd' : Horizontal Start Point Down\n");
						UART_Printf("'r' : Vertical Win_Size Up,  		'f' : Vertical Win_Size Down\n");
						UART_Printf("'t' : Horizontal Win_Size Up,  	'g' : Horizontal Win_Size Down\n");						
						UART_Printf("'q' key to exit\n");
						UART_Printf("\n");
						while(1)
						{	
							u32 uVerSize, uHorSize, uVStart, uHStart;
							
							TVENC_GetEnhancerDemoWindow(&uVerSize, &uVStart, &uHorSize, &uHStart);	
							UART_Printf("Current Demo Window Area : [%d, %d] ~ [%d, %d]\n", uHStart, uVStart, uHorSize, uVerSize);
							ucTemp = UART_Getc();
							
							if( (ucTemp == 'w') && (uVStart < 0x1FF) )
								TVENC_SetEnhancerDemoWindow(uVerSize, uVStart+5, uHorSize, uHStart);
							else if ( (ucTemp == 's') && (uVStart > 0) )
								TVENC_SetEnhancerDemoWindow(uVerSize, uVStart-5, uHorSize, uHStart);
							else if ( (ucTemp == 'e') && (uHStart < 0x7FF) )
								TVENC_SetEnhancerDemoWindow(uVerSize, uVStart, uHorSize, uHStart+5);
							else if ( (ucTemp == 'd') && (uHStart > 0) )
								TVENC_SetEnhancerDemoWindow(uVerSize, uVStart, uHorSize, uHStart-5);
							else if( (ucTemp == 'r') && (uVerSize < 0x1FF) )
								TVENC_SetEnhancerDemoWindow(uVerSize+5, uVStart, uHorSize, uHStart);
							else if ( (ucTemp == 'f') && (uVerSize > 0) )
								TVENC_SetEnhancerDemoWindow(uVerSize-5, uVStart, uHorSize, uHStart);
							else if ( (ucTemp == 't') && (uHorSize < 0x7FF) )
								TVENC_SetEnhancerDemoWindow(uVerSize, uVStart, uHorSize+5, uHStart);
							else if ( (ucTemp == 'g') && (uHorSize > 0) )
								TVENC_SetEnhancerDemoWindow(uVerSize, uVStart, uHorSize-5, uHStart);							
							else if(ucTemp == 'q')
								break;
						}
						//TVENC_SetEnhancerDemoWindow(240, 0, 1440, 0);
						//TVENC_EnableEnhancerDemoWindow(FALSE);
						break;	

			case 11	:	UART_Printf("\n");
						UART_Printf("Select the Background Color[0~7]\n");
						uSelColor = (u32)UART_GetIntNum();
						
						TVENC_EnableBackground(TRUE);
						UART_Printf("\n");
						UART_Printf("'w' : Vertical Start Point Up,  	's' : Vertical Start Point Down\n");
						UART_Printf("'e' : Horizontal Start Point Up,  	'd' : Horizontal Start Point Down\n");
						UART_Printf("'r' : Vertical Visual_Size Up,  	'f' : Vertical Visual_Size Down\n");
						UART_Printf("'t' : Horizontal Visual_Size Up,  	'g' : Horizontal Visual_Size Down\n");						
						UART_Printf("'q' key to exit\n");
						UART_Printf("\n");
						while(1)
						{	
							u32 uOffset, uCurrColor, uVerSize, uHorSize, uVStart, uHStart;

							uOffset = 4;
							TVENC_GetBackground(&uCurrColor, &uHStart, &uVStart, &uHorSize, &uVerSize);	
							UART_Printf("Current Background Color : %d\n", uCurrColor);
							UART_Printf("Current Visual Window Area : [%d, %d] ~ [%d, %d]\n", uHStart*8, uVStart, uHorSize*8, uVerSize);
							ucTemp = UART_Getc();
							
							if( (ucTemp == 'w') && (uVStart < 0xFF) )
								TVENC_SetBackground(uSelColor, uHStart, uVStart+uOffset, uHorSize, uVerSize);
							else if ( (ucTemp == 's') && (uVStart > 0) )
								TVENC_SetBackground(uSelColor, uHStart, uVStart-uOffset, uHorSize, uVerSize);
							else if ( (ucTemp == 'e') && (uHStart < 0xFF) )
								TVENC_SetBackground(uSelColor, uHStart+uOffset, uVStart, uHorSize, uVerSize);
							else if ( (ucTemp == 'd') && (uHStart > 0) )
								TVENC_SetBackground(uSelColor, uHStart-uOffset, uVStart, uHorSize, uVerSize);
							else if( (ucTemp == 'r') && (uVerSize < 0xFF) )
								TVENC_SetBackground(uSelColor, uHStart, uVStart, uHorSize, uVerSize+uOffset);
							else if ( (ucTemp == 'f') && (uVerSize > 0) )
								TVENC_SetBackground(uSelColor, uHStart, uVStart, uHorSize, uVerSize-uOffset);
							else if ( (ucTemp == 't') && (uHorSize < 0xFF) )
								TVENC_SetBackground(uSelColor, uHStart, uVStart, uHorSize+uOffset, uVerSize);
							else if ( (ucTemp == 'g') && (uHorSize > 0) )
								TVENC_SetBackground(uSelColor, uHStart, uVStart, uHorSize-uOffset, uVerSize);							
							else if(ucTemp == 'q')
								break;
						}
						TVENC_SetBackground(1, 0, 0, 180, 240);
						//TVENC_EnableBackground(FALSE);	//default enable
						break;

			case 12	:	UART_Printf("\n");
						UART_Printf("'u' : Up,  'd' : Down\n");
						UART_Printf("'q' key to exit\n");
						UART_Printf("\n");
						
						while(1)
						{	
							uValue = TVENC_GetSharpness();	
							UART_Printf("Current Sharpness Gain value[0~0x3F] : 0x%02x\n", uValue);
							ucTemp = UART_Getc();
							
							if( (ucTemp == 'u') && (uValue < 0x3F) )
								TVENC_SetSharpness(uValue+1);
							else if ( (ucTemp == 'd') && (uValue > 0) )
								TVENC_SetSharpness(uValue-1);
							else if(ucTemp == 'q')
								break;
						}
						break;
						
			default : 	break;

		}
	}


}


static void TVENCT_LoadImageToMemory(void)
{
	u32 uSel;
	u32 uSel_image;

	uImgAddr = CODEC_MEM_ST;

	UART_Printf("What do you want to display Image format, RGB or YUV ?\n");
	UART_Printf("[0] : RGB\n");
	UART_Printf("[1] : YUV\n");
	UART_Printf("[2] : RGB24 CIF COLORBAR\n");
	UART_Printf("Select number : ");
	uSel = UART_GetIntNum();

	if (uSel == 1)
	{
		UART_Printf("Select Image..\n");
		UART_Printf("[0] : YCbCr420 QCIF [176x144]\n");
		UART_Printf("[1] : YCbCr420 QVGA [320x240]\n");
		UART_Printf("[2] : YCbCr420 CIF  [352x288]\n");
		UART_Printf("[3] : YCbCr420 VGA  [640x480]\n");
		UART_Printf("[4] : YCbCr420 WIDE [720x480]\n");
		UART_Printf("[5] : YCbCr422 QCIF [176x144]\n");
		UART_Printf("[6] : YCbCr422 QVGA [320x240]\n");
		UART_Printf("[7] : YCbCr422 CIF  [352x288]\n");
		UART_Printf("[8] : YCbCr422 VGA  [640x480]\n");
		UART_Printf("[9] : YCbCr422 WIDE [720x480]\n");

		uSel = UART_GetIntNum();

		if(uSel > 4)
			uImgResolution = YCBYCR;
		else
			uImgResolution = YC420;

		switch(uSel)
		{
			case 0:
//				pImg_YUV = IMG_420_QCIF; // not ready image
				uImgXsize = 176, uImgYsize = 144;
				break;
			case 1:
				pImg_YUV = IMG_420_QVGA;
				uImgXsize = 320, uImgYsize = 240;
				break;
			case 2:
				pImg_YUV = IMG_420_CIF;
				uImgXsize = 352, uImgYsize = 288;
				break;
			case 3:
				pImg_YUV = IMG_420_VGA;
				uImgXsize = 640, uImgYsize = 480;
				break;
			case 4:
				pImg_YUV = IMG_420_WIDE;
				uImgXsize = 720, uImgYsize = 480;
				break;
			case 5:
				pImg_YUV = IMG_422_QCIF;
				uImgXsize = 176, uImgYsize = 144;
				break;
			case 6:
				pImg_YUV = IMG_422_QVGA;
				uImgXsize = 320, uImgYsize = 240;
				break;
			case 7:
				pImg_YUV = IMG_422_CIF;
				uImgXsize = 352, uImgYsize = 288;
				break;
			case 8:
				pImg_YUV = IMG_422_VGA;
				uImgXsize = 640, uImgYsize = 480;
				break;
			case 9:
				pImg_YUV = IMG_422_WIDE;
				uImgXsize = 720, uImgYsize = 480;
				break;
		}
		LoadFromFile(pImg_YUV, CODEC_MEM_ST);

	}
	else if (uSel == 2)
	{
		uImgResolution = RGB24;

		uImgXsize = 352;
		uImgYsize = 288;

		pImg_RGB = IMG_CIF_CBAR;
		LoadFromFile(pImg_RGB, CODEC_MEM_ST);
	}
	else
	{
		UART_Printf("\nSelect Image\n");
		UART_Printf("[0] : RGB16 QCIF [176x144]\n");
		UART_Printf("[1] : RGB16 QVGA [320x240]\n");
		UART_Printf("[2] : RGB16 CIF  [352x288]\n");
		UART_Printf("[3] : RGB16 VGA  [640x480]\n");
		UART_Printf("[4] : RGB16 WIDE [720x480]\n");
		UART_Printf("[5] : RGB24 QCIF [176x144]\n");
		UART_Printf("[6] : RGB24 QVGA [320x240]\n");
		UART_Printf("[7] : RGB24 CIF  [352x288]\n");
		UART_Printf("[8] : RGB24 VGA  [640x480]\n");
		UART_Printf("[9] : RGB24 WIDE [720x480]\n");
		UART_Printf("Select number : ");

		uSel_image=UART_GetIntNum();

		if (uSel_image > 4)
			uImgResolution = RGB24;
		else
			uImgResolution = RGB16;

		switch (uSel_image % 5)
		{
			case 0:
				uImgXsize = 176, uImgYsize = 144;
				pImg_RGB = IMG_RGB_QCIF;
				break;
			case 1:
				uImgXsize = 320, uImgYsize = 240;
				pImg_RGB = IMG_RGB_QVGA;
				break;
			case 2:
				uImgXsize = 352, uImgYsize = 288;
				pImg_RGB = IMG_RGB_CIF;
				break;
			case 3:
				uImgXsize = 640, uImgYsize = 480;
				pImg_RGB = IMG_RGB_VGA;
				break;
			case 4:
				uImgXsize = 720, uImgYsize = 480;
				pImg_RGB = IMG_RGB_WIDE;
				break;
		}

		uConvertAddr = uImgAddr + uImgXsize*uImgYsize*4;

		LoadFromFile(pImg_RGB, uConvertAddr);

		if(uImgResolution==RGB24)
			ConvertBmpToRgb24bpp(uConvertAddr, uImgAddr, uImgXsize, uImgYsize);
		else if(uImgResolution==RGB16)
			ConvertBmpToRgb16bpp(uConvertAddr, uImgAddr, uImgXsize, uImgYsize);
	}

}




static void TVENCT_SelectTVOutputFormat(void) // TV controller class
{
	u32 uFormatNum, uSelFormat, uSelType;
	u32 i;
	TV_TYPE aTvOutFormat[] =
	{
		"NTSC-M", 				NTSC_M,
		"NTSC-J", 				NTSC_J,
		"PAL-B/D/G/H/I", 		PAL_BGHID,		
//		"PAL-N",    				PAL_N,
		"PAL-M",  				PAL_M,
		"PAL-Nc", 				PAL_NC	
	};

	UART_Printf("\n");
	UART_Printf("0. Composite Out(D)	1. S-Video Out \n");
	UART_Printf("Select the source clock : ");
	
	uSelType = UART_GetIntNum();
	//uSelType = 0;
	
	if(uSelType > 1)
		uSelType = 0;		//Default Composite out
	eConnType = (eTV_CONN_TYPE)uSelType;
	
	uFormatNum = sizeof(aTvOutFormat)/sizeof(TV_TYPE );
	for (i = 0; i < uFormatNum; i++)
		UART_Printf("[%d] : %s\n", i, aTvOutFormat[i].pDesc);
	
	UART_Printf("\nSelect the signal type : ");
	uSelFormat = (u32)UART_GetIntNum();
	//uSelFormat =  0;
	
	UART_Printf("\n");
	if ( (uSelFormat <= uFormatNum) )
		eSigType = aTvOutFormat[uSelFormat].eType;
	
	if( (eSigType == NTSC_M) || (eSigType == NTSC_J) || (eSigType == PAL_M) || (eSigType == NTSC_443) )
		uTvSizeFormat = TVSIZE_NTSC;
	else
		uTvSizeFormat = TVSIZE_PAL;
	
	TVENC_SetTvConMode(eSigType, eConnType);
}


//////////
// Function Name : Scaler_SelectClockDivider
// Function Description : Set the Scaler Clock Divider
// Input : 	None
// Output : 	None
void Scaler_SelectClockDivider(void)
{
	u32 uPostClockDivide;
	
	UART_Printf("[Scaler_SelectClockDivider]\n");

	UART_Printf("\n");
	UART_Printf("Select the source clock [0x01 ~ 0x3F] : ");
	
	uPostClockDivide = (u32)UART_GetIntNum();

	POST_SetClockDivide(uPostClockDivide, &oSc);
}


void TVENCT_Scaler_Enc_FromExtAPI(void)
{
	u32 uImageAddr;

	uImageAddr = CODEC_MEM_ST;
	
	GLIB_InitInstance(uImageAddr, 320, 240, RGB24);
	GLIB_DrawPattern(320, 240);
		
	TVENC_DisplayTVout(NTSC_M, eCOMPOSITE, 720, 480);
	POST_SetScalerforTVout(320, 240, uImageAddr, RGB24, 720, 480, &oSc);

}

extern void ScalerT_SelectClockSource(void);
void TVENCT_Scaler_Enc(void) // post controller initialize
{
	u32 uImgSz, uWidth, uHeight;

	UART_Printf("Select Image Size\n");
	UART_Printf("[0] : Original Image Size\n");
	UART_Printf("[1] : Full Screen size\n");
	UART_Printf("Select number : ");
	uImgSz = UART_GetIntNum();
	//uImgSz = 1;
		
	if(uImgSz)
	{
		TVENCT_GetTVFullSize(&uWidth, &uHeight);
	}
	else
	{
		uWidth = uImgXsize;
		uHeight = uImgYsize;
	}

	INTC_Enable(NUM_TVENC);
	INTC_SetVectAddr(NUM_TVENC, Isr_FifoUnderrun);

	TVENC_SetImageSize(uWidth*2, uHeight);
	TVENC_TurnOnOff(1);

⌨️ 快捷键说明

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