📄 l1_preview.c
字号:
hb=0xbb;
lb=XBYTE[0x214a];
L2_DRAMSetStartAddr(end_add,K_SDRAM_NoPrefetch);
L2_DRAMWriteWord(hb,lb);
(*pSize)+=2 ;
end_add++;
hb=0xcc;
lb=XBYTE[0x210e];
L2_DRAMSetStartAddr(end_add,K_SDRAM_NoPrefetch);
L2_DRAMWriteWord(hb,lb);
(*pSize)+=2 ;
end_add++;
hb=0xdd;
lb=XBYTE[0x210f];
L2_DRAMSetStartAddr(end_add,K_SDRAM_NoPrefetch);
L2_DRAMWriteWord(hb,lb);
(*pSize)+=2;
end_add++;
//jane@040223 add
hb=0xee;
lb=Gain;
L2_DRAMSetStartAddr(end_add,K_SDRAM_NoPrefetch);
L2_DRAMWriteWord(hb,lb);
(*pSize)+=2;
end_add++;
hb=0xff;
lb=Shutter;
L2_DRAMSetStartAddr(end_add,K_SDRAM_NoPrefetch);
L2_DRAMWriteWord(hb,lb);
(*pSize)+=2;
end_add++;
hb=0xee;
lb=AEFlag;
L2_DRAMSetStartAddr(end_add,K_SDRAM_NoPrefetch);
L2_DRAMWriteWord(hb,lb);
(*pSize)+=2;
end_add++;
hb=0xff;
lb=AWBFlag;
L2_DRAMSetStartAddr(end_add,K_SDRAM_NoPrefetch);
L2_DRAMWriteWord(hb,lb);
(*pSize)+=2;
end_add++;
//Jane end
#endif
#endif
//PRINT_L1(" L1_SnapOne: 4.Compression done\n");
//PRINT_L1(" L1_SnapOne: VLC data length = %lX\n",*pSize);
//Prepare thumbnail image
//yichang@0508 for multi-size snapping
//patch4.4@richie@imgsc begin
/*
if ((captureWidth >> 3) < 160)
{
L2_ScaleUpImage(K_SDRAM_DcTermBufAddr, captureWidth >> 3, captureHeight >> 3, //source
K_SDRAM_ThumbBufAddr, 160, 120, //destination
K_SDRAM_TemporaryBufAddr); //temp buffer
}
else if ((captureWidth >> 3) > 160)
{
L2_ScaleDownImage(K_SDRAM_DcTermBufAddr, captureWidth >> 3, captureHeight >> 3, //source
K_SDRAM_ThumbBufAddr, 160, 120, //destination
K_SDRAM_TemporaryBufAddr); //temp buffer
}
else
{
L2_CopyImage(K_SDRAM_DcTermBufAddr, 160, 120, 0, 0, 160, 120, K_SDRAM_ThumbBufAddr, 160, 120, 0, 0);
}
*/
//patch5.0@richie@sdram mapping begin
L1_ScaleImage(K_SDRAM_DcTermBufAddr,captureWidth >> 3,captureHeight >> 3
,K_SDRAM_ThumbBufAddr, 160, 120, K_SDRAM_DcTermGeneralBufAddr);
//patch4.4@richie@imgsc end
L2_Compress(2,K_SDRAM_ThumbBufAddr,160,120, //source
K_SDRAM_DcTermBufAddr, //destination
K_SDRAM_DcTermGeneralBufAddr, //DC-teram location
0x10); //Do not generate DC term
//Mode: JFIF, no DC term
//patch5.0@richie@sdram mapping end
L2_ReadCompSize(ptmbsize);
}
//-----------------------------------------------------------------------------
//UCHAR L1_ContiShot(UCHAR qty)
//-----------------------------------------------------------------------------
UCHAR L1_ContiShot(UCHAR qty) USING_0
{
UCHAR i;
BYTE sts;
BYTE name[12];
BYTE showname[13];
ULONG startAddr;
USHORT freeCluster;
ULONG imagesize,thumbsize;
LONG maxSnapNum;
//patch5.0@richie@sdram mapping begin
//patch5.0@richie@conti shot begin
/*
#ifdef M16
maxSnapNum = (1048576-(K_SDRAM_ImageCaptureDisplayBufAddr + K_SDRAM_ImageCaptureDisplayBufSize));
#endif
#ifdef M64
maxSnapNum = (4194304-(K_SDRAM_ImageCaptureDisplayBufAddr + K_SDRAM_ImageCaptureDisplayBufSize));
#endif
#ifdef M128
maxSnapNum = (8388608-(K_SDRAM_ImageCaptureDisplayBufAddr + K_SDRAM_ImageCaptureDisplayBufSize));
#endif
#ifdef M256
maxSnapNum = (16777216-(K_SDRAM_ImageCaptureDisplayBufAddr + K_SDRAM_ImageCaptureDisplayBufSize));
#endif
*/
maxSnapNum = (K_SDRAM_TotalSize-(K_SDRAM_ImageCaptureDisplayBufAddr + K_SDRAM_ImageCaptureDisplayBufSize));
printf("maxSnapNum = %lx,ICDB addr=%lx,ICDB size=%lx\n",maxSnapNum,K_SDRAM_ImageCaptureDisplayBufAddr,K_SDRAM_ImageCaptureDisplayBufSize);
//patch5.0@richie@conti shot end
if(maxSnapNum <= 0)
maxSnapNum = 1;
else
maxSnapNum = (LONG)(maxSnapNum / (LONG)K_SDRAM_ImageCaptureBufSize + 1);
i =(UCHAR)maxSnapNum;
if(qty > i)
return 0;
G_RawImageBufAddr = K_SDRAM_ImageCaptureBufAddr;
//patch5.0@richie@sdram mapping end
freeCluster = DOS_GetDiskSpace();
if ( freeCluster < ( (170L*1024L)/G_DOS_ClusterSize ) )
{
return FALSE;
}
G_Image_SrcDataType = K_File_DataType_YUV422;
if(G_CameraOptions.ImageQty == K_UIOPTION_IMGQTY_HIGH)
G_Image_QTableIndex = K_Q95;
else
G_Image_QTableIndex = K_Qxx;
L2_WriteQTable(K_QWriteTable, G_Image_QTableIndex, NULL);
//patch5.0@richie@conti shot marked
//L2_CtrlScreen(2);
#ifdef ICM107B
//patch4.5@richie@hue
XBYTE[0x21ac] &= 0xFE; // disable color saturation boost
#endif
#ifdef ICM108
//patch4.5@richie@hue
XBYTE[0x21ac] &= 0xFE; // disable color saturation boost
#endif
//patch4.4@andrew@ICM109
#ifdef ICM109
//patch4.5@richie@hue
XBYTE[0x21ac] &= 0xFE; // disable color saturation boost
#endif
for(i=0;i<qty;i++)
{
if(i > 0)
//patch5.0@richie@sdram mapping begin
G_RawImageBufAddr = (K_SDRAM_ImageCaptureDisplayBufAddr + K_SDRAM_ImageCaptureDisplayBufSize) + ((ULONG)i - 1) * K_SDRAM_ImageCaptureBufSize;
//patch5.0@richie@sdram mapping end
SETMODE_ChangeCameraMode(K_MODE_IDLE);
L1_SnapOne(&imagesize,&thumbsize);
}
//patch5.0@richie@sdram mapping
G_RawImageBufAddr = K_SDRAM_ImageCaptureBufAddr;
for(i=0;i<qty;i++)
{
//patch4.5@ada@Fix file index overflow bug while multi-snap begin
if (G_USR_FileIndex >= 10000)
{
#if (SINGLE_DIRECTORY == 0)
sts = USR_CreateNewDir1();
if (sts == FALSE)
{
return L1K_ERROR_GENERAL;
}
#else
//printf("File index over flow\n");
#endif
}
//patch4.5@ada@Fix file index overflow bug while multi-snap end
if(i > 0)
//patch5.0@richie@sdram mapping
G_RawImageBufAddr = (K_SDRAM_ImageCaptureDisplayBufAddr + K_SDRAM_ImageCaptureDisplayBufSize) + ((ULONG)i - 1) * K_SDRAM_ImageCaptureBufSize;
postSnapping(&imagesize,&thumbsize);
//patch5.0@richie@conti shot begin
USR_SetJpgName(showname, G_USR_FileIndex);
showname[8] = '.';
showname[9] = 'J';
showname[10] = 'P';
showname[11] = 'G';
showname[12] = 0;
UI_PrintOSDString(" Save Files ", 0, (G_DSPVsize/32)/2, UI_MENU_DEHIGHLIGHT_COLOR);
UI_PrintOSDString(showname, 2, (G_DSPVsize/32)/2 + 1, UI_MENU_DEHIGHLIGHT_COLOR);
///// SET DISPLAY /////
//printf("\nset displsy\n");
L2_SetDisplayType(G_DisplayType);
L2_SetDisplaySrcImgSize(G_DSPHsize, G_DSPVsize, G_DisplayType);
// set the displayed address and size
L2_SetBFBAddr(K_SDRAM_ImageCaptureDisplayBufAddr);
L2_SetBFBSize(G_DSPHsize,G_DSPVsize);
// set display buffer index is equal to B frame buffer index
L2_SetDisplayMode(0x00, 0x10);
L2_TurnOnOffDisplay(1); //turn on the display device
//patch5.0@richie@conti shot end
//patch5.0@richie@sdram mapping
//patch5.0@richie@conti shot begin
//Joe@2003.3.12 9:21 add begin
//XBYTE[0x2000] = 0x00;
//Joe@2003.3.12 9:22 add end
//XBYTE[0x2000] = 0x05;
EXIFHDR_Initialize_AllExifHeader();
imagesize += EXIFHDR_LoadExifHeader(K_SDRAM_ImageCaptureGeneralBufAddr,&startAddr,&thumbsize);
//patch5.0@richie@conti shot end
File_SendMessage(K_File_UI_End_DscImage, 0);
//ada@0401 For Date & Time Update
USR_UpdateRtcTime();
//printf("K_SDRAM_GeneralBufAddr=%ld\n",K_SDRAM_GeneralBufAddr);
//printf("startAddr=%ld\n",startAddr);
//write JPEG file to card
USR_SetJpgName(name, G_USR_FileIndex);
File_SendMessage( K_File_UI_Start_DscFile, G_USR_FileCount );
G_USR_NewFileSizeInFdb = imagesize;
sts = File_Make(K_File_SrcDataDram2Card, startAddr, name, imagesize);
SETMODE_ChangeCameraMode(K_MODE_IDLE);
if ( sts == TRUE )
{
USR_WriteDramFdbParameter(K_USR_JPG_TYPE,G_USR_FileIndex);
//ada@0401 For DPOF
//patch4.4@ada@DPOF begin
//if (sts)
//{
// L2_DRAMSetStartAddr((K_SDRAM_DPOF3_BufAddr + ((ULONG)G_USR_FileIndex - 1) * 3),K_SDRAM_NoPrefetch);
//ada@0509
// L2_DRAMWriteWord(0xff,0x00);
// L2_DRAMWriteWord(0x00,K_EXIF_IMAGE_FORMAT);
//}
//patch4.4@ada@DPOF end
//ada@0501 for DCF
G_USR_LastFileIndex = G_USR_FileIndex;
//patch4.5@ada@Fix file index bug begin
if (G_USR_FileCount == 0)
{
G_USR_FirstFileIndex = G_USR_FileIndex;
}
if (G_USR_JpgFileCount == 0)
{
G_USR_FirstJpgFileIndex = G_USR_FileIndex;
}
G_USR_LastJpgFileIndex = G_USR_FileIndex;
G_USR_JpgFileCount++;
G_USR_FileIndex++;
G_USR_FileCount++;
//G_USR_LastJpgFileIndex++;
//G_USR_JpgFileCount++;
//patch4.5@ada@Fix file index bug end
//printf("G_USR_FirstJpgFileIndex = %d\n",G_USR_FirstJpgFileIndex);
//printf("G_USR_LastJpgFileIndex = %d\n",G_USR_LastJpgFileIndex);
//printf("G_USR_JpgFileCount = %d\n",G_USR_JpgFileCount);
//patch4.4@ada@DPOF skip AVI & WAV end
File_SendMessage( K_File_UI_End_DscFile, G_USR_FileCount );
}
else
File_SendMessage( K_File_UI_Err_DscFile, 0 );
}
//patch5.0@richie@conti shot begin
UI_PrintOSDString(" ", 0, (G_DSPVsize/32)/2, UI_MENU_DEHIGHLIGHT_COLOR);
UI_PrintOSDString(" ", 0, (G_DSPVsize/32)/2 + 1, UI_MENU_DEHIGHLIGHT_COLOR);
//patch5.0@richie@conti shot end
//restore the DRAM address
//patch5.0@richie@sdram mapping
G_RawImageBufAddr = K_SDRAM_ImageCaptureBufAddr;
// restore Q table
L2_WriteQTable(K_QWriteTable, K_Qxx, NULL);
G_Image_QTableIndex = XBYTE[0x2880];
#if AAA_OPTION
//patch4.3@andrew@0606
L2_InitAEAW(0);
#endif
L1_InitPreview(1);
L2_SetCamMode(0);
L2_SetCamMode(1); //return to the preview mode
L2_TurnOnOffDisplay(1); //turn off the display device
//PRINT_L1 (" L1_SnapOne: Exit\n");
return L1K_SUCCESS;
}
//-----------------------------------------------------------------------------
//L1_DoAllBadPixel
//-----------------------------------------------------------------------------
/*
Arguments:
Addr - Image starting address in the SDRAM
Hsize - Image horizontal size
Vsize - Image vertical size
*/
//patch4.5@yichang@badpixel begin
UCHAR L1_DoAllBadPixel(ULONG Addr, USHORT Hsize, USHORT Vsize) USING_0
{
//patch4.5.2@ada@Fix bugs when accessing xdata begin
data USHORT i,j;
data USHORT xoff,yoff;
data USHORT tmp0,tmp1;
data UCHAR tmp2,tmp3;
data UCHAR dmaCnt;
//USHORT i,j;
//USHORT xoff,yoff;
//USHORT tmp0,tmp1;
//UCHAR tmp2,tmp3;
//UCHAR dmaCnt;
//patch4.5.2@ada@Fix bugs when accessing xdata end
//PRINT_L1(" L1_DoALLBadPixel: Enter\n");
dmaCnt = (UCHAR)((ULONG)K_SDRAM_BadPixelCoordBufSize/(ULONG)512);
// set image starting address and size
L2_SetAGBAddr(Addr);
L2_SetAGBSize(Hsize,Vsize);
// Set the threshold of the edge detection
L2_SetFixBadPxlThd(25);
for(j=0;j<dmaCnt;j++)
{
L2_SetSRAMDMA(0x0C00);
L2_SetDRAMDMA(K_SDRAM_BadPixelCoordBufAddr+j*512);
L2_DoDMA(0x00, 0x01, 1024, 0x00, 0x00);
// set accessing 4K SRAM mode (using port 0x2C10)
L2_4KSRAMBufIdx(1, 0x0C00, &tmp0, &tmp1);
L2_Set4KSRAMMode(1);
for(i=0; i<256; i++)
{
L2_Read4KSRAMPort(&tmp2);
L2_Read4KSRAMPort(&tmp3);
xoff = tmp2 + (tmp3 <<8);
if(tmp2==0xff && tmp3==0xff)
{
//patch5.0@cytsai@bad pixel begin
L2_Set4KSRAMMode(0);
//patch5.0@cytsai@bad pixel end
return L1K_SUCCESS;
}
L2_Read4KSRAMPort(&tmp2);
L2_Read4KSRAMPort(&tmp3);
yoff = tmp2 + (tmp3 <<8);
if(tmp2==0xff && tmp3==0xff)
{
//patch5.0@cytsai@bad pixel begin
L2_Set4KSRAMMode(0);
//patch5.0@cytsai@bad pixel end
return L1K_SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -