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

📄 osdupload.c

📁 台湾凌阳方案300万数码相机源代码
💻 C
字号:
/*++
Copyright (c) 2001 Sunplus Technology Co., Ltd.

Module Name:

        osdupload.c

Abstract:

        Module related to OSD data upload functions

Environment:

        Keil C51 Compiler

Revision History:

        01/07/2002      YiChang    created                 
--*/

//=============================================================================
//Header file
//=============================================================================
#include "general.h"
#include "main.h"
#include "quantdef.h"
#include "initio.h"
#include "uiflow.h"
//=============================================================================
//Symbol
//=============================================================================
//-----------------------------------------------------------------------------
//Constant
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
//Variable
//-----------------------------------------------------------------------------



//-----------------------------------------------------------------------------
//OSDtoDRAM
//-----------------------------------------------------------------------------

sfr RamPage = 0x9B;
void OSDtoDRAM(ULONG DramAddr, ULONG nbytes, UCHAR bank) USING_0
{
    USHORT i;

	//patch4.5@ada@improve power to shot performance begin
	USHORT j;
	//patch4.5@ada@improve power to shot performance end

    UCHAR tmp0, tmp1, tmp2;
    ULONG offset;
    UCHAR cmp = 0;

	//DbgPrint("Enter OSDtoDRAM\n");
    
    tmp2 = RamPage;
    tmp0 = XBYTE[0x2C00];
    XBYTE[0x2c00] = tmp0 | 0x04; 
    RamPage = bank;
    tmp1 = XBYTE[0x2C11];	

  	for(offset = 0;offset <= nbytes;offset += 512)
  	{     
    		XBYTE[0x2C11] = tmp1;

		//patch4.5@ada@improve power to shot performance begin
    		for (i = 0x1c00, j = (0x8000 + offset); i < (0x1c00 + 512); i++, j++)
		{
    			XBYTE[i] = XBYTE[j];
		}
	    //for(i=0;i<512;i++)
    	//	XBYTE[0x1c00 + i] = XBYTE[0x8000 + offset + i];
		//patch4.5@ada@improve power to shot performance end

	    	L2_SetSRAMDMA(0x0c00);
    		L2_SetDRAMDMA(DramAddr + offset/2);        
		L2_DoDMA(1, 0, 512, 0, 0);
		XBYTE[0x2C11] = XBYTE[0x2C11] & 0x04;
  	}
       
	XBYTE[0x2c00] = tmp0;
 	RamPage = tmp2;
        //DbgPrint("Finish OSDtoDRAM\n");
}

//-----------------------------------------------------------------------------
//FOSDtoDRAM
//-----------------------------------------------------------------------------
UCHAR FOSDtoDRAM(UCHAR Startbank, UCHAR Bank_num, ULONG DramAddr) USING_0
{
	UCHAR i;

	for(i=0;i<Bank_num;i++)    
		OSDtoDRAM(DramAddr + 16384 * i, 32768, Startbank + 1 + i); 		

	return L1K_SUCCESS;

}
//-----------------------------------------------------------------------------
//GOSDtoDRAM
//-----------------------------------------------------------------------------
UCHAR GOSDtoDRAM(USHORT OSDHsize, USHORT OSDVsize,UCHAR Startbank, UCHAR Bank_num, ULONG DramAddr) USING_0
{
	UCHAR QIndex, i;
      
    L2_ReadQTable(0, &QIndex, 0);

	//patch5.0@richie@sdram mapping begin		
    //move 32k data to each bank
	for(i=0;i<Bank_num;i++)
	       OSDtoDRAM(K_SDRAM_ImageCaptureBufAddr + 16384 * i, 32768, Startbank + 1 + i);
	
	L2_WriteQTable(0x00, K_Q1, NULL);					// parm2=0: Q=1;

    L2_DeCompress(K_SDRAM_ImageCaptureBufAddr, OSDHsize, OSDVsize, DramAddr, 0x00, 0x00, 0);
	L2_WriteQTable(0x01, QIndex, NULL);						// parm2=0: Q=1;

	//for(i=0;i<Bank_num;i++)
	//       OSDtoDRAM(K_SDRAM_FrameBufBAddr + 16384 * i, 32768, Startbank + 1 + i);
	
	//L2_WriteQTable(0x00, K_Q1, NULL);					// parm2=0: Q=1;

    //L2_DeCompress(K_SDRAM_FrameBufBAddr, OSDHsize, OSDVsize, DramAddr, 0x00, 0x00, 0);
	//L2_WriteQTable(0x01, QIndex, NULL);						// parm2=0: Q=1;
	//patch5.0@richie@sdram mapping end		
		
	return L1K_SUCCESS;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -