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

📄 tvenc_test.c

📁 s3c6400 ADS下官方测试程序
💻 C
📖 第 1 页 / 共 5 页
字号:
	LCD_SetClkVal(4);
	//LCD_EnableRgbPort();
	
	if(uImgSz)
	{
		TVENCT_GetTVFullSize(&uWidth, &uHeight);
	}
	else
	{
		uWidth = uLcdHsz;
		uHeight = uLcdVsz;
	}

	// FIMC 3.0
	CAMERA_SFRInit();
	CAMERA_InitSensor();
	if(uCamOut == DMA)
		CAMERA_InitPreviewPath_1(uLcdHsz, uLcdVsz, uImgAddr, uImgAddr1, YCBYCR, FLIP_NO, ROT_0);
	else if(uCamOut == FIFO)	
		CAMERA_InitPreviewPathToFifoOut(uLcdHsz, uLcdVsz, YCBYCR);
	
	CAMERA_StartPreviewPath();
	
	// TV ENCODER 2.0
	TVENC_SetImageSize(uWidth*2, uHeight);
	TVENC_TurnOnOff(1);

	// POST 2.5
#if 0	
	POST_InitIpForFifoInFifoOut(uLcdHsz, uLcdVsz, uWidth*2, uHeight, YUV, ONE_SHOT, &oSc);
	POST_SetAutoLoadEnable(FREE_RUN, &oSc);
	POST_SetInterlaceModeOnOff(1, &oSc);
	POST_SetInFifoMode(POST_FIFO, &oSc);
	POST_StartProcessing(&oSc);
#else
	POST_InitIpForFifoInFifoOut(uLcdHsz, uLcdVsz, uWidth*2, uHeight, YUV, FREE_RUN, &oSc);
	POST_SetInterlaceModeOnOff(1, &oSc);
	POST_StartProcessing(&oSc);
#endif

	LCD_Start();

	//INTC_SetHandlerAndUnmask(INT_TVENC0, Isr_FifoUnderrun);
	//INTC_SetHandlerAndUnmask(INT_CAMIF_P, Isr_CamPview);
	INTC_Enable(NUM_TVENC);	
	INTC_SetVectAddr(NUM_TVENC, Isr_FifoUnderrun);
	INTC_Enable(NUM_CAMIF_P);	
	INTC_SetVectAddr(NUM_CAMIF_P, Isr_CamPview);
	
	// POST 2.5
	if(uCamOut == DMA)
	{
		POST_InitIpForDmaInFifoOut(uLcdHsz, uLcdVsz, uImgAddr, YCBYCR, uLcdHsz, uLcdVsz, RGB, 1, &oPost);
		POST_SetNextFrameStAddr(uImgAddr, 0, &oPost);
		//POST_SetNextFrameStAddr(uImgAddr1, 0, &oPost);	//rb1004
		POST_SetInterlaceModeOnOff(0, &oPost);
		POST_StartProcessing(&oPost);		
	}

	TVENCT_SetTVParameter();

	//INTC_Mask(INT_TVENC0);
	//INTC_Mask(INT_CAMIF_P);
	INTC_Disable(NUM_TVENC);
	INTC_Disable(NUM_CAMIF_P);
	
	// oPost die..
	if(uCamOut == DMA)
	{	
		POST_StopProcessingOfFreeRun(&oPost);
		while (!POST_IsProcessingDone(&oPost));	
	}

	// oScaler die..
	POST_SetInterlaceModeOnOff(0, &oSc);
	POST_StopProcessingOfFreeRun(&oSc);
	Delay(1000);

	// oLcdc die..
	LCD_DisableRgbPort();		//rb1004	
	LCD_Stop();

	// oTvenc die..
	TVENC_TurnOnOff(0);

	// oCim die..
	CAMERA_StopPreviewPath();
}

static void TVENCT_MultiLayer_POST_CPUFIMD_Scaler_Enc(void)
{
	u32 uImgSz, uWidth, uHeight;
	u32 uLcdHsz, uLcdVsz;

	uImgAddr = CODEC_MEM_ST;
	uImgAddr1 = CODEC_MEM_LMT;

	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();

	uLcdHsz = 240; uLcdVsz = 320;

	if(uImgSz)
	{
		TVENCT_GetTVFullSize(&uWidth, &uHeight);
	}
	else
	{
		uWidth = uLcdHsz;
		uHeight = uLcdVsz;
	}
	
	//INTC_InitIp();

	// FIMC 3.0
	CAMERA_InitSensor();
	CAMERA_InitPreviewPath_1(uLcdHsz, uLcdVsz, uImgAddr, uImgAddr1, YCBYCR, FLIP_NO, ROT_0);
	CAMERA_StartPreviewPath();

	// TV ENCODER 2.0
	TVENC_SetImageSize(uWidth*2, uHeight);
	TVENC_TurnOnOff(1);

	// POST 2.5
	POST_InitIpForFifoInFifoOut(uLcdHsz, uLcdVsz, uWidth*2, uHeight, YUV, ONE_SHOT, &oSc);
	POST_SetAutoLoadEnable(FREE_RUN, &oSc);
	POST_SetInterlaceModeOnOff(1, &oSc);
	POST_SetInFifoMode(POST_FIFO, &oSc);
	POST_StartProcessing(&oSc);

	// FIMD 4.0

	// background
	//LCD_InitLDI(MAIN);
	LCD_InitBase();
	LCD_InitWinForFifoIn(IN_POST, WIN0);
	LCD_SetWinOnOff(1, WIN0);
	LCD_SetOutputPath(LCD_TVI80F);
	LCD_SetI80Timing(0, 1, 4, 0, MAIN); // cs_setup/wr_setup/wr_act/wr_hold at 40MHz HCLK

	// foreground
	LCD_InitWin(RGB24, uLcdHsz/2, uLcdVsz/2, 0, 0, uLcdHsz/2, uLcdVsz/2, uLcdHsz/4, uLcdVsz/4, uImgAddr1+uLcdHsz*uLcdVsz*4, WIN1, false);
	LCD_SetWinOnOff(1, WIN1);

	GLIB_InitInstance(uImgAddr1+uLcdHsz*uLcdVsz*4, uLcdHsz/2, uLcdVsz/2, RGB24);
	GLIB_DrawPattern(uLcdHsz/2, uLcdVsz/2);

	LCD_Start();

	// POST 2.5
	POST_InitIpForDmaInFifoOut(uLcdHsz, uLcdVsz, uImgAddr, YCBYCR, uLcdHsz, uLcdVsz, RGB, 1, &oPost);
	POST_SetNextFrameStAddr(uImgAddr, 0, &oPost);
	POST_SetAutoLoadEnable(FREE_RUN, &oPost);
	POST_SetInterlaceModeOnOff(0, &oPost);
	POST_SetInFifoMode(POST_DMA, &oPost);

	//INTC_SetHandlerAndUnmask(INT_TVENC0, Isr_FifoUnderrun);
	//INTC_SetHandlerAndUnmask(INT_CAMIF_P, Isr_CamPview);
	INTC_Enable(NUM_TVENC);	
	INTC_SetVectAddr(NUM_TVENC, Isr_FifoUnderrun);
	INTC_Enable(NUM_CAMIF_P);	
	INTC_SetVectAddr(NUM_CAMIF_P, Isr_CamPview);
	
	POST_StartProcessing(&oPost);

	LCD_Trigger();

	TVENCT_SetTVParameter();
	//UART_Printf("Press any key to end..\n");
	//UART_Getc();

	//INTC_Mask(INT_TVENC0);
	//INTC_Mask(INT_CAMIF_P);
	INTC_Disable(NUM_TVENC);
	INTC_Disable(NUM_CAMIF_P);

	// oPost die..
	POST_StopProcessingOfFreeRun(&oPost);
	Delay(1000);

	// oScaler die..
	POST_SetInterlaceModeOnOff(0, &oSc);
	POST_StopProcessingOfFreeRun(&oSc);
	Delay(1000);

	// oLcdc die..
	LCD_Stop();

	// oTvenc die..
	TVENC_TurnOnOff(0);

	// oCim die..
	CAMERA_StopPreviewPath();

}


static void TVENCT_MultiLayer_POST_RGBFIMD_Scaler_Enc(void)
{
	u32 uImgSz, uWidth, uHeight;
	u32 uLcdHsz, uLcdVsz;

	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();

	uImgAddr = CODEC_MEM_ST;
	uImgAddr1 = CODEC_MEM_LMT;	
	//uLcdHsz = 240; uLcdVsz = 320;

	// FIMD 4.0
	//LCD_InitLDI(MAIN);
	LCD_InitBase();
	LCD_InitWinForFifoIn(IN_POST, WIN0);
	LCD_GetFrmSz(&uLcdHsz, &uLcdVsz, WIN0);
	LCD_SetWinOnOff(1, WIN0);
	LCD_SetOutputPath(LCD_TVRGB);
	LCD_SetClkVal(4);
	LCD_EnableRgbPort();
	
	if(uImgSz)
	{
		TVENCT_GetTVFullSize(&uWidth, &uHeight);
	}
	else
	{
		uWidth = uLcdHsz;
		uHeight = uLcdVsz;
	}

	// FIMC 3.0
	CAMERA_SFRInit();	
	CAMERA_InitSensor();
	CAMERA_InitPreviewPath_1(uLcdHsz, uLcdVsz, uImgAddr, uImgAddr1, YCBYCR, FLIP_NO, ROT_0);
	CAMERA_StartPreviewPath();

	// TV ENCODER 2.0
	TVENC_SetImageSize(uWidth*2, uHeight);
	TVENC_TurnOnOff(1);

	// POST 2.5
	POST_InitIpForFifoInFifoOut(uLcdHsz, uLcdVsz, uWidth*2, uHeight, YUV, FREE_RUN, &oSc);
	POST_SetInterlaceModeOnOff(1, &oSc);
	POST_StartProcessing(&oSc);

	// foreground
	LCD_InitWin(RGB24, uLcdHsz/2, uLcdVsz/2, 0, 0, uLcdHsz/2, uLcdVsz/2, uLcdHsz/4, uLcdVsz/4, uImgAddr1+uLcdHsz*uLcdVsz*4, WIN1, false);
	LCD_SetWinOnOff(1, WIN1);

	GLIB_InitInstance(uImgAddr1+uLcdHsz*uLcdVsz*4, uLcdHsz/2, uLcdVsz/2, RGB24);
	GLIB_DrawPattern(uLcdHsz/2, uLcdVsz/2);

	LCD_Start();
	
	// POST 2.5
	POST_InitIpForDmaInFifoOut(uLcdHsz, uLcdVsz, uImgAddr, YCBYCR, uLcdHsz, uLcdVsz, RGB, 1, &oPost);
	POST_SetNextFrameStAddr(uImgAddr1, 0, &oPost);
	POST_SetInterlaceModeOnOff(0, &oPost);

	//INTC_SetHandlerAndUnmask(INT_TVENC0, Isr_FifoUnderrun);
	//INTC_SetHandlerAndUnmask(INT_CAMIF_P, Isr_CamPview);
	INTC_Enable(NUM_TVENC);	
	INTC_SetVectAddr(NUM_TVENC, Isr_FifoUnderrun);
	INTC_Enable(NUM_CAMIF_P);	
	INTC_SetVectAddr(NUM_CAMIF_P, Isr_CamPview);
	
	POST_StartProcessing(&oPost);

	TVENCT_SetTVParameter();

	//INTC_Mask(INT_TVENC0);
	//INTC_Mask(INT_CAMIF_P);
	INTC_Disable(NUM_TVENC);
	INTC_Disable(NUM_CAMIF_P);

	// oPost die..
	POST_StopProcessingOfFreeRun(&oPost);
	while (!POST_IsProcessingDone(&oPost));	

	// oScaler die..
	POST_SetInterlaceModeOnOff(0, &oSc);
	POST_StopProcessingOfFreeRun(&oSc);
	Delay(1000);

	// oLcdc die..
	LCD_DisableRgbPort();		//rb1004	
	LCD_Stop();

	// oTvenc die..
	TVENC_TurnOnOff(0);

	// oCim die..
	CAMERA_StopPreviewPath();
}



