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

📄 w99av.h

📁 车载电子影音系统dvd播放系统原程序代码
💻 H
📖 第 1 页 / 共 5 页
字号:

// Brian1.22, add a new F/W user data 2 for FM
#define W99AV_DRAM_ADDR_RESERVE_START_FM_2      0x7000  // 12K DW, for FM mode use only (this area will use the SPU and Navigation area of DVD mode)

// LLY0.85, define A/V buffer size setting for CDROM decoding mode
// Notice: The ending address of Audio buffer 1 & 2 are relative to
//         "reserved User Data DRAM space"
#define W99AV_ADDR_VBUFF_CDROM             W99AV_ADDR_VBUFF
// Reserve size can store 150 sector data :
// (0x60000-0x4C400) DWORD * 4 = 0x4F000 BYTE
// 0x4F000 / 2352 = 137.57 sectors
// So, must take care the max sector NO within once CDROM decoding
//#define W99AV_ADDR_ABUFF_CDROM             0x060004C4L
#define W99AV_ADDR_ABUFF_CDROM             0x059B0464L      // 135.4 Sectors

//**********************************************************************************

// LLY.046, define the base address for storing CDROM decoding data
#ifdef  DUMP_CDROM_DATA_TO_SP_BUFFER
// Chuan2.80p, Now W99AV_ADDR_SPBUFF contains start addr and end addr
#define ECCBASE_BYPASS      ((W99AV_ADDR_SPBUFF << 8) & 0x0000FFFF)    // SP buffer
#else   // #ifdef DUMP_CDROM_DATA_TO_SP_BUFFER
#define ECCBASE_BYPASS      W99AV_ADDR_NVBUFF      // NV buffer
#endif  // #ifdef DUMP_CDROM_DATA_TO_SP_BUFFER

// LLY0.85, move ECCBASE to here
// Reserve size for ECC Done data = 0x38700 ~ 0x4C400
// 0x4C400 - 0x38700 = 0x13D00 (DWORD) = 0x4F400 (BYTE)
// 0x4F400 / 2352 = 138.01 sectors
//#define ECCBASE_REALCDROM           0x38700L // LLY0.85, ((W99AV_ADDR_SPBUFF << 8) & 0x0000FFFF)
#define ECCBASE_REALCDROM           0x32C00L  // 135.8 Sectors


//#define W99AV_ADDR_UCODE_BACKUP         0x2E300L       // 16K DW
#define W99AV_ADDR_UCODE_BACKUP         0x59C00L       // 25K DW
//Kevin1.23, modify
//#define W99AV_ADDR_UCODE_END_BACKUP     0x5FF00L    // Chuan1.21, give the end address.
#define W99AV_ADDR_UCODE_END_BACKUP     0x60000L
//LJY1.24-3, for DSP ucode backup in digest and CDG mode
#define W99AV_ADDR_UCODE_BACKUP_BUFFER  0x172500

//#else // #ifdef USE_32M_SDRAM
//#ifdef SUPPORT_ANTISHOCK





#elif (SDRAM_CONFIGURATION == SDRAM_64M) && defined(SUPPORT_ANTISHOCK)   //Kevin2.27, 64M antishock

#define     IRAM_ADDR       0x0300      // the start address of iram.inc
#define     IRAM_END_ADDR   0x3000      // the end address of iram.inc //Kevin1.01, add
#define     ERAM_ADDR       0x3000      // dsp eram's dram address
#define     ERAM_END_ADDR   0x5000      // dsp eram's dram end address //Kevin1.01, add

//Kevin2.36, swap buffer/side buffer adjustable
#define     W99AV_ADDR_SBUFF_DTS        0x5000L  
#define     W99AV_ADDR_SBUFF_MP3_WMA    0x5000L
#define     W99AV_ADDR_SIDE_INFO_START    0x3F200L // MP3 side information buffer start
#define     W99AV_ADDR_SIDE_INFO_LENGTH   0x6400L  //MP3 side information buffer size
 
#define     W99AV_ADDR_VBUFF        0x17FF1001L             // 511.5K DW
//LJY1.24a, LJY1.11e.patch0, audio buffer cannot exceed 256 frames, also the boundary should not exceed F/W user data area.
#define     W99AV_ADDR_ABUFF        0x062704A7L             // 96K DW, 384DW*256=96KDW for 384Kbits

//LJY1.26, reserve ox1FC00~0x1FFFF for servo ucode backup.
#define     W99AV_ADDR_VBUFF_VCD    0x1F001001L //959.75K DW,  0x1FFF1001L   // 1023.5K DW
//#define     W99AV_ADDR_ABUFF_VCD    0x073A04A7L             // 164.75K DW
//#define     W99AV_ADDR_ABUFF2       0x075B073BL             // 8K DW
//LJY1.26-2, the boundary should not exceed F/W user data area(0x73700).
#define     W99AV_ADDR_ABUFF_VCD    0x071504A7L             // 155.5K DW
#define     W99AV_ADDR_ABUFF2       0x07360716L             // 8K DW


// for MP3 A/V buffer size
#define     W99AV_ADDR_VBUFF_MP3    0x05EE0576L             // 30K DW
//#define     W99AV_ADDR_ABUFF_MP3    0x071E0456L             // 178K DW
//#define     W99AV_ADDR_ABUFF2_MP3   0x075B071FL             // 15K DW
//LJY1.24a, the boundary should not exceed F/W user data area(0x73700).
#define     W99AV_ADDR_ABUFF_MP3    0x06F90456L             // 168.75K DW
#define     W99AV_ADDR_ABUFF2_MP3   0x073606FAL             // 15K DW

// For MP3 and JPG, and share frame buffer 2
#define     W99AV_ADDR_VBUFF_JPEG   W99AV_ADDR_VBUFF_MP3    // 30K DW
#define     W99AV_ADDR_ABUFF_JPEG   0x05380456L             // 56.5K DW

// For LPCM A/V buffer size
#define     W99AV_ADDR_VBUFF_LPCM   W99AV_ADDR_VBUFF        // 511.5K DW
#define     W99AV_ADDR_ABUFF_LPCM   W99AV_ADDR_ABUFF        // 173K DW

// For CDDA buffer size
#define     W99AV_ADDR_VBUFF_PCM    W99AV_ADDR_VBUFF        // 511.5K DW
#define     W99AV_ADDR_ABUFF_PCM        0x071204A7L             // 154K DW, //LJY1.22, LJY1.11b, fix CD-DTS playback anormal issue.(PCM/PCM2 will be used when plays CD-DTS)
#define     W99AV_ADDR_ABUFF2_PCM        0x075b0713L             //18K DW
//LJY1.26, reserve ox1FC00~0x1FFFF for servo ucode backup.
#define     W99AV_ADDR_ABUFFBAK_PCM      0x1F000A61L//0x1F000A61L //1319.75K DW //0x20000A61L    //1383.75K DW

// LJY1.10, for CDG
/* LJY1.26, removed.
#define     W99AV_ADDR_VBUFF_CDG   0x00800050 //x00710050L  // 18K DW, buffer too small will caue fill logo data failed??? (IFIFO overflow)
#define     W99AV_ADDR_ABUFF_CDG   0x04900456 // 50K DW
*/

#define     W99AV_ADDR_ABUFF_AC3    W99AV_ADDR_ABUFF        // 173K DW

//Kevin2.27, 64M non-antishock -> use 32M settings
/*
#else
#define     W99AV_ADDR_VBUFF        0x12001001L             // 127.75K DW
//Kevin1.24, increase audio buffer & adjust threshold to avoid DVD audio underflow & VCD audio overflow
//#define     W99AV_ADDR_ABUFF        0x04C704A7L             // 8K DW
//#define     W99AV_ADDR_ABUFF2       0x04E804C8L             // 8K DW
#define     W99AV_ADDR_ABUFF        0x04D704A7L             // 12K DW
#define     W99AV_ADDR_ABUFF2       0x050804D8L             // 12K DW

// for MP3 A/V buffer size
#define     W99AV_ADDR_VBUFF_MP3    0x05EE0576L             // 30K DW
#define     W99AV_ADDR_ABUFF_MP3    0x05380456L             // 56.5K DW
#define     W99AV_ADDR_ABUFF2_MP3   0x05750539L             // 15K DW

// For MP3 and JPG, and share frame buffer 2
#define     W99AV_ADDR_VBUFF_JPEG   W99AV_ADDR_VBUFF_MP3    // 30K DW
#define     W99AV_ADDR_ABUFF_JPEG   W99AV_ADDR_ABUFF_MP3    // 56.5K DW

// For LPCM A/V buffer size
#define     W99AV_ADDR_VBUFF_LPCM   W99AV_ADDR_VBUFF        // 127.75K DW
#define     W99AV_ADDR_ABUFF_LPCM   0x054704A7L             // 40K DW

// For CDDA buffer size
#define     W99AV_ADDR_VBUFF_PCM    W99AV_ADDR_VBUFF        // 127.75K DW
#define     W99AV_ADDR_ABUFF_PCM    W99AV_ADDR_ABUFF_LPCM   // 218.25K DW

// LJY1.10, for CDG
#define     W99AV_ADDR_VBUFF_CDG   0x00800050 //x00710050L  // 18K DW, buffer too small will caue fill logo data failed??? (IFIFO overflow)
#define     W99AV_ADDR_ABUFF_CDG   0x04FF0456 // 42.25K DW  //LJY1.26, 56.5K->42.25K for DSP code backup
//LJY1.26, let CDG YUV buffer start from 0x50000 to avoid destroying DSP code backup area.(RISC needs 158KDW for CDG YUV/RGB buffer) 
#define		W99AV_ADDR_CDG_YUV_START	0x500 // YUV start >> 8

// For CDROM-AC3 used.
#define     W99AV_ADDR_ABUFF_AC3    W99AV_ADDR_ABUFF        // 8K DW

#endif 
*/



// for NV buffer start address
// Micky0.83, from 20030514 risc codes, the NV addr will be decided by ucode
#define W99AV_ADDR_NVBUFF           0x9e00L
// Micky0.83b, use 13.25K for SP buffer.(why EPP can't use 13.5K??)
#define W99AV_ADDR_SPBUFF           0x009D0068L     // Chuan2.80p, end>>8, start>>8
#define W99AV_ADDR_RTIBUFF          0x3F400L     // Chuan2.80p
#define W99AV_ADDR_NV_RTI_BUFF      (MAKELONG((W99AV_ADDR_RTIBUFF>>8),(W99AV_ADDR_NVBUFF>>8)))

// LLY.276p-4, define PCM buffer starting address
#define W99AV_ADDR_PCMBUFF          0x3fe  
#define W99AV_ADDR_PCMBUFF2         0x47e     // PCM Buffer 2 for Other Mode
#define W99AV_ADDR_PCMBUFF_MP3      0x70     // MP3 case
#define W99AV_ADDR_PCMBUFF_JPEG     W99AV_ADDR_PCMBUFF_MP3     // JPEG case

// Micky0.86, the write pixel start must be the same bank w/ display buffer.
#define W99AV_DRAM_ADDR_WPIXEL_START            0xf2300
// Chuan1.20, RESERVE 25K DW.
#define W99AV_DRAM_ADDR_RESERVE_START           0x73700 // 0x75c00
#define W99AV_DRAM_ADDR_RESERVE_END             0x79B00 // 0x7FFFF

// Chuan1.20, DSP Backup Area: 25K DW
#define W99AV_ADDR_UCODE_BACKUP                 0x79c00
#define W99AV_ADDR_UCODE_END_BACKUP             0x80000    // Chuan1.21, is it safe?

// LLY0.85, define A/V buffer size setting for CDROM decoding mode
// Notice: The ending address of Audio buffer 1 & 2 are relative to
//         "reserved User Data DRAM space"
#define W99AV_ADDR_VBUFF_CDROM             W99AV_ADDR_VBUFF
// Reserve size can store 150 sector data :
// (0x70000-0x5A000) DWORD * 4 = 0x58000 BYTE
// 0x58000 / 2352 = 153.25 sectors
// So, must take care the max sector NO within once CDROM decoding
#define W99AV_ADDR_ABUFF_CDROM             0x070005A0L
//**********************************************************************************

// LLY.046, define the base address for storing CDROM decoding data
#ifdef  DUMP_CDROM_DATA_TO_SP_BUFFER
// Chuan2.80p, Now W99AV_ADDR_SPBUFF contains start addr and end addr
#define ECCBASE_BYPASS      ((W99AV_ADDR_SPBUFF << 8) & 0x0000FFFF)    // SP buffer
#else   // #ifdef DUMP_CDROM_DATA_TO_SP_BUFFER
#define ECCBASE_BYPASS      W99AV_ADDR_NVBUFF      // NV buffer
#endif  // #ifdef DUMP_CDROM_DATA_TO_SP_BUFFER

// LLY0.85, move ECCBASE to here
// Reserve size for ECC Done data = 0x3F200 ~ 0x5A000
// 0x5A000 - 0x3F200 = 0x1AE00 (DWORD) = 0x6B800 (BYTE)
// 0x6B800 / 2352 = 187.21 sectors
#define ECCBASE_REALCDROM           0x3F200 // LLY0.85, ((W99AV_ADDR_SPBUFF << 8) & 0x0000FFFF)
//#define ECCBASE_REALCDROM           ((W99AV_ADDR_SPBUFF << 8) & 0x0000FFFF)
    


#elif (SDRAM_CONFIGURATION == SDRAM_32M_D) //Kevin2.27, downgraded 32M

#define     IRAM_ADDR       0x0300      // the start address of iram.inc
#define     IRAM_END_ADDR   0x3000      // the end address of iram.inc //Kevin1.01, add
#define     ERAM_ADDR       0x3000      // dsp eram's dram address
#define     ERAM_END_ADDR   0x5000      // dsp eram's dram end address //Kevin1.01, add

//Kevin2.36, swap buffer/side buffer adjustable
#define     W99AV_ADDR_SBUFF_DTS        0x5000L  
#define     W99AV_ADDR_SBUFF_MP3_WMA    0x5000L
#define     W99AV_ADDR_SIDE_INFO_START    0x3F200L // MP3 side information buffer start
#define     W99AV_ADDR_SIDE_INFO_LENGTH   0x6400L  //MP3 side information buffer size

//To Do by Alex
//alex2.27, find the address in bank2 , change it in bank 1
//-------------------------------------------------------//
//**********************************************************************************
// Digest mode buffer adjustment 
#define     W99AV_ADDR_VBUFF_DIGEST         0x09E30801L             // alex2.27 Bank2 to Bank1 , 0x11E31001-> 0x09E30801L
                                                                    // 120.5K DW, move video buffer to bank 2 in digest mode
#define     W99AV_ADDR_ABUFF_DIGEST         0x030302E3L             // 8K DW (only use 8K for sync issue)
#define     W99AV_ADDR_ABUFF2_DIGEST        0x03240304L             // 8K DW
// for digest mode, frame buffer starts form end of W99AV_ADDR_PCMBUFF_DIGEST +6K ==> 0x33D00 ==> put at frame buffer's limit 0x33E00
#define W99AV_ADDR_PCMBUFF_DIGEST          0x325                   // 8K DW  ==> 6K DW
// keep MAD swap buffer plus extra 2K, so we may move W99AV_ADDR_PCMBUFF_DIGEST to here
#define W99AV_ADDR_PCMBUFF2_DIGEST         0x70                   // 10K DW, PCM Buffer 2 for Other Mode
// define Frame buffer start address for Digest mode
#define W99AV_ADDR_FRAMEBUFF_DIGEST        0x33E    // address >> 8

// For normal A/V buffer size
// Chuan1.00, enlarge Video Buffer size from 86K to 172K
// ** TCH1.01-908;  Can't over 0x20000 as RISC limitation   ....0x12B11001L    
// #define     W99AV_ADDR_VBUFF        0x0600041EL             // 120.5K DW
#define     W99AV_ADDR_VBUFF        0x059B03FEL             // 103.25K DW


// reserve 40K from 0x35700~0x3F7FF for all Audio bitstream buffer
//Kevin1.24, increase audio buffer & adjust threshold to avoid DVD audio underflow & VCD audio overflow
//#define     W99AV_ADDR_ABUFF        0x03770357L             // 8K DW (only use 8K for sync issue)
//#define     W99AV_ADDR_ABUFF2       0x03980378L             // 8K DW
#define     W99AV_ADDR_ABUFF        0x03870357L             // 12K DW
#define     W99AV_ADDR_ABUFF2       0x03b80388L             // 12K DW


// for MP3 A/V buffer size
//#define     W99AV_ADDR_VBUFF_MP3    0x05EE0576L             // 30K DW
#define     W99AV_ADDR_VBUFF_MP3    0x03F10348L             // 42.25K DW

#define     W99AV_ADDR_ABUFF_MP3    0x05380456L             // 56.5K DW
#define     W99AV_ADDR_ABUFF2_MP3   0x05750539L             // 15K DW

// For MP3 and JPG, and share frame buffer 2
#define     W99AV_ADDR_VBUFF_JPEG   W99AV_ADDR_VBUFF_MP3    // 30K DW
#define     W99AV_ADDR_ABUFF_JPEG   W99AV_ADDR_ABUFF_MP3    // 56.5K DW

// For LPCM A/V buffer size
#define     W99AV_ADDR_VBUFF_LPCM   W99AV_ADDR_VBUFF        // 120.5K DW

⌨️ 快捷键说明

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