⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 l1_preview.c

📁 dz3000_51.0.0.4.rar
💻 C
📖 第 1 页 / 共 5 页
字号:

     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 + -