📄 osdfont1.c
字号:
/* //Low DW Half //else { //////if (_bPosiIndex>4) if (_bPosiIndex&0xfc) _bPosiIndex-=4;//5->1, 6->2, 7->3, 8->4 else _bPosiIndex = 0; } */ switch (_bPosiIndex) { //the line hasn't been coded. so fill four bytes of zeros //case 0: //0 byte wide (0 pixels) for Low DW use only case 4: case 3: case 2: case 1: //if ((_wOSDTemp1%4)==0) // Chuan 172r 2002/03/29: write two zero /////if(!(_wOSDTemp1&0x3)) if ( !(_wOSDTemp1&0x3) ) {#if IO == IO_PCI W99AV_OutCacheData(0x00); W99AV_OutCacheData(0x00); W99AV_OutCacheData(0x00); W99AV_OutCacheData(0x00);#else OUTB(CDPR, 0x0); OUTB(CDPR, 0x0); OUTB(CDPR, 0x0); OUTB(CDPR, 0x0); #endif _wOSDTemp1+=4; //0x00, 0x00, 0x00, 0x00 } //else //{ //do nothing //_wOSDTemp1=_wOSDTemp1; //} break; //case 1: //1 byte wide (4 pixels) case 5: //if ((_wOSDTemp1%4)==0) // Chuan 172r 2002/03/29: write two zero /////if(!(_wOSDTemp1&0x3)) if ( !(_wOSDTemp1&0x3) ) {#if IO == IO_PCI W99AV_OutCacheData(0x00); W99AV_OutCacheData(0x00); W99AV_OutCacheData(0x00);#else OUTB(CDPR, 0x0); OUTB(CDPR, 0x0); OUTB(CDPR, 0x0); #endif _wOSDTemp1+=4; //0x00, 0x00, 0x00, _bIdex } else { _wOSDTemp1++; //_bIdex } #if IO == IO_PCI W99AV_OutCacheData(_bIdex);#else OUTB(CDPR, _bIdex); #endif break; //case 2: //2 bytes wide (8 pixels) case 6: //if ((_wOSDTemp1%4)==0) // Chuan 172r 2002/03/29: write two zero /////if(!(_wOSDTemp1&0x3)) if ( !(_wOSDTemp1&0x3) ) {#if IO == IO_PCI W99AV_OutCacheData(0x00); W99AV_OutCacheData(0x00);#else OUTB(CDPR, 0x0); OUTB(CDPR, 0x0); #endif _wOSDTemp1+=3; //0x00, 0x00, _bIdex } else { _wOSDTemp1++; //_bIdex } #if IO == IO_PCI W99AV_OutCacheData(_bIdex);#else OUTB(CDPR, _bIdex); #endif break; //case 3: //3 bytes wide (12 pixels) case 7: //if ((_wOSDTemp1%4)==0) // Chuan 172r 2002/03/29: write two zero /////if(!(_wOSDTemp1&0x3)) if ( !(_wOSDTemp1&0x3) ) {#if IO == IO_PCI W99AV_OutCacheData(0x00);#else OUTB(CDPR, 0x0);#endif _wOSDTemp1+=2; //0x00, _bIdex } else { _wOSDTemp1++; } #if IO == IO_PCI W99AV_OutCacheData(_bIdex);#else OUTB(CDPR, _bIdex); #endif break; //case 4: //4 bytes wide (16 pixels) case 8: _wOSDTemp1+=1; //_bIdex#if IO == IO_PCI W99AV_OutCacheData(_bIdex);#else OUTB(CDPR, _bIdex); #endif break; default: //add protection here break; }/* if (_bPosiIndex!=0){ #if IO == IO_PCI W99AV_OutCacheData(_bIdex);#else OUTB(CDPR, _bIdex); #endif }*/#if 0 *(_bIndexArray+(BYTE)(_wOSDTemp1%_bPosiIndex)) = _bIdex; //_dwFontData = (_dwFontData<<8) | _bIdex; _wOSDTemp1++; if ((_wOSDTemp1%_bPosiIndex)==0) { //_dwFontData = _dwFontData << ((4-_bPosiIndex)<<3); //_bIndexArray = (BYTE DATA*)&_dwFontData ;#if IO == IO_PCI _outp(CDPR_BYTE, *_bIndexArray); _outp(CDPR_BYTE, *(_bIndexArray+1)); _outp(CDPR_BYTE, *(_bIndexArray+2)); _outp(CDPR_BYTE, *(_bIndexArray+3)); #else OUTB(CDPR, *(_bIndexArray+3)); OUTB(CDPR, *(_bIndexArray+2)); OUTB(CDPR, *(_bIndexArray+1)); OUTB(CDPR, *_bIndexArray); #endif _wOSDTemp1+=(4-_bPosiIndex); }#endif //if (!(_wOSDTemp1%256)||(_wOSDTemp1==_wOSDTemp)) if (!(_wOSDTemp1&0xff)||(_wOSDTemp1==_wOSDTemp)) { return TRUE; }/////#endif // #ifdef COMPRESSION_OSD_FONT#endif // #ifndef NO_OSD return FALSE;} #endif // #ifdef SUPPORT_GZIP_COMPRESSION// Brian1.25, always call this function to load font table// ************************************************************************// Function : OSD_LoadFontTable// Description : load font table// Arguments : none// Return : none// Side Effect :// ************************************************************************void OSD_LoadFontTable(void){#ifdef SUPPORT_GZIP_COMPRESSION // Brian2.35#ifdef PROTECT_FONT_TABLE // Unprotect font table W99AV_WriteRegDW( UCPR2, 0x0000, 0x0000);#endif //Kevin2.37, modify //OSD_LoadFontTableGzip(); UCODE_Unzip(FONTTABLE); // Brian2.35#ifdef PROTECT_FONT_TABLE // Protect font table // Brian2.36, fix address range __dwTemp = 0x01000000 | ((DWORD)((OSD_DRAM_FONT_TABLE_START_0+((DWORD)FONT_NUMBER<<8))>>8) <<12) | (OSD_DRAM_FONT_TABLE_START_0>>8); W99AV_WriteRegDW( UCPR2, LOWORD(__dwTemp), HIWORD(__dwTemp));#endif#else OSD_LoadFontTableHDW(); OSD_LoadFontTableLDW();#endif #ifdef SUPPORT_FONT_TABLE_CHECKSUM // support RISC Check Sum Function from 20031208 IRAM Code. __wFontableChecksum = OSD_FontableChecksum(); printf("Fontable checksum=%x\n", __wFontableChecksum);#endif}#ifdef SUPPORT_UNICODE// Alan2.36, always call this function to load loal font table// ************************************************************************// Function : OSD_LoadLocalFontTable// Description : load local font table// Arguments : none// Return : none// Side Effect :// ************************************************************************void OSD_LoadLocalFontTable(void){#ifdef SUPPORT_GZIP_COMPRESSION //Kevin2.37, modify extern WORD _wOSDTemp1; _wOSDTemp1 = (OSD_DRAM_FONT_TABLE_START_1 - OSD_DRAM_FONT_TABLE_START_0) << 1; //0 //HAL_Reset (HAL_RESET_AUDIO); //Reset audio and Issue DSP NPF command UCODE_Unzip(LOCALFONTTABLE0); __dwW99AV_SrcDRAM = OSD_DRAM_FONT_TABLE_START_0; __dwW99AV_DestDRAM = FONTABLE_ADDR; W99AV_DRAMCopy(_wOSDTemp1); //1 //HAL_Reset (HAL_RESET_AUDIO); //Reset audio and Issue DSP NPF command UCODE_Unzip(LOCALFONTTABLE1); __dwW99AV_SrcDRAM = OSD_DRAM_FONT_TABLE_START_0; __dwW99AV_DestDRAM += _wOSDTemp1; W99AV_DRAMCopy(_wOSDTemp1); /* //2 HAL_Reset (HAL_RESET_AUDIO); //Reset audio and Issue DSP NPF command UCODE_Unzip(LOCALFONTTABLE2); __dwW99AV_SrcDRAM = OSD_DRAM_FONT_TABLE_START_0; __dwW99AV_DestDRAM += _wOSDTemp1; W99AV_DRAMCopy(_wOSDTemp1); */#endif}#endif// Brian1.25, always call this function to load font table// ************************************************************************// Function : OSD_FontableChecksum// Description : do fontable checksum// Arguments : none// Return : checksum value// Side Effect :// ************************************************************************#ifdef SUPPORT_FONT_TABLE_CHECKSUMWORD OSD_FontableChecksum(void){ // support RISC Check Sum Function from 20031208 IRAM Code. // Fontable size = 128K bytes ==> 131072/2352 ==> 55.7 sector __dwW99AVCmdArg[0]=4; __dwW99AVCmdArg[1]=CMDARG_CHECKSUM; __dwW99AVCmdArg[2]=OSD_DRAM_FONT_TABLE_START_0; // Starting address __dwW99AVCmdArg[3]=55; // number of sectors __dwW99AVCmdArg[4]=0; // checksum value W99AV_CommandN(COMMAND_CHECKSUM); W99AV_OutIndex (0x10000003) ; // Read 3th of cmd ram. _wOSDTemp = (WORD)W99AV_InData(); return _wOSDTemp;}#endif#ifdef SUPPORT_CHECK_FONT_TABLE// Brian20041020, by AlanWORD OSD_FontableChecksum1(void){ // support RISC Check Sum Function from 20031208 IRAM Code. // Fontable size = 128K bytes ==> 131072/2352 ==> 55.7 sector __dwW99AVCmdArg[0]=4; __dwW99AVCmdArg[1]=CMDARG_CHECKSUM; __dwW99AVCmdArg[2]=(DWORD)OSD_DRAM_FONT_TABLE_START_0-1; __dwW99AVCmdArg[3]=(DWORD)FONT_NUMBER*1024/2352; //38; // number of sectors (176 * 256 * 2 / 2352) __dwW99AVCmdArg[4]=0; // checksum value W99AV_CommandN(COMMAND_CHECKSUM); W99AV_OutIndex (0x10000003) ; // Read 3th of cmd ram. _wOSDTemp = (WORD)W99AV_InData(); return _wOSDTemp;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -