📄 high_api.c
字号:
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 + -