📄 l1_system.c
字号:
badx += offsetx;
bady += offsety;
L2_WriteCDSPBadPixel((UCHAR)i, badx, bady);
}
L2_SetCDSPBadPixelMode(1);
#endif
//patch4.5@yichang@badpixel end
#if Audio
#if EmbCodec
L2_EnableAudStream(0x02, 0x00);
#endif
#if AC97
#endif
#endif
printf("G_usPostJpegWidth = %d,G_usPostJpegHeight = %d\n",G_usPostJpegWidth,G_usPostJpegHeight);
printf("G_MHSize = %d,G_MVSize = %d\n",G_MHSize,G_MVSize);
XBYTE[0x21a6] = 1; // enable color brightness/contrast boost
//patch4.5@richie@hue
XBYTE[0x21ac] |= 0x01; // enable color saturation/hue boost
L2_ReadRevID(&revid);
//if (revid < 2) //Revision A/B did NOT support JPEG vertical scaling
// postJpegHeight = G_MVSize - 13;
L2_SetCamMode(0);
//patch4.3@richie@ra0603
L2_SetFrontImgOffsetm((K_PCCamera_Adjust_Width >> 2) << 1, (K_PCCamera_Adjust_Height >> 2) << 1);
//patch4.3@richie@ra0603
L2_SetFrontImgSizem((G_MHSize - K_PCCamera_Adjust_Width), (G_MVSize - K_PCCamera_Adjust_Height));
L2_SetCMOSPreview();
//Joe@2003.3.21 9:31 mask begin
//L2_TurnOnOffDisplay(0);
//Joe@2003.3.21 9:31 mask end
L2_SetDisplayMode(0, 0);
//version4.0 richie@ps0503 begin
//patch4.3@richie@ra0603
//patch5.0@richie@sdram mapping begin
//L2_SetCDSPScale(G_MHSize - K_PCCamera_Adjust_Width, G_usPostJpegWidth + 16);
L2_SetCDSPScale(G_MHSize - K_PCCamera_Adjust_Width, G_usPostJpegWidth);
//patch5.0@richie@sdram mapping end
L2_SetAFBAddr(K_SDRAM_PreviewBufAddrA);
L2_SetRFBAddr(K_SDRAM_PreviewBufAddrA);
//patch4.3@richie@ra0603
L2_SetAFBSize(G_usPostJpegWidth, (G_MVSize - K_PCCamera_Adjust_Height) - 13);
L2_SetRFBSize(G_usPostJpegWidth, (G_MVSize - K_PCCamera_Adjust_Height) - 13);
L2_SetACDSPWidth(G_usPostJpegWidth);
L2_SetRCDSPWidth(G_usPostJpegWidth);
//patch4.3@richie@ra0603
L2_SetJPEGVscale((G_MVSize - K_PCCamera_Adjust_Height) - 13, G_usPostJpegHeight);
//version4.0 richie@ps0503 end
//patch4.4.1@richie@noncompress begin
if (G_ucNonCompFlag == 0)
{
L2_SetImageType(5);
}
//patch4.4.1@richie@noncompress end
L1_InitSPCA533(4); //Call platform-independent L2 initialization
//DbgPrint("L2_TurnOnOffDisplay13=%bu\n",13);
// L2_SetGPIOBit(15,0); //hx@2003.4.28 for mito turn off lcd//wendy
// L2_SetGPIOBit(7,0); //hx@2003.4.28 for mito turn off lcd//wendy
}
//-----------------------------------------------------------------------------
//L1_InitVideoClip
//-----------------------------------------------------------------------------
//patch3.2@cytsai@0328
void L1_InitVideoClip(void) USING_0
{
USHORT i;
ULONG tmp0;
//UCHAR error;
//PRINT_L1(" L1_InitVideoClip: Enter.\n");
//version4.0@yichang@0513
//richie@ae0226 //cytsai@0328
XBYTE[0x21a6] = 0; // disable color brightness/contrast boost
//patch4.5@richie@hue
XBYTE[0x21ac] &= 0xFE; // disable color saturation boost
L2_InitSDRAM(3);
for(i=0;i<0x0200;i++) XBYTE[0x1C00+i] = AVIHeader[i];
//patch5.0@richie@avi size begin
XBYTE[0x1C40] = (UCHAR)(G_usVideoClip_Width); XBYTE[0x1C41] = (UCHAR)(G_usVideoClip_Width>>8);
XBYTE[0x1C44] = (UCHAR)(G_usVideoClip_Height); XBYTE[0x1C45] = (UCHAR)(G_usVideoClip_Height>>8);
XBYTE[0x1CA0] = (UCHAR)(G_usVideoClip_Width); XBYTE[0x1CA1] = (UCHAR)(G_usVideoClip_Width>>8);
XBYTE[0x1CA2] = (UCHAR)(G_usVideoClip_Height); XBYTE[0x1CA3] = (UCHAR)(G_usVideoClip_Height>>8);
XBYTE[0x1CB0] = (UCHAR)(G_usVideoClip_Width); XBYTE[0x1CB1] = (UCHAR)(G_usVideoClip_Width>>8);
XBYTE[0x1CB4] = (UCHAR)(G_usVideoClip_Height); XBYTE[0x1CB5] = (UCHAR)(G_usVideoClip_Height>>8);
tmp0 = (ULONG)G_usVideoClip_Width*G_usVideoClip_Height*3;
//patch5.0@richie@avi size end
XBYTE[0x1CC0] = (UCHAR)(tmp0); XBYTE[0x1CC1] = (UCHAR)(tmp0>>8);
XBYTE[0x1CC2] = (UCHAR)(tmp0>>16); XBYTE[0x1CC3] = (UCHAR)(tmp0>>24);
if(G_FrameRate == 10 || G_FrameRate == 20)
{
XBYTE[0x1C20] = 0xA0; XBYTE[0x1C21] = 0x86;
XBYTE[0x1C22] = 0x01; XBYTE[0x1C23] = 0x00;
XBYTE[0x1C80] = 0xA0; XBYTE[0x1C81] = 0x86;
XBYTE[0x1C82] = 0x01; XBYTE[0x1C83] = 0x00;
}
else if(G_FrameRate == 15 || G_FrameRate == 30)
{
XBYTE[0x1C20] = 0x6B; XBYTE[0x1C21] = 0x04;
XBYTE[0x1C22] = 0x01; XBYTE[0x1C23] = 0x00;
XBYTE[0x1C80] = 0x6B; XBYTE[0x1C81] = 0x04;
XBYTE[0x1C82] = 0x01; XBYTE[0x1C83] = 0x00;
}
L2_SetSRAMDMA(0x0C00);
//patch5.0@richie@sdram mapping begin
L2_SetDRAMDMA(K_SDRAM_AviCapHeaderBufAddr);
L2_DoDMA(1,0,0x0200,0,0);
for(i=0;i<0x0104;i++) XBYTE[0x1C00+i] = VideoHeader[i];
//patch5.0@richie@avi size begin
XBYTE[0x1CE8] = (UCHAR)(G_usVideoClip_Height>>8); XBYTE[0x1CE9] = (UCHAR)(G_usVideoClip_Height);
XBYTE[0x1CEA] = (UCHAR)(G_usVideoClip_Width>>8); XBYTE[0x1CEB] = (UCHAR)(G_usVideoClip_Width);
//patch5.0@richie@avi size end
L2_SetSRAMDMA(0x0C00); // fill A video clip buffer
L2_SetDRAMDMA(K_SDRAM_AviCapVLCBufAddrA);
L2_DoDMA(1,0,0x0104,0,0);
L2_SetSRAMDMA(0x0C00); // fill B video clip buffer
L2_SetDRAMDMA(K_SDRAM_AviCapVLCBufAddrB);
L2_DoDMA(1,0,0x0104,0,0);
//patch5.0@richie@sdram mapping end
//patch4.5@cytsai@AVI record begin
/*
// Video chunk 0x19E0 ~ 0x19EF
XBYTE[0x19E0] = 0x30; XBYTE[0x19E1] = 0x30;
XBYTE[0x19E2] = 0x64; XBYTE[0x19E3] = 0x63;
XBYTE[0x19E4] = 0x10; XBYTE[0x19E5] = 0x00;
XBYTE[0x19E6] = 0x00; XBYTE[0x19E7] = 0x00;
// Audio chunk 0x19D0 ~ 0x19DF
XBYTE[0x19D0] = 0x30; XBYTE[0x19D1] = 0x31;
XBYTE[0x19D2] = 0x77; XBYTE[0x19D3] = 0x62;
XBYTE[0x19D4] = 0x00; XBYTE[0x19D5] = 0x00;
XBYTE[0x19D6] = 0x00; XBYTE[0x19D7] = 0x00;
XBYTE[0x19DC] = 0x00; XBYTE[0x19DD] = 0x02;
XBYTE[0x19DE] = 0x00; XBYTE[0x19DF] = 0x00;
*/
//patch4.5@cytsai@AVI record end
//PRINT_L1(" L1_InitVideoClip: Exit.\n");
}
//-----------------------------------------------------------------------------
//L1_InitPowerOn
//-----------------------------------------------------------------------------
void L1_InitPowerOn(void) USING_0
{
//UCHAR error;
USHORT i;
UCHAR tmp;
//patch4.3@yichang@0611 for version B/C chip co-exist
tmp = MemStretch;
MemStretch = 0x01;
//PRINT_L1(" L1_InitPowerOn: Enter.\n");
//power control
//Joe@2003.2.27 15:01 mask begin
//XBYTE[0x2039] |= 0x80; //gpio14
//XBYTE[0x2031] |= 0x80; //gpio14
//Joe@2003.2.27 15:01 mask end
//Joe@2003.2.19 19:00 mask for don't on lcd power begin
//XBYTE[0x2032] |= 0x01; //gpio16
//Joe@2003.2.19 19:00 mask for don't on lcd power end
//Joe@2003.2.27 15:01 mask begin
//XBYTE[0x2039] |= 0x80; //cytsai@0201
//XBYTE[0x203A] |= 0x01; //gpio16
//Joe@2003.2.27 15:02 mask end
XBYTE[0x201C] = 0x00;
//Joe@2003.2.19 19:05 mask for this pin is Sensor reset begin
//Power On 15V
//XBYTE[0x2038] |= 0x80;
//XBYTE[0x2030] |= 0x80;
//Joe@2003.2.19 19:05 mask for this pin is Sensor reset end
//richie@0402
for (i = 0;i < 35535;i++)
;//delay
//TV hue and saturation adjustment
XBYTE[0X2D22]=0X40;
XBYTE[0X2D23]=0X02;
//patch4.5@ada@improve power to shot performance begin
//Set the address indices
//L2_SetDisplayType(G_DisplayType);
//L2_SetACDSPWidth(G_Hsize);
//L2_SetRCDSPWidth(G_Hsize);
//L2_SetBCDSPWidth(G_Hsize);
//L2_SetAFBSize(G_Hsize,G_Vsize);
//L2_SetBFBSize(G_Hsize,G_Vsize);
//L2_SetAFBAddr(K_SDRAM_FrameBufAAddr);
//L2_SetRFBAddr(K_SDRAM_FrameBufAAddr);
//L2_SetBFBAddr(K_SDRAM_FrameBufBAddr);
//L2_SetAVLCAddr(K_SDRAM_VideoVlcBufAAddr);
//L2_SetBVLCAddr(K_SDRAM_VideoVlcBufBAddr);
//patch4.5@ada@improve power to shot performance end
L2_SetFOSDAddr(K_SDRAM_CharFontBufAddr);
//patch4.5@ada@improve power to shot performance begin
//L2_SetDCTAddr(K_SDRAM_DcTermBufAddr);
//L2_WriteQTable(1, G_Image_QTableIndex, 0); //K_Q85
//Color Correction Matrix (add by Max according to CYWu's params)
//L2_SetColorC(0X04A,0X1FD,0X1F0, //A11,A12,A13
// 0X000,0X03B,0X1F8, //A21,A22,A23
// 0X000,0X1E0,0X04F); //A31,A32,A33
//Inital WB setting (Add by Max)
//L2_SetWB( 0X03, //ROffset
// 0X00, //GrOffset
// 0X02, //BOffset
// 0X00, //GbOffset
// 0X04C, //RGain
// 0X040, //GrGain
// 0X054, //BGain
// 0X040); //GbGain
//patch4.5@ada@improve power to shot performance end
L1_InitSPCA533(0); //Call platform-independent L2 initialization
//Joe@2003.2.27 15:22 modify begin
/*
// Setting the Real Time Clock
L2_WriteRTC(&G_DATEINFO);
*/
/*//wendy@2004/9/8
L3_ReadRTCData(0x20, &tmp);
if (tmp != 0x55)
{
L2_WriteRTC(&G_DATEINFO);
L3_WriteRTCData(0x20, 0x55);
}
*/
//Joe@2003.2.27 15:22 modify end
//patch4.3@yichang@0611 for version B/C chip co-exist
MemStretch = tmp;
// Load Bad Pixel Coordinates
//L1_UpLoadBadPxlCoor((USHORT)(&Badcoor[0]));
//yichang@patch4.3@0611 move to other place
//Load 2 banks of font-based OSD data
//FOSDtoDRAM(K_FOSD_Start_Bank, K_FOSD_Total_Bank, K_SDRAM_CharFontBufAddr);
//Load 3 banks of graphic-based OSD data
//GOSDtoDRAM(K_GRAFFONT_Width, K_GRAFFONT_Height, K_GOSD_Start_Bank, K_GOSD_Total_Bank, K_SDRAM_GrafFontBufAddr);
//ada@0207
/* //CFA initialization
#ifdef CFAIDE
L2_FlashMode(3,1,1);
L2_CFInit(1,0x07,0x00);
L2_CFReset(1);
#endif
#ifdef CFAMEM
L2_FlashMode(4,1,1);
L2_CFInit(0,0x07,0x00);
L2_CFReset(0);
#endif
#ifdef SD
if(L1_SDIdentification(512)!=0) error =1;
if(L1_SDCheckState()!=0) error =1;
if(L1_SDSetBusMode(1)!=0) error =1;
if(L1_SDEraseData(0 , 0x4000000)!=0) error =1;
#endif
*/
//PRINT_L1(" L1_InitPowerOn: Exit.\n");
}
//-----------------------------------------------------------------------------
//L1_InitPlayback
//-----------------------------------------------------------------------------
// Playback mode related settings those are not handled by L2_InitXXX
// display device TV / STNLCD
// JPEG image size : 1152x864
// Decompression to : 1152x864
// Scale down to : 240x160 (G_DSPHsize x G_DSPVsize)
// Display buffer index : B fram buffer index
void L1_InitPlayback(void) USING_0
{
//PRINT_L1(" L1_InitPlayback: Enter.\n");
L2_SetJPEGVscale(G_Vsize, G_Vsize); //turn off JPEG Vertical scaling function //cytsai@0219
/*
if(G_KeyState ==K_UI_BUTTON_PLAY_SWITCH) //add for debug
{}
else{
L2_SetDisplayType(G_DisplayType);
}
//*/
L2_SetDisplayType(G_DisplayType);
L2_SetDisplaySrcImgSize(G_DSPHsize, G_DSPVsize, G_DisplayType);
//arlpha mask add @050308
//L2_CtrlScreen(0); //disable OSD //cytsai@0128 // XiaoAo mask
// L2_TurnOnOffDisplay(0); // XiaoAo mask
//arlpha mask end @050308
//DbgPrint("L2_TurnOnOffDisplay10=%bu\n",10);
// Disable frame rate conversion
// set display buffer index is equal to B frame buffer index
L2_SetDisplayMode(0x00, 0x10);
//patch4.1@yichang@0516 reset to idle mode when Initial playback
XBYTE[0x2000]=0x00;
// set camera operation mode: playback
L1_InitSPCA533(5);
//L2_TurnOnOffDisplay (1); // Turn on display
//PRINT_L1(" L1_InitPlayback: Exit.\n");
}
//-----------------------------------------------------------------------------
//L1_InitDSC
//-----------------------------------------------------------------------------
void L1_InitDSC() USING_0
{
//PRINT_L1(" L1_InitDSC: Enter.\n");
//PRINT_L1(" L1_InitDSC: Exit.\n");
}
//-----------------------------------------------------------------------------
//L1_UICtrl
//-----------------------------------------------------------------------------
void L1_UICtrl() USING_0
{
UCHAR mode, usbmode;
UCHAR temp_key;
#if (TURNKEY_OPTION == 1)
L2_ConfigGPIOBit(18,0);
L2_GetGPIOBit(18,&temp_key);
#else
L2_ConfigGPIOBit(1,0);
L2_GetGPIOBit(1,&temp_key);
#endif
if(temp_key > 0)
{
//Joe@2003.3.20 16:15 add begin
DELAY_10ms();
DELAY_10ms();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -