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

📄 tvenc_test.c

📁 s3c6400 ADS下官方测试程序
💻 C
📖 第 1 页 / 共 5 页
字号:
	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);
	POST_SetNextFrameStAddr(uImgAddr, 0, &oSc);
	POST_StartProcessing(&oSc);

	TVENCT_SetTVParameter();

	INTC_Disable(NUM_TVENC);

	POST_SetInterlaceModeOnOff(0, &oSc);
	POST_StopProcessingOfFreeRun(&oSc);
	while (!POST_IsProcessingDone(&oSc));

	TVENC_TurnOnOff(0);
}



static void TVENCT_FIMD_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();

	if(uImgSz)
	{
		TVENCT_GetTVFullSize(&uWidth, &uHeight);
	}
	else
	{
		uWidth = uImgXsize;
		uHeight = uImgYsize;
	}

	INTC_Enable(NUM_TVENC);
	INTC_SetVectAddr(NUM_TVENC, Isr_FifoUnderrun);
	
	// TV ENCODER 2.0
	TVENC_SetImageSize(uWidth*2, uHeight);
	TVENC_TurnOnOff(1);

	// SCALER 2.5
	POST_InitIpForFifoInFifoOut(	uImgXsize, uImgYsize, 
								uWidth*2, uHeight, YUV, FREE_RUN, &oSc);
	POST_SetInterlaceModeOnOff(1, &oSc);
	POST_StartProcessing(&oSc);

	// FIMD 4.0
	LCD_InitDISPC1(uImgXsize, uImgYsize, uImgResolution, uImgAddr, WIN0, false);
	LCD_SetOutputPath(LCD_TV);
	LCD_Start();

	TVENCT_SetTVParameter();

	INTC_Disable(NUM_TVENC);

	// oScaler die..
	POST_SetInterlaceModeOnOff(0, &oSc);
	POST_StopProcessingOfFreeRun(&oSc);
	while (!POST_IsProcessingDone(&oSc));

	// oLcdc die..
	LCD_Stop();

	// oTvenc die..
	TVENC_TurnOnOff(0);
}


static void TVENCT_POST_FIMD_Scaler_Enc(void)
{
	u32 uImgSz, uWidth, uHeight, uTestItem;
	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();

	if(uImgSz)
	{
		TVENCT_GetTVFullSize(&uWidth, &uHeight);
	}
	else
	{
		uWidth = uImgXsize;
		uHeight = uImgYsize;
	}

	uTestItem = 1;
	
	INTC_Enable(NUM_TVENC);
	INTC_SetVectAddr(NUM_TVENC, Isr_FifoUnderrun);
	
	// TV ENCODER 2.0
	TVENC_SetImageSize(uWidth*2, uHeight);
	TVENC_TurnOnOff(1);

	// FIMD 4.0
	if(uTestItem == 0)
		LCD_InitBase1(uImgXsize, uImgYsize);
	else if(uTestItem == 1)
		LCD_InitBase();
	LCD_InitWinForFifoIn(IN_POST, WIN0);
	LCD_SetWinOnOff(1, WIN0);	
	LCD_SetOutputPath(LCD_TV);
	LCD_GetFrmSz(&uLcdHsz, &uLcdVsz, WIN0);
	
	if(uTestItem == 0)
		POST_InitIpForFifoInFifoOut(	uImgXsize, uImgYsize, uWidth*2, uHeight, YUV, FREE_RUN, &oSc);
	else if(uTestItem == 1)
		POST_InitIpForFifoInFifoOut(	uLcdHsz, uLcdVsz, uWidth*2, uHeight, YUV, FREE_RUN, &oSc);
	
	POST_SetInterlaceModeOnOff(1, &oSc);
	POST_StartProcessing(&oSc);

	LCD_Start();

	// POST 2.5
	if(uTestItem == 0)
		POST_InitIpForDmaInFifoOut(uImgXsize, uImgYsize, uImgAddr, uImgResolution, 
									uImgXsize, uImgYsize, RGB, 1, &oPost);
	else if(uTestItem == 1)
		POST_InitIpForDmaInFifoOut(uImgXsize, uImgYsize, uImgAddr, uImgResolution, 
									uLcdHsz, uLcdVsz, RGB, 1, &oPost);
	POST_SetNextFrameStAddr(uImgAddr, 0, &oPost);
	POST_StartProcessing(&oPost);

	while(UART_Getc() != 'q')
	{
		u32 uSelclkval;

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

	INTC_Disable(NUM_TVENC);

	// 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);
}


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

	//Make Image
	TVENCT_MakeImage();
	
	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_Enable(NUM_TVENC);
	INTC_SetVectAddr(NUM_TVENC, Isr_FifoUnderrun);
	
	// 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
	//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
	LCD_Start();

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

	LCD_Trigger();

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

	//INTC_Mask(INT_TVENC0);
	INTC_Disable(NUM_TVENC);
	
	// 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);
}

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

	//Make Image
	TVENCT_MakeImage();
	
	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();

	// FIMD 4.0
	LCD_InitDISPCForFifoIn(IN_POST, WIN0);
	LCD_GetFrmSz(&uLcdHsz, &uLcdVsz, WIN0);
	LCD_SetWinOnOff(1, WIN0);
	LCD_SetOutputPath(LCD_TVRGB);
	//LCD_SetOutputPath(LCD_RGB);
	//LCD_SetOutputPath(LCD_TV);
	LCD_SetClkVal(4);
	
	if(uImgSz)
	{
		TVENCT_GetTVFullSize(&uWidth, &uHeight);
	}
	else
	{
		uWidth = uImgXsize;
		uHeight = uImgYsize;
	}
	
	// TV ENCODER 2.0
	INTC_Enable(NUM_TVENC);
	INTC_SetVectAddr(NUM_TVENC, Isr_FifoUnderrun);	
	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);
#else
	POST_InitIpForFifoInFifoOut(	uLcdHsz, uLcdVsz, 
								uWidth*2, uHeight, YUV, FREE_RUN, &oSc);
#endif
	POST_SetInterlaceModeOnOff(1, &oSc);
	POST_StartProcessing(&oSc);

	LCD_Start();

	// POST 2.5
	POST_InitIpForDmaInFifoOut(uImgXsize, uImgYsize, uImgAddr, uImgResolution, uLcdHsz, uLcdVsz, RGB, 1, &oPost);
	POST_SetNextFrameStAddr(uImgAddr, 0, &oPost);
	POST_SetInterlaceModeOnOff(0, &oPost);
	POST_StartProcessing(&oPost);

	while(UART_Getc() != 'q')
	{
		u32 uSelclkval;

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

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

	// oScaler die..
	POST_SetInterlaceModeOnOff(0, &oSc);
	POST_StopProcessingOfFreeRun(&oSc);
	while (!POST_IsProcessingDone(&oPost));	
	//Delay(1000);

	// oLcdc die..
	LCD_SetWinOnOff(0, WIN0);	
	LCD_Stop();

	// oTvenc die..
	TVENC_TurnOnOff(0);
}

static void TVENCT_DualBuffer_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
	//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
	LCD_Start();

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

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

	POST_StartProcessing(&oPost);

	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_DualBuffer_POST_RGBFIMD_Scaler_Enc(void)
{
	u32 uImgSz, uWidth, uHeight;
	u32 uLcdHsz, uLcdVsz;
	CAMIF_INOUT uCamOut;

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

	uCamOut = DMA;
	
	// FIMD 4.0
	//LCD_InitLDI(MAIN);
	LCD_InitBase();
	if(uCamOut == DMA)
	{
		LCD_InitWinForFifoIn(IN_POST, WIN0);
		LCD_SetWinOnOff(1, WIN0);	
	}
	else if(uCamOut == FIFO)
	{
		LCD_InitWinForFifoIn(IN_CIM, WIN1);
		LCD_SetWinOnOff(1, WIN1);
	}
	LCD_GetFrmSz(&uLcdHsz, &uLcdVsz, WIN0);
	LCD_SetOutputPath(LCD_TVRGB);

⌨️ 快捷键说明

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