void TVENCT_OtherImage_LCDandTV(void)
{
	u32 uImgSz, uWidth, uHeight;
	u32 uLcdHsz, uLcdVsz;
	//CAMIF_INOUT eCamOut;

	uGlibStAddr = CODEC_MEM_ST;
	uImgAddr = CODEC_MEM_LMT;
	uImgAddr1 = CODEC_MEM_LMT + 0x400000;

	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();

	//uLcdHsz = 320; uLcdVsz = 240;

	// FIMD 4.0
	//LCD_InitLDI(MAIN);
	LCD_InitBase();
	LCD_InitWinForFifoIn(IN_POST, WIN0);	
	LCD_GetFrmSz(&uLcdHsz, &uLcdVsz, WIN0);
	LCD_SetWinOnOff(1, WIN0);	
	LCD_SetOutputPath(LCD_RGB);
	LCD_SetClkVal(4);

	if(uImgSz)
	{
		TVENCT_GetTVFullSize(&uWidth, &uHeight);
	}
	else
	{
		uWidth = uLcdHsz;
		uHeight = uLcdVsz;
	}
	
	// FIMC 3.0
	CAMERA_SFRInit();
	INTC_Enable(NUM_CAMIF_P);	
	INTC_SetVectAddr(NUM_CAMIF_P, Isr_CamPview_Scaler);	
	CAMERA_InitSensor();
	CAMERA_InitPreviewPath_1(uLcdHsz, uLcdVsz, uImgAddr, uImgAddr1, RGB24, FLIP_NO, ROT_0);
	CAMERA_StartPreviewPath();

	//GLIB_InitInstance(uImgAddr, uLcdHsz, uLcdVsz, RGB24);
	//GLIB_DrawPattern2(uLcdHsz, uLcdVsz);

	GLIB_InitInstance(uGlibStAddr, uLcdHsz, uLcdVsz, RGB24);
	GLIB_DrawPattern(uLcdHsz, uLcdVsz);
	
	// POST 2.5
	POST_InitIpForDmaInFifoOut(uLcdHsz, uLcdVsz, uGlibStAddr, RGB24, 
								uLcdHsz, uLcdVsz, RGB, 1, &oPost);
	POST_DisableChangeNextFrame(&oPost);
	POST_StartProcessing(&oPost);

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


	// TV ENCODER 2.0
	TVENC_SetImageSize(uWidth*2, uHeight);
	TVENC_TurnOnOff(1);
	
#if 1
	// POST 2.5
	//POST_InitIpForDmaInFifoOut(uLcdHsz, uLcdVsz, uImgAddr, RGB24, 
	//							uWidth*2, uHeight, YUV, 1, &oSc);
	POST_InitIpForDmaInFifoOut(uLcdHsz, uLcdVsz, uImgAddr, RGB24, 
								uWidth*2, uHeight, YUV, 1, &oSc);
	POST_SetNextFrameStAddr(uImgAddr, 0, &oSc);
	//POST_SetNextFrameStAddr(uImgAddr1, 0, &oSc);	//rb1004
	POST_SetInterlaceModeOnOff(1, &oSc);
	POST_StartProcessing(&oSc);		
#else	//for ONE_SHOT test
	POST_InitIp1(	uLcdHsz, uLcdVsz, 0, 0, uLcdHsz, uLcdVsz, uImgAddr, RGB24,
					uWidth*2, uHeight, 0, 0, uWidth*2, uHeight, 0, YCBYCR,
					1, FALSE, ONE_SHOT, POST_DMA, POST_FIFO, &oSc);
	POST_SetInterlaceModeOnOff(1, &oSc);
	POST_SetInFifoMode(POST_DMA, &oSc);	
	POST_StartProcessing(&oSc);

	while(1)
	{
		POST_StartProcessing(&oSc);
		Delay(50);
	}

#endif

	TVENCT_SetTVParameter();

	//INTC_Mask(INT_TVENC0);
	//INTC_Mask(INT_CAMIF_P);
	INTC_Disable(NUM_TVENC);	
	INTC_Disable(NUM_CAMIF_P);	
	
	// oPost die..
	POST_StopProcessingOfFreeRun(&oPost);
	while (!POST_IsProcessingDone(&oPost));	

	// oScaler die..
	POST_SetInterlaceModeOnOff(0, &oSc);
	POST_StopProcessingOfFreeRun(&oSc);
	Delay(1000);

	// oLcdc die..
	//LCDC_DisableRgbPort();		//rb1004	
	LCD_Stop();

	// oTvenc die..
	TVENC_TurnOnOff(0);

	// oCim die..
	CAMERA_StopPreviewPath();
}





////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////           Display Scnario Performance Test           //////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

extern void ScalerT_SelectClockSource(void);
void TVENCT_Scaler_Enc_Perform(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();
	ScalerT_SelectClockSource();
		
	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);

	POST_InitIp1(	uImgXsize, uImgYsize, 0, 0, uImgXsize, uImgYsize, uImgAddr, uImgResolution,
					uWidth*2, uHeight, 0, 0, uWidth*2, uHeight, 0, YCBYCR,
					1, FALSE, FREE_RUN, POST_DMA, POST_FIFO, &oSc);
	POST_SetInterlaceModeOnOff(1, &oSc);

⌨️ 快捷键说明

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