Exemple #1
0
void PostProcess(UINT uSrcFrmSt,     UINT uDstFrmSt,
                   UINT srcFrmFormat,  UINT dstFrmFormat,
                   UINT srcFrmWidth,   UINT srcFrmHeight,
                   UINT dstFrmWidth,   UINT dstFrmHeight,
                   UINT srcXOffset,    UINT srcYOffset,
                   UINT dstXOffset,    UINT dstYOffset,
                   UINT srcCropWidth,  UINT srcCropHeight,
                   UINT dstCropWidth,  UINT dstCropHeight
                   )
{

    ////////////////////////////
    // 1. Stop Post Processor //
    ////////////////////////////
    POST_DisableStartBit();


    //////////////////////////
    // 2. Set Color Format  //
    //////////////////////////
    POST_SetDataFormat(srcFrmFormat, dstFrmFormat);


    ////////////////////
    // 3. Set Scaler  //
    ////////////////////
    POST_SetScaler(srcCropWidth, dstCropWidth, srcCropHeight, dstCropHeight);

    ////////////////////////////////
    // 4. Set Addresses & Offsets //
    ////////////////////////////////
    POST_SetAddrRegAndOffsetReg(srcFrmWidth,  srcFrmHeight,
                                srcXOffset,   srcYOffset,
                                srcCropWidth, srcCropHeight,
                                uSrcFrmSt,
                                srcFrmFormat,
                                dstFrmWidth,  dstFrmHeight,
                                dstXOffset,   dstYOffset,
                                dstCropWidth, dstCropHeight,
                                uDstFrmSt,
                                dstFrmFormat);

    POST_Start();


}
Exemple #2
0
//////////
// Function Name : POST_SetDMA
// Function Description : Initialize the POST in the External Application(Virtual screen size != Image size)
// Input :	uSrcFullWidth - Source Image Full Width(Virtual screen size)
//			uSrcFullHeight - Source Image Full Height(Virtual screen size)
//			uSrcStartX - Source Image Start width offset
//			uSrcStartY - Source Image Start height offset
//			uSrcWidth - Source Image Width
//			uSrcHeight - Source Image Height
//			uSrcFrmSt - Base Address of the Source Image 
//			eSrcCSpace - Color Space ot the Source Image
//			uDstFullHeight - Source Image Full Width(Virtual screen size)
//			uSrcFullHeight - Source Image Full Height(Virtual screen size)
//			uDstStartX - Source Image Start width offset
//			uDstStartY - Source Image Start height offset
//			uDstWidth - Source Image Width
//			uDstHeight - Source Image Height
//			uDstFrmSt - Base Address of the Source Image 
//			eDstCSpace - Color Space ot the Source Image
//			uSrcFrmBufNum - Frame buffer number
//			bIsDoubleBuf - Double buffer
//			eMode - POST running mode(PER_FRAME or FREE_RUN)
//			eInPath - Data path of the source image
//			eOutPath - Data path of the desitination image
//			sCh - POST structure base address
// Output : 	None
void POST_InitIp1(
	u32 uSrcFullWidth, u32 uSrcFullHeight, u32 uSrcStartX, u32 uSrcStartY, u32 uSrcWidth, u32 uSrcHeight, u32 uSrcFrmSt, CSPACE eSrcCSpace,
	u32 uDstFullWidth, u32 uDstFullHeight, u32 uDstStartX, u32 uDstStartY, u32 uDstWidth, u32 uDstHeight, u32 uDstFrmSt, CSPACE eDstCSpace,
	u32 uSrcFrmBufNum, u8 bIsDoubleBuf, POST_RUN_MODE eMode, POST_PATH eInPath, POST_PATH eOutPath, POST *sCh	)
{
	u32 uPostModeCtrl2;
	u32 uPixelSzIn, uPixelSzOut;

 	Assert( !bIsDoubleBuf ); // hojinz.kim
  	Assert( uSrcFullWidth   <= 4096 || uSrcFullHeight <= 4096);
	Assert( uDstFullWidth   <= 2048 || uDstFullHeight <= 2048);
	Assert( uSrcFullWidth >= uSrcStartX + uSrcWidth );
	Assert( uSrcFullHeight >= uSrcStartY + uSrcHeight );
	Assert( uDstFullWidth >= uDstStartX + uDstWidth );
	Assert( uDstFullHeight >= uDstStartY + uDstHeight );
	if(eSrcCSpace == YC420)
	{
		Assert( !(uSrcWidth%8) );
		Assert( !((uSrcFullWidth-uSrcWidth)%8) );
		//Assert( !(uSrcHeight%4) );	//rb1004 delete
	}
	else if((eSrcCSpace == RGB24) || (eSrcCSpace == ARGB24) )
	{
		//Nothing
	}	
	else
	{
		Assert( !(uSrcWidth%2) );
		Assert( !((uSrcFullWidth-uSrcWidth)%2) );
		//Assert( !(uSrcHeight%2) );	//rb1004 delete
	}		
	
//	m_uBaseAddr = POST_BASE; //+joon : POST class constructor has not been called, so base address has not been set. So, joon put here

	sCh->m_uModeRegValue = 0;
	sCh->m_eSrcCSpace = eSrcCSpace;
	sCh->m_eDstCSpace = eDstCSpace;

	PostOutp32( POST_START_VIDEO, POST_DISABLE );
	
	//uPostModeCtrl2 = ADDR_CHANGE_ENABLE |CHANGE_AT_FRAME_END |SOFTWARE_TRIGGER;
	uPostModeCtrl2 = ADDR_CHANGE_DISABLE |CHANGE_AT_FRAME_END |SOFTWARE_TRIGGER;
	PostOutp32( POST_MODE_CTRL_2, uPostModeCtrl2 );
	
	//--->SetClock ... rb1004
	//POST_SetClock(eOutPath, sCh);
	if(sCh->m_uBaseAddr == POST0_BASE)
	{
		POST_SetClkSrc(ePost_ClkSrc, sCh);
	}
	else
	{
		POST_SetClkSrc(eScaler_ClkSrc, sCh);
	}
	//--->SetDataPath
	POST_SetDataPath(eInPath, eOutPath, sCh);

	//--->SetDataFormat
	POST_SetDataFormat(eSrcCSpace, eDstCSpace, eInPath, eOutPath, sCh, &uPixelSzIn, &uPixelSzOut);

	//--->SetScaler
	POST_SetScaler(uSrcWidth, uSrcHeight, uDstWidth, uDstHeight, sCh);

	//--->SetDMA
	POST_SetDMA(	uSrcFullWidth, uSrcFullHeight, uSrcStartX, uSrcStartY, uSrcWidth, uSrcHeight, uSrcFrmSt, eSrcCSpace,
					uDstFullWidth, uDstFullHeight, uDstStartX, uDstStartY, uDstWidth, uDstHeight, uDstFrmSt, eDstCSpace,
					uSrcFrmBufNum,  eInPath, eOutPath, sCh,
					uPixelSzIn, uPixelSzOut);

	//-->SetFreeRun
	POST_SetAutoLoadEnable(eMode, sCh);

	//POST_SetCLKVALUpdate(POST_CLKVAL_StOfFRAME, sCh);
	
	//-->Enable Interrupt
	//POST_EnableInterrupt(POST_LEVEL_INT, sCh);

 }