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

📄 high_api.c

📁 VC0558 BackEnd IC Program
💻 C
📖 第 1 页 / 共 5 页
字号:

	Description:
		set preview parameter

	Parameters:
		Width: the width of display on lcd.
		height: the height of display on lcd.
		Lcd_OffsetW: offset x value on lcd.
		Lcd_OffsetH: offset y value on lcd.

	Note:
	       This function must be used before preview on

	Remarks:
		state: Valid

*********************************************************************************/
UINT8 USER558_SetPreviewParameter(UINT16 Width, UINT16 Height, UINT16 Lcd_OffsetW,UINT16 Lcd_OffsetH)
{
    	g_Preview_Para.Display_OffsetH= Lcd_OffsetH;
	g_Preview_Para.Display_OffsetW= Lcd_OffsetW&0xfffc;

	g_Preview_Para.Display_H=Height;		
       g_Preview_Para.Display_W=Width;
	return 0;
}
/********************************************************************************

	Description:
		Set Captured jpeg file size

	Parameters:
		ByteSize: the captured jpeg file size(byte count)
	       
	Remarks:
		State:Valid.
*********************************************************************************/
void USER558_SetCaptureSize(UINT32 ByteSize)
{
	g_CaptureSize=ByteSize;
	V558_JpegSetTWC(ByteSize>>2);		
}
/********************************************************************************

	Description:
		Set Capture still quality

	Parameters:
		rate: quality step

       Note: 
		<TABLE>
		value					meaning
		-----					-------
		0					low quality
		1					normal quality
		2					high quality
           	
	Remarks:
		State:Valid.
*********************************************************************************/
void USER558_SetCaptureQuaility(UINT8 rate)
{
	switch(rate)
		{
		case 0:			//low
			if(g_Preview_Para.Capture_W>500)
				USER558_SetCaptureSize(0x5000);
			else if((g_Preview_Para.Capture_W<500)&&g_Preview_Para.Capture_W>200)
				USER558_SetCaptureSize(0x3450);
			else
				USER558_SetCaptureSize(0xA00);
			break;
		case 1:
			if(g_Preview_Para.Capture_W>500)
				USER558_SetCaptureSize(0x5500);
			else if((g_Preview_Para.Capture_W<500)&&g_Preview_Para.Capture_W>200)
				USER558_SetCaptureSize(0x4000);
			else
				USER558_SetCaptureSize(0xE00);
			break;
		case 2:
			if(g_Preview_Para.Capture_W>500)
				USER558_SetCaptureSize(0x6000);
			else if((g_Preview_Para.Capture_W<500)&&g_Preview_Para.Capture_W>200)
				USER558_SetCaptureSize(0x4100);
			else
				USER558_SetCaptureSize(0x1200);
			break;
		default:
			if(g_Preview_Para.Capture_W>500)
				USER558_SetCaptureSize(0x6000);
			else if((g_Preview_Para.Capture_W<500)&&g_Preview_Para.Capture_W>200)
				USER558_SetCaptureSize(0x3450);
			else
				USER558_SetCaptureSize(0xA00);
			break;
		}
}
/********************************************************************************

	Description:
		Set Frequency type 50hz or 60 hz

	Parameters:
		freqType: Frequency type

    Note: 
		<TABLE>
		value					meaning
		-----					-------
		0					50 hz
		1					60 hz
      
 	Remarks:
 	    RGB sensor only
		State:Valid.
*********************************************************************************/
void USER558_SetFrequencyType(UINT8 freqType)
{
	
	UINT8 NowFreq;
	UINT32 temp;
	/*
	temp=V558_IspGetFreq(&NowFreq);
	if(!temp)
		{
		if(NowFreq!=freqType)
			V558_IspSetFreq(freqType);
		else
			return;
		}
		*/
	if(freqType == 0){
		DrvGetSnrReg(0x3b, &temp);
		temp |= 0x00000008;
		DrvSetSnrReg(0x3b,temp);
		//DrvSetSnrReg(0x3b,0x0a);
	}
	else if(freqType == 1){
		DrvGetSnrReg(0x3b, &temp);
		temp &= 0xfffffff7;
		DrvSetSnrReg(0x3b,temp);
	}
		
}


/********************************************************************************

	Description:
		Set Exposure Mode

	Parameters:
		MODE: Exposure Mode

       Note: 
		<TABLE>
		value					meaning
		-----					-------
		0						IN door mode
		1						out door mode   
		2						day
		3						night
	Remarks:
		State:Valid.
*********************************************************************************/
void USER558_Set_ExposureMode(UINT8 MODE)
{
	UINT8 NowMode;
	UINT32 temp;
	

	//#if 0
	if(MODE == 2) /*night*/
	{
		DrvGetSnrReg(0x3b, &temp);
		temp |= 0x00000010;
		DrvSetSnrReg(0x3b,temp);
		DrvSetSnrReg(0x14,0x4e);
		//DrvSetSnrReg(0x92,0xff);
		//DrvSetSnrReg(0x93,0x03);
		//return;
	}
	else{
		/*first close the night mode*/
		DrvGetSnrReg(0x3b, &temp);
		temp &= 0xffffffef;
		DrvSetSnrReg(0x3b,temp);
		//DrvSetSnrReg(0x14,0x4e);
		
		DrvSetSnrReg(0x14,0x2e);
		//DrvSetSnrReg(0x92,0x0);
		//DrvSetSnrReg(0x93,0x0);
		if(MODE == 0){
			
		}
		else if(MODE == 1){
			
		}
	}
	//#endif
	#if 0
	temp=V558_IspGetLight(&NowMode);
	if(!temp)				//angela 1117
		{
		if(NowMode!=MODE)
			V558_IspSetLight(MODE);
		else
			return;
		}
	#endif

}

/********************************************************************************

	Description:
		Set Capture still parameter

	Parameters:
		Width: the width of display on lcd.
		height: the height of display on lcd.

	Note:
	This function must be used before preview on

	Remarks:
		State:Valid.
*********************************************************************************/
UINT8 USER558_SetCaptureParameter(UINT16 CapWidth, UINT16 CapHeight)
{
	UINT16 ratio;
	UINT16 Width,Height,W,H;
	UINT8 ErrorNumber=1,Sel,temp;
	V558_POINT pt;
	V558_SIZE size;
	V558_LAYER_PROPERTY proty;
	UINT16 MaxDiv;

	ratio=Find_common_divisor(CapWidth,CapHeight);
	W=CapWidth/ratio;
	H=CapHeight/ratio;
	
	ratio=FindMaxRatio(W,H);// max ratio
	
	Width=W*ratio;
	Height=H*ratio;

        g_Preview_Para.Source_H=Height;
        g_Preview_Para.Source_W=Width;
	 while(g_Preview_Para.Source_W%16)
		{
			ErrorNumber=0;
		  	g_Preview_Para.Source_W-=W;
		  	g_Preview_Para.Source_H-=H;
		}
        
        g_Preview_Para.Source_OffsetH=(480-g_Preview_Para.Source_H)/2;
        g_Preview_Para.Source_OffsetW=(640-g_Preview_Para.Source_W)/2;
        g_Preview_Para.Capture_W=CapWidth;
        g_Preview_Para.Capture_H=CapHeight;

        
        pt.x=  g_Preview_Para.Source_OffsetW;
        pt.y=  g_Preview_Para.Source_OffsetH;
        size.cx= g_Preview_Para.Source_W;
        size.cy=  g_Preview_Para.Source_H;

	if(!FindSameRatio(g_Preview_Para.Source_W, g_Preview_Para.Source_H, g_Preview_Para.Display_W,g_Preview_Para.Display_H))
	{
		MaxDiv=Find_common_divisor(g_Preview_Para.Source_W,g_Preview_Para.Source_H);
		W=g_Preview_Para.Source_W/MaxDiv;
		H=g_Preview_Para.Source_H/MaxDiv;
		ratio=1;
		while(1)
		{
				if((W*ratio>=g_Preview_Para.Display_W)&&(H*ratio>=g_Preview_Para.Display_H))
					break;
				ratio++;
		}
			
		proty.Size.cx = W*ratio;
		proty.Size.cy = H*ratio;
		while(proty.Size.cx%16)
		{
				proty.Size.cx+=W;
				proty.Size.cy+=H;
		}
			
		proty.DisRect.left = (W*ratio-g_Preview_Para.Display_W)/2;
		if(proty.DisRect.left %2)		
			proty.DisRect.left --;
		proty.DisRect.top =  (H*ratio-g_Preview_Para.Display_H)/2;
		proty.DisRect.width = g_Preview_Para.Display_W;
		proty.DisRect.height =g_Preview_Para.Display_H;

		proty.DisPoint.x = g_Preview_Para.Display_OffsetW;
		proty.DisPoint.y = g_Preview_Para.Display_OffsetH;			
	}
	else
	{	
		proty.Size.cx = g_Preview_Para.Display_W;
		proty.Size.cy = g_Preview_Para.Display_H;			
		proty.DisRect.left = 0;
		proty.DisRect.top = 0;
		proty.DisRect.width = g_Preview_Para.Display_W;
		proty.DisRect.height =g_Preview_Para.Display_H;
		proty.DisPoint.x = g_Preview_Para.Display_OffsetW;
		proty.DisPoint.y = g_Preview_Para.Display_OffsetH;
	}
	Sel=V558_SifDisableSyncGen();
	temp=V558_CtrlGetWorkMode();
	V558_CtrlSetWorkMode(V558_MODE_VIEW);	
	V558_IppSetSizerCapture(pt,size,CapWidth);
	//V558_IppSetSizerDisplay(pt, size, proty.Size.cx);
	V558_IppSetDisplay( proty.Size.cx);
	
       V558_LcdSetALProperty(&proty);
	V558_SifSetSensorOpmode(Sel);
	V558_CtrlSetWorkMode(temp);	
	return 0;
}
/********************************************************************************

	Description:
		Set Blending On or Off 
		
	Parameters:
		OnOff :  Blending On Or Off.
		*BMP: The head point of rgb(not standard bmp) 

	Note:
		This function must be used in preview mode.
		<TABLE>
		value					meaning
		-----					-------
		1                                       start Blending;
		0                                       stop Blending;
		</TABLE>
		
	Remarks:
		state: valid

*********************************************************************************/
void USER558_BlendingOnOff(UINT8 OnOff,UINT16 *BMP) 
{
	V558_POINT point;

	if(OnOff)
	{
	        point.x = g_Preview_Para.Display_OffsetW;
		 point.y = g_Preview_Para.Display_OffsetH;
	   	 USER558_LCDDisplayOn(3,1,0);
	   	 V558_LcdDispDisable();

      		 V558_LCDDrawBL(point.x,point.y,128,160,BMP);
      		 V558_LcdDispEnable();
      		 V558_LcdEnableBlend();
	}
	else
	{
		V558_LcdDisableBlend();
      	}
}
/********************************************************************************

	Description:
		Set Blending Value
		
	Parameters:
		Value :  Blending Value 0-255

	Note:
		This function must be used after Blending  start.		
		
	Remarks:
		state: Valid

*********************************************************************************/
void  USER558_blanding_Value(UINT8 Value)
{
	V558_LcdSetBlendRatio(Value);
}
/********************************************************************************

	Description:
		Up or Down Blending Value
		
	Parameters:
		mode: Add or Dec 
		step:  The step Value 0-255 

	Note:
		This function must be used after Blending  start.			
		<TABLE>
		value					meaning
		-----					-------
		1                                       Add; 
		0                                       Dec;
		</TABLE>
		
	Remarks:
		state: valid

*********************************************************************************/
void USER558_AddDecBlending(UINT8 mode,UINT8 step)  
{
     if(mode)
	V558_LcdUpBlendRatio(step);
     else
     	V558_LcdDownBlendRatio(step);
}
/********************************************************************************

	Description:
		Stop Ae interrupt
		
	Note:
		RGB sensor only
		
	Remarks:
		state: Valid

*********************************************************************************/
void USER558_StopAe(void)
{
		V558_CtrlIntEnable(V558_INT_AUTO_FUNC, 0);   
}
/********************************************************************************

	Description:
		Restart Ae interrupt
		
	Note:
		RGB sensor only
		
	Remarks:
		state: Valid

*********************************************************************************/
void USER558_RestartAe(void)
{
		V558_CtrlIntEnable(V558_INT_AUTO_FUNC, 1);   
}

/********************************************************************************

	Description:
		preview on or off

	Parameters:
		ONOFF: start preview or stop preview

	Note:
	       This function must be used when capture or display had stoped .
		<TABLE>
		value					meaning
		-----					-------
		1                                       start preview;
		0                                       stop preview;
		</TABLE>

	Remarks:
		state: valid

*********************************************************************************/
void USER558_PreviewOnOff(UINT8 OnOff)
{
	UINT8 Special;

	Special=V558_LcdGetDispMode();
	V558_Delay(10);
	if(OnOff)
	{
	  	 V558_LcdALDisable();
		if((Special==0)||(Special==1))		//90or 270
		{
			if(g_Preview_Para.Display_W>g_Preview_Para.Display_H)
				ChangIppDisplay(g_Preview_Para.Display_W,g_Preview_Para.Display_W);
			else
				ChangIppDisplay(g_Preview_Para.Display_H,g_Preview_Para.Display_H);
		}
		else
			ChangIppDisplay(g_Preview_Para.Display_W,g_Preview_Para.Display_H);
	 	V558_CtrlSetWorkMode(V558_MODE_VIEW);	  			
		V558_LcdALEnable();	
//		V558_CtrlIntEnable(V558_INT_AUTO_FUNC, 1);  //enable AE
		 g_558_WorkStatus=STATE558_Preview;
	}
	else
	{
		USER558_OneFrameEnd();
		V558_SifDisableSyncGen();
		V558_CtrlSetWorkMode(V558_MODE_VIEW);	 
//		V558_CtrlIntEnable(V558_INT_AUTO_FUNC, 0);  //disable AE
		//V558SetExpInit();			// for rgb sensor only  and colse in dark.

⌨️ 快捷键说明

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