📄 cardusr.c
字号:
// WWW1 start
#include "general.h"
#include "cardimpt.h"
#include "cardlink.h"
#include "cardusr.h"
// WWW1 end
//patch3.2@ada@0401 For Multi-Frame Play Back
#include "dosvar.h"
#include "dosusr.h"
//version4.0@ada@0513 for Play Back
#include "uiflow.h"
#include "exifhdr.h"
//-----------------------------------------------------------------------------
//Variable
//-----------------------------------------------------------------------------
xdata UCHAR G_thumbnailPlayFlag; //cch@10/26
xdata UCHAR G_Image_Type;
//version4.0@ada@0513 for Card Write Protect
xdata UCHAR G_Card_WriteProtect;
extern xdata UCHAR G_FlashStatus;
extern void UI_SensorPowerOnOff(UCHAR On);
//cytsai@1211
// WWWW3
//patch3.2@ada@0401 For Multi-Frame Play Back
//patch3.2@ada@0401 For DPOF
UCHAR Card_CaptureObject(USHORT objType) USING_0
{
BYTE cameraMode;
BYTE bAudio;
BYTE name[12];
BYTE sts = FALSE;
USHORT i;
if ( objType == K_CAPTURE_Image ) //cch
cameraMode = K_MODE_DSC; //DSC
else
cameraMode = K_MODE_VIDEOCLIP; //Video clip
INITIO_SetCameraSize(cameraMode);
#if (SINGLE_DIRECTORY == 0)
//version4.0@ada@0513 for Multi-Directory
if (G_USR_FileIndex >= 10000)
{
printf("G_USR_FileIndex 1= %d\n",G_USR_FileIndex);
sts = USR_CreateNewDir1();
if (sts == FALSE)
{
return FALSE;
}
}
#endif
switch (objType)
{
case K_CAPTURE_Image:
//cch@10/18
i = 0;
#if 0
do
{
#endif
//DbgPrint("Card_CaptureObject: capture one image starting; where G_wValueLock = %x, i = %x\n", G_wValueLock, i);
#if (OSD_OPTION == 1)
OSD_ShowPlaybackNumber(3,i+1); //cch@10/22
#endif
G_Image_SrcDataType = K_File_DataType_YUV422;
USR_SetJpgName(name, G_USR_FileIndex);
File_SendMessage( K_File_UI_Start_DscFile, G_USR_FileCount );
sts = File_SnapJpg(name);
if ( sts == TRUE )
{
//ada@0401 For Multi-Frame Play Back
//For JPEG file play back speeding-up
//version4.0@ada@0513 for DCF
//USR_WriteDramFdbParameter(K_SDRAM_JPG_FdbParameterBufAddr + ((ULONG)G_USR_FileIndex - 1) * 3);
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);
//version4.0@ada@0513 for DPOF
// L2_DRAMWriteWord(0xff,0x00);
// L2_DRAMWriteWord(0x00,K_EXIF_IMAGE_FORMAT);
//}
//patch4.4@ada@DPOF end
//version4.0@ada@0513 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;
}
//patch4.5@ada@Fix file index bug end
G_USR_FileIndex++;
G_USR_FileCount++;
//patch4.4@ada@DPOF skip AVI & WAV begin
G_USR_LastJpgFileIndex++;
G_USR_JpgFileCount++;
//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@card full
//break;
}
L2_WriteQTable(K_QWriteTable, K_Qxx, NULL); // restore
//DbgPrint("Card_CaptureObject: capture one image ended\n");
i++;
#if 0
} while ( i< G_wValueLock );
#endif
UI_SensorPowerOnOff(1);
XBYTE[0x2080] = 0x01; //power on TGPLL
L2_InitFront(0);
L2_InitAEAW(0);
L1_InitPreview(1); //cytsai@0102
//wendy@2004/9/9
if(G_FlashStatus==0)
{
// L2_SetGPIOBit(15,0); //LCD_BACKLIGHT
L2_TurnOnOffDisplay (0); //debug
}
//wendy@2004/9/9
break;
case K_CAPTURE_AudioStream: // WAV file, @WYEO, 102501
#if ( AUDIO_OPTION == 1 )
USR_SetWaveName(name, G_USR_FileIndex);
File_SendMessage( K_File_UI_Start_WaveFile, G_USR_FileCount );
sts = File_RecordWave(&name[0], G_File_SDRAM_AudioBufAddr, G_File_SDRAM_AudioBufSize, 0); // WWW1
if ( sts == TRUE )
{
G_USR_FileIndex++;
G_USR_FileCount++;
File_SendMessage( K_File_UI_End_WaveFile, G_USR_FileCount );
}
else
File_SendMessage( K_File_UI_Err_WaveFile, 0 );
#endif
break;
case K_CAPTURE_VideoStream:
case K_CAPTURE_AudioVideoStream:
if ( objType == 3 )
bAudio = TRUE;
else
bAudio = FALSE;
G_Image_QTableIndex = K_Q50;
G_Image_SrcDataType = K_File_DataType_YUV411;
USR_SetAviName(name, G_USR_FileIndex);
File_SendMessage( K_File_UI_Start_AviFile, G_USR_FileCount );
sts = File_RecordAvi(&name[0], bAudio);
if ( sts == TRUE )
{
G_USR_FileIndex++;
G_USR_FileCount++;
File_SendMessage( K_File_UI_End_AviFile, G_USR_FileCount );
}
else
File_SendMessage( K_File_UI_Err_AviFile, 0 );
L2_WriteQTable(K_QWriteTable, K_Qxx, NULL); // restore
break;
default:
sts = FALSE;
break;
}
return sts;
}
UCHAR Card_DeleteObject(USHORT objIndex) USING_0
{
UCHAR sts;
switch (objIndex)
{
case 0x0000:
sts = UI_DeleteAllFile();
break;
default:
//version4.0@ada@0513 for DCF
sts = UI_Delete1File(objIndex);
break;
}
return sts;
}
UCHAR Card_UploadObject(USHORT objType, USHORT objIndex) USING_0
{
UCHAR sts;
switch (objType)
{
case 0x0001:
sts = USR_UploadFdb(objIndex);
break;
case 0x0002:
case 0x0003:
sts = USR_Upload1File(objIndex);
break;
//patch4.5@richie@partial file upload begin
case 0x0004:
sts = USR_UploadPartialFile(G_ArgBuf[0],G_ArgBuf[1],objIndex);
break;
//patch4.5@richie@partial file upload end
default:
sts = FALSE;
break;
}
return sts;
}
#if (PLAYBACK_OPTION)
UCHAR Card_PlaybackObject(USHORT objType, USHORT objIndex) USING_0
{
UCHAR sts = TRUE;
USHORT i;
UCHAR PIndex=0;
UCHAR addr273a;
USHORT x=20; // x offset
USHORT y=15; // y offset
XBYTE[0x2306] = 0x00; //cch@10/18
SETMODE_ChangeCameraMode(K_MODE_PLAYBACK);
XBYTE[0x2745] = 0x00;
XBYTE[0x2740] = 0x00;
XBYTE[0x2742] = 0x00;
addr273a = XBYTE[0x273a] ;
G_thumbnailPlayFlag =0; //cch @10/26
switch (objType)
{
case 0x0000: // nine thumbnail playback
for (i=1 ;i<= G_USR_FileIndex ;i++) // // @WYEO, 102401
{
G_thumbnailPlayFlag =1;
XBYTE[0x273a] = 0x1;
// one fix position
#if (OSD_OPTION == 1)
G_PIndex = i;
#endif
PIndex = i%9;
if (PIndex == 0) PIndex = 9;
x = ((PIndex-1) % 3) * ( 80+ 10) +30 ;
y = ((PIndex-1) / 3) * ( 60+ 10) +20 ;
XBYTE[0x2745] = 0x01;
XBYTE[0x2740] = (BYTE) x;
XBYTE[0x2742] = (BYTE) y;
USR_PlayJpg(i, G_SDRAM_ImageAddr);
#if (OSD_OPTION == 1)
OSD_ShowPlaybackNumber(PIndex,i); //cch@10/22
#endif
}
// SETMODE_ChangeCameraMode(K_MODE_IDLE);
break;
// case 0x0001: // four thumbnail playback
// sts = FALSE;
// break;
case 0x0001: // one image playback
//XBYTE[0x273a] = 0x21;
#if (OSD_OPTION == 1)
//OSD_ShowPlaybackNumber(3,objIndex); //cch@10/22
#endif
sts = USR_PlayJpg(objIndex, G_SDRAM_ImageAddr);
break;
case 0x0002: // image slide show playback
for (i=1 ;i<=G_USR_FileIndex ;i++) // @WYEO, 102401
{
XBYTE[0x273a] = 0x21;
#if (OSD_OPTION == 1)
OSD_ShowPlaybackNumber(3,i); //cch@10/22
#endif
USR_PlayJpg(i, G_SDRAM_ImageAddr);
}
// SETMODE_ChangeCameraMode(K_MODE_IDLE);
break;
case 0x0003: // video playback
//@WYEO, 1016
XBYTE[0x273a] = 0x1;
#if (OSD_OPTION == 1)
OSD_ShowPlaybackNumber(3,objIndex); //cch@10/22
#endif
//@WYEO, 1023
//USR_PlayAvi(objIndex, G_SDRAM_ImageAddr, (G_DOS_SDRAM_MaxAddr - G_SDRAM_ImageAddr)<<1, 0, 0);
sts = USR_Play1File(objIndex, FALSE); // @WYEO
break;
case 0x0004: // image slide show playback
for (i=1 ;i<=G_USR_FileIndex ;i++) // @WYEO, 102401
{
#if (OSD_OPTION == 1)
OSD_ShowPlaybackNumber(3,i); //cch@10/22
#endif
USR_Play1File(i, FALSE); // @WYEO
}
// SETMODE_ChangeCameraMode(K_MODE_IDLE);
break;
default:
sts = FALSE;
break;
}
XBYTE[0x273a] = addr273a;
//cch SETMODE_ChangeCameraMode(K_MODE_IDLE);
return sts;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -