?? w_interface.c
字號:
#define _W_INTERFACE_C_
#include "BUxx_aDSC.h"
#include "BUxx_Sample.h"
#include "W_Interface.h"
#ifdef _BU1563API_INTERFACE_
void fObjectInit(void)
{
UINT16 i;
gv_SetMaxNum = sizeof(cBase) / sizeof(cBase[0]);
for (i = 0; i < gv_SetMaxNum; i++)
{
cBase[i]->fInit(cBase[i]);
}
gv_VideoData.p_u16JpgCode = gl_pJpegMem_Buf;
}
void fPreSizeInit(c_SetBase * p_cBaseSet)
{
UINT16 i;
c_PreSizeSet *p_cPreSizeSet = (c_PreSizeSet *) p_cBaseSet;
p_cPreSizeSet->v_Set.u16MaxNum = sizeof(cPreSizeItem) / sizeof(cPreSizeItem[0]);
for(i=0;i<p_cPreSizeSet->v_Set.u16MaxNum;i++)
{
cPreSizeItem[i].m_pcamera->mst_x = cPreSizeItem[i].m_pwindow->st_x;
cPreSizeItem[i].m_pcamera->mst_y = cPreSizeItem[i].m_pwindow->st_y;
cPreSizeItem[i].m_pcamera->cst_x =
(cPreSizeItem[i].m_pcamera->srkx - cPreSizeItem[i].m_pcamera->xsize) / 2;
cPreSizeItem[i].m_pcamera->cst_y =
(cPreSizeItem[i].m_pcamera->srky - cPreSizeItem[i].m_pcamera->ysize) / 2;
if (cPreSizeItem[i].m_pcamera->rot_h_vflip & sROT_ON)
{
if (cPreSizeItem[i].m_pcamera->cst_y % 2)
cPreSizeItem[i].m_pcamera->cst_y++;
}
else
{
if (cPreSizeItem[i].m_pcamera->cst_x % 2)
cPreSizeItem[i].m_pcamera->cst_x++;
}
}
}
void fFilterInit(c_SetBase * p_cBaseSet)
{
c_FilterSet *p_cFilterSet = (c_FilterSet *) p_cBaseSet;
p_cFilterSet->v_Set.u16MaxNum = sizeof(cFilterItem) / sizeof(cFilterItem[0]);
}
void fOvlInit(c_SetBase * p_cBaseSet)
{
c_OvlSet *p_cOvlSet = (c_OvlSet *) p_cBaseSet;
p_cOvlSet->v_Set.u16MaxNum = sizeof(cOvlItem) / sizeof(cOvlItem[0]);
}
void fJpgQualityInit(c_SetBase * p_cBaseSet)
{
c_JpgQualitySet *p_cJpgQualitySet = (c_JpgQualitySet *) p_cBaseSet;
p_cJpgQualitySet->v_Set.u16MaxNum = sizeof(cJpgQualityItem) / sizeof(cJpgQualityItem[0]);
}
void fJpgFuncInit(c_SetBase * p_cBaseSet)
{
c_JpgFuncSet *p_cJpgFuncSet = (c_JpgFuncSet *) p_cBaseSet;
p_cJpgFuncSet->v_Set.u16MaxNum = sizeof(cJpgFuncItem) / sizeof(cJpgFuncItem[0]);
}
void fJpgEncSizeInit(c_SetBase * p_cBaseSet)
{
c_JpgEncSizeSet *p_cJpgEncSizeSet = (c_JpgEncSizeSet *) p_cBaseSet;
p_cJpgEncSizeSet->v_Set.u16MaxNum = sizeof(cJpgEncSizeItem) / sizeof(cJpgEncSizeItem[0]);
}
void fJpgDecSizeInit(c_SetBase * p_cBaseSet)
{
c_JpgDecSizeSet *p_cJpgDecSizeSet = (c_JpgDecSizeSet *) p_cBaseSet;
p_cJpgDecSizeSet->v_Set.u16MaxNum = sizeof(cJpgDecSizeItem) / sizeof(cJpgDecSizeItem[0]);
}
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
void fPreSizeSet(c_SetBase * p_cBaseSet)
{
c_PreSizeSet *p_PreSizeSet = (c_PreSizeSet *) p_cBaseSet;
c_PreSizeItem *p_PreSizeItem =
(c_PreSizeItem *) (p_PreSizeSet->p_PreSize + p_PreSizeSet->v_Set.u16CurIndex);
gv_VideoData.p_Window = p_PreSizeItem->m_pwindow;
gv_VideoData.p_Camera = p_PreSizeItem->m_pcamera;
gv_VideoData.p_Item = &p_PreSizeItem->v_Item;
}
void fFilterSet(c_SetBase * p_cBaseSet)
{
c_FilterSet *p_FilterSet = (c_FilterSet *) p_cBaseSet;
c_FilterItem *p_FilterItem =
(c_FilterItem*)(p_FilterSet->p_Filter + p_FilterSet->v_Set.u16CurIndex);
gv_VideoData.u16Filter=p_FilterItem->u16Filter;
gv_VideoData.p_Item=&p_FilterItem->v_Item;
}
void fOvlSet(c_SetBase * p_cBaseSet)
{
c_OvlSet *p_OvlSet = (c_OvlSet *) p_cBaseSet;
c_OvlItem *p_OvlItem =
(c_OvlItem *) (p_OvlSet->p_Overlay + p_OvlSet->v_Set.u16CurIndex);
gv_VideoData.p_Overlay = p_OvlItem->p_Overlay;
gv_VideoData.p_Item = &p_OvlItem->v_Item;
}
void fJpgQualitySet(c_SetBase * p_cBaseSet)
{
c_JpgQualitySet *p_JpgQualitySet = (c_JpgQualitySet *) p_cBaseSet;
c_JpgQualityItem *p_JpgQualityItem =
(c_JpgQualityItem *) (p_JpgQualitySet->p_Quality + p_JpgQualitySet->v_Set.u16CurIndex);
gv_VideoData.u16JpgQuality = p_JpgQualityItem->u16JpgQuality;
gv_VideoData.p_Item = &p_JpgQualityItem->v_Item;
}
void fJpgFuncSet(c_SetBase * p_cBaseSet)
{
c_JpgFuncSet *p_JpgFuncSet = (c_JpgFuncSet *) p_cBaseSet;
c_JpgFuncItem *p_JpgFuncItem =
(c_JpgFuncItem *) (p_JpgFuncSet->p_Func + p_JpgFuncSet->v_Set.u16CurIndex);
gv_VideoData.u16JpgFunc = p_JpgFuncItem->u16JpgFunc;
gv_VideoData.p_Item = &p_JpgFuncItem->v_Item;
}
void fJpgEncSizeSet(c_SetBase * p_cBaseSet)
{
c_JpgEncSizeSet *p_JpgEncSizeSet = (c_JpgEncSizeSet *) p_cBaseSet;
c_JpgEncSizeItem *p_JpgEncSizeItem =
(c_JpgEncSizeItem *) (p_JpgEncSizeSet->p_EncSize + p_JpgEncSizeSet->v_Set.u16CurIndex);
gv_VideoData.p_EncSize = p_JpgEncSizeItem->p_EncSize;
gv_VideoData.p_Item = &p_JpgEncSizeItem->v_Item;
}
void fJpgDecSizeSet(c_SetBase * p_cBaseSet)
{
c_JpgDecSizeSet *p_JpgDecSizeSet = (c_JpgDecSizeSet *) p_cBaseSet;
c_JpgDecSizeItem *p_JpgDecSizeItem =
(c_JpgDecSizeItem *) (p_JpgDecSizeSet->p_DecSize + p_JpgDecSizeSet->v_Set.u16CurIndex);
gv_VideoData.p_DecSize = p_JpgDecSizeItem->p_DecSize;
gv_VideoData.p_Item = &p_JpgDecSizeItem->v_Item;
}
void fPreview(void)
{
aDSC_fmemory_clear(0, 0, M_LCD_WSIZE, M_LCD_HSIZE, 0x0000);
aDSC_overlayframe_off();
if (gv_VideoData.p_Overlay->u16OvlOpen)
{
aDSC_fmemory_write_rgb565(gv_VideoData.p_Overlay->u16OvlData,
gv_VideoData.p_Overlay->st_x, gv_VideoData.p_Overlay->st_y);
// aDSC_maskmemory_write(gv_VideoData.p_Overlay->xsize, gv_VideoData.p_Overlay->ysize);
aDSC_overlayframe_on();
}
fFillExOvlMirror(gv_VideoData.p_Item);
aDSC_data_trans_st(0, 0, M_LCD_WSIZE, M_LCD_HSIZE);
sFilterSet(gv_VideoData.u16Filter);
aDSC_Start_Preview(gv_VideoData.p_Window->st_x,
gv_VideoData.p_Window->st_y,
gv_VideoData.p_Window->xsize,
gv_VideoData.p_Window->ysize, gv_VideoData.p_Camera);
}
void fJpegEnc(void)
{
aDSC_fmemory_clear(0, 0, M_LCD_WSIZE, M_LCD_HSIZE, 0x0000);
aDSC_data_trans_st(0, 0, M_LCD_WSIZE, M_LCD_HSIZE);
wait(500);
switch (gv_VideoData.u16JpgFunc)
{
case SIGLESHOT:
{
gv_VideoData.u32JpgSize = JPEG_BUFFER;
bit_write(OVL_CNT, 3, LOW); //switch off OSD
aDSC_CameraEncode(gv_VideoData.p_u16JpgCode, &gv_VideoData.u32JpgSize,
gv_VideoData.p_EncSize, gv_VideoData.u16JpgQuality,
sROT_OFF | sHFLIP_OFF | sVFLIP_OFF);
fFillExOvlMirror(gv_VideoData.p_Item);
}
break;
case MULTISHOT:
{
UINT32 u32FrameByteSize = JPEG_BUFFER;
gv_VideoData.u32JpgSize = 0;
aDSC_overlayframe_off();
do
{
//u32FrameByteSize = JPEG_BUFFER;
aDSC_Start_Preview(gv_VideoData.p_Window->st_x,
gv_VideoData.p_Window->st_y,
gv_VideoData.p_Window->xsize,
gv_VideoData.p_Window->ysize, gv_VideoData.p_Camera);
aDSC_CameraEncode(gv_VideoData.p_u16JpgCode + gv_VideoData.u32JpgSize / 2+2,
&u32FrameByteSize,
gv_VideoData.p_EncSize, gv_VideoData.u16JpgQuality,
sROT_OFF | sHFLIP_OFF | sVFLIP_OFF);
fFillExOvlMirror(gv_VideoData.p_Item);
*(gv_VideoData.p_u16JpgCode + gv_VideoData.u32JpgSize / 2) =
(UINT16) ((u32FrameByteSize | 0xffff0000) >> 16);
*(gv_VideoData.p_u16JpgCode + gv_VideoData.u32JpgSize / 2 + 1) =
(UINT16) (u32FrameByteSize | 0x0000ffff);
gv_VideoData.u32JpgSize += u32FrameByteSize + 4;
u32FrameByteSize = JPEG_BUFFER-gv_VideoData.u32JpgSize;
//wait(10); // >1400ms@1280x960; >ms@640x480
}while (gv_VideoData.u32JpgSize < MJPEG_BUFFER);
}
break;
case MOTIONJPEG:
{
UINT32 u32FrameByteSize = 0;
aDSC_overlayframe_off();
gv_VideoData.u32JpgSize = 0;
do
{
u32FrameByteSize = 144 * 176;
aDSC_Start_Preview(tWindow80x80.st_x,
tWindow80x80.st_y,
tWindow80x80.xsize,
tWindow80x80.ysize, &tCamera80x80);
aDSC_FrameEncode(gv_VideoData.p_u16JpgCode + gv_VideoData.u32JpgSize / 2 +
2, &u32FrameByteSize, tWindow80x80.st_x,
tWindow80x80.st_y,
tWindow80x80.xsize,
tWindow80x80.ysize,
gv_VideoData.u16JpgQuality);
fFillExOvlMirror(gv_VideoData.p_Item);
*(gv_VideoData.p_u16JpgCode + gv_VideoData.u32JpgSize / 2) =
(UINT16) ((u32FrameByteSize | 0xffff0000) >> 16);
*(gv_VideoData.p_u16JpgCode + gv_VideoData.u32JpgSize / 2 + 1) =
(UINT16) (u32FrameByteSize | 0x0000ffff);
gv_VideoData.u32JpgSize += u32FrameByteSize + 4;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -