ScPadAlloc.h
上传用户:super_houu
上传日期:2008-09-21
资源大小:4099k
文件大小:14k
源码类别:

DVD

开发平台:

Others

  1. /****************************************************************************************
  2.  *  Copyright (c) 2002 ZORAN Corporation, All Rights Reserved
  3.  *  THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
  4.  *
  5.  *  File: $Workfile: ScPadAlloc.h $             
  6.  *
  7.  * Description:
  8.  * ============
  9.  * 
  10.  * 
  11.  * Log:
  12.  * ====
  13.  * $Revision: 42 $
  14.  * Last Modified by $Author: Glenl $ at $Modtime: 2/20/04 4:22p $ 
  15.  ****************************************************************************************
  16.  * Updates:
  17.  ****************************************************************************************
  18.  * $Log: /I76/I76_Common/I76_Reference/Playcore/ScPad/ScPadAlloc.h $
  19.  * 
  20.  * 42    2/20/04 6:23p Glenl
  21.  * Merged S1 code
  22.  * 
  23.  * 41    04-02-19 17:58 Jerryc
  24.  * add sacd code
  25.  * 
  26.  * 40    2/11/04 12:42a Lotan
  27.  * new Divx DRM handling method.
  28.  * 
  29.  * 39    13/01/04 16:31 Lotan
  30.  * update subtitles -> move variables to scratch-pad
  31.  * 
  32.  * 38    1/05/04 12:26p Fwang
  33.  * 
  34.  * 37    12/31/03 2:14p Fwang
  35.  * Add AVI display menu.
  36.  * 
  37.  * 36    11/20/03 18:52 Eyalr
  38.  * 
  39.  * 35    11/15/03 7:11p Leslie
  40.  * Remove DVD_AUDIO_SUPPORT compile switch to make the code compileable
  41.  * 
  42.  * 34    11/15/03 1:01p Leonh
  43.  * Angieh:add support for display menu.
  44.  * 
  45.  * 33    11/06/03 15:12 Eyalr
  46.  * added DivXIndexTable
  47.  * 
  48.  * 32    11/06/03 11:17a Chaol
  49.  * moved SC_CDTOC_ADDR start address
  50.  * 
  51.  * 31    11/01/03 10:33a Chaol
  52.  * add DVD-Audio downmix coefficients table address in SC-Pad
  53.  * 
  54.  * 30    03-07-09 10:23 Leonh
  55.  * cache enable
  56.  * 
  57.  * 29    03-06-11 17:02 Frankm
  58.  * Add support for 5000 clips.
  59.  * 
  60.  * 28    03-06-02 21:42 Leonh
  61.  * 
  62.  * 27    03-03-21 16:20 Jerryc
  63.  * define MAX_PROGLIST_ENTRIES as CLIPS_MAX_PROGRAM_SIZE.
  64.  * 
  65.  * 26    03-03-20 11:47 Jerryc
  66.  * support 1500 clips and 300 dirs.
  67.  * 
  68.  * 25    3/19/03 3:45p Rinata
  69.  * fix define of SC_CLIPS_LIST_ADDRESS
  70.  * 
  71.  * 22    03-03-04 11:38 Jerryc
  72.  * jerry cai, merge new nav clips lib.
  73.  * 
  74.  * 21    03-02-14 11:45 Victorwu
  75.  * Correct the clips list address.
  76.  * 
  77.  * 20    03-02-08 0:40 Leslie
  78.  * Increase Clip Dir size
  79.  * 
  80.  * 19    03-02-06 14:20 Leslie
  81.  * Change the SC_CLIPS_LIST_ADDRESS to Sc-Pad Area(414K - 218K)
  82.  * 
  83.  * 18    03-01-30 23:12 Leslie
  84.  * Change SC_CLIPSDIR_LIST_ADDRESS
  85.  * 
  86.  * 17    03-01-14 1:41 Leslie
  87.  * Allocate Statci SC for BitRate info/String display
  88.  * 
  89.  * 16    03-01-09 19:01 Royz
  90.  * 
  91.  * 15    03-01-09 17:00 Royz
  92.  * add some definition for VESTEL search menu
  93.  * 
  94.  * 14    03-01-09 4:46 Leslie
  95.  * Code cleanup
  96.  * Support for unicode
  97.  * 
  98.  * 13    12/31/02 2:19p Leslie
  99.  * Change the address for SC_CLIPS_LIST_ADDRESS
  100.  * 
  101.  * 12    12/18/02 12:25p Leslie
  102.  * Change SC_CLIPS_LIST_ADDRESS
  103.  * 
  104.  * 11    12/09/02 6:17p Leslie
  105.  * Code cleanup
  106.  * 
  107.  * 10    11/12/02 3:04p Leslie
  108.  * Change the value of SC_CLIPS_LIST_ADDRESS
  109.  * 
  110.  * 9     11/07/02 9:40p Leslie
  111.  * Different  SC_CLIPS_LIST_ADDRESS value for 32M/64M SDRAM address
  112.  * mapping
  113.  * 
  114.  * 8     3/06/02 19:59 Nirm
  115.  * - Moved SC_CLIPS_LIST_ADDRESS to ScPadAlloc.h
  116.  * 
  117.  * 7     26/05/02 17:23 Ettim
  118.  * Using the extended address mode and setting the file list size to 500
  119.  * files.
  120.  * 
  121.  * 6     9/05/02 16:17 Nirm
  122.  * - Moved CGMS-Table allocation to inside the DVD Navigator.
  123.  * 
  124.  * 5     5/06/02 17:47 Rinata
  125.  * increase NUM_OF_LINE21DATA_BUFFER_POOL to 8
  126.  * 
  127.  * 4     4/30/02 17:27 Rinata
  128.  * update MAX_VOB_FILES for 16M SDRAM
  129.  * 
  130.  * 3     4/30/02 17:11 Rinata
  131.  * CGMS/WSS support
  132.  * 
  133.  * 2     23/04/02 9:36 Nirm
  134.  * - Added dependency in "Config.h".
  135.  * 
  136.  * 1     4/03/02 18:11 Nirm
  137.  ****************************************************************************************/
  138. #include "Config.h" // Global Configuration - do not remove!
  139. #ifndef __SCPADALLOC_H_
  140. #define __SCPADALLOC_H_
  141. #include "PlaycoreAuxCacheAuxCache.h"
  142. #ifdef DISC_CACHE_ENABLE
  143. #include "PlaycoreScPadcachemgr.h"
  144. #endif
  145. #include "decoder_settingsdram_config.h"
  146. #include "playcoreNav_clipsClip_Impl.h" //ZKR JK0426 : for compile error
  147. #include "playcoreNav_clipsnav_clips.h"
  148. #include "PlaycoreAuxCacheAuxCache.h"
  149. #include "PlaycoreScPadscllmgr.h"
  150. #include "PlaycoreFilesysFileSystem_impl.h"
  151. /////////////////////////////////////////////////////////////////////////////
  152. // Scratch-Pad Static Allocations
  153. /////////////////////////////////////////////////////////////////////////////
  154. // Common Memory Allocations, relative to the beginning of the Scratch-Pad.
  155. // All addresses are expressed in DWORD units.
  156. /////////////////////////////////////////////////////////////////////////////
  157. // Unshared Memory Segments
  158. //
  159. // The following memory-segments inside the Scratch-Pad are dedicated to a 
  160. // specific purpose, pre-defined at compile-time.
  161. // Scratch-Pad Cache
  162. #ifdef DVD_VR_SUPPORT
  163. #define SC_CACHEREC_ADDR 0x2000 //32KB, the position is behind the dynamic memory
  164. #else
  165. #define SC_CACHEREC_ADDR 0
  166. #endif
  167. // Global Program-List
  168. #ifdef USE_2ND_32MSDRAM_FOR_CLIPS
  169. #define MAX_PROGLIST_ENTRIES 5000
  170. #else
  171. #define MAX_PROGLIST_ENTRIES CLIPS_MAX_PROGRAM_SIZE
  172. #endif//USE_2ND_32MSDRAM_FOR_CLIPS
  173. #define SC_PROGLIST_ADDR SC_CACHEREC_ADDR
  174. #define SC_PROGLIST_SZ ((MAX_PROGLIST_ENTRIES * sizeof(WORD)) / sizeof(DWORD))+1 //because we used start from 1 but not 0, so pluse one more 
  175. #ifdef TV_GUARDIAN_ENABLE
  176. // A 4 x 64 Words buffer pool for TV Guardian Data
  177. #define SC_LINE21_DATA_BUFFER_ADDR (SC_PROGLIST_ADDR + SC_PROGLIST_SZ)
  178. #define SC_LINE21_DATA_POOL_SIZE 10 //DWORDs
  179. #define NUM_OF_LINE21DATA_BUFFER_POOL 8
  180. #define SC_LINE21_DATA_BUFFER_SZ ( NUM_OF_LINE21DATA_BUFFER_POOL * SC_LINE21_DATA_POOL_SIZE ) /*4 by 64words*/
  181. #else
  182. #define SC_LINE21_DATA_BUFFER_SZ 0
  183. #endif //TV_GUARDIAN_ENABLE
  184. // Menu system use
  185. #define SC_TMP_MSG_ADDR (SC_PROGLIST_ADDR+SC_PROGLIST_SZ + SC_LINE21_DATA_BUFFER_SZ)
  186. #define SC_TMP_MSG_SZ 2
  187. #define SC_TMP_STR_ADDR (SC_TMP_MSG_ADDR+SC_TMP_MSG_SZ)
  188. #define SC_TMP_STR_SZ 26
  189. #define SC_PERMANENT_MSG_ADDR (SC_TMP_STR_ADDR + SC_TMP_STR_SZ)
  190. #define SC_PERMANENT_MSG_SZ 2
  191. #ifdef S1_GUI
  192. #define SC_PERMANENT_MSG_LINE_2_ADDR (SC_PERMANENT_MSG_ADDR + SC_PERMANENT_MSG_SZ)
  193. #define SC_PERMANENT_MSG_LINE_2_SZ 1
  194. #define SC_CURRENT_TIME_MSG_ADDR (SC_PERMANENT_MSG_LINE_2_ADDR + SC_PERMANENT_MSG_LINE_2_SZ)
  195. #define SC_CURRENT_TIME_MSG_SZ 6
  196. #else
  197. #define SC_MUTE_MSG_ADDR (SC_PERMANENT_MSG_ADDR + SC_PERMANENT_MSG_SZ)
  198. #define SC_MUTE_MSG_SZ 1
  199. #define SC_CURRENT_TIME_MSG_ADDR (SC_MUTE_MSG_ADDR + SC_MUTE_MSG_SZ)
  200. #define SC_CURRENT_TIME_MSG_SZ 6
  201. #endif
  202. #define SC_TOTAL_TIME_MSG_ADDR (SC_CURRENT_TIME_MSG_ADDR + SC_CURRENT_TIME_MSG_SZ)
  203. #define SC_TOTAL_TIME_MSG_SZ 8
  204. #define SC_ANGLE_MSG_ADDR (SC_TOTAL_TIME_MSG_ADDR + SC_TOTAL_TIME_MSG_SZ)
  205. #define SC_ANGLE_MSG_SZ 6
  206. #define SC_TITLE_MSG_ADDR (SC_ANGLE_MSG_ADDR + SC_ANGLE_MSG_SZ)
  207. #define SC_TITLE_MSG_SZ 6
  208. #define SC_CHAPTER_MSG_ADDR (SC_TITLE_MSG_ADDR + SC_TITLE_MSG_SZ)
  209. #define SC_CHAPTER_MSG_SZ 6
  210. #define SC_TITLE_NUM_MSG_ADDR (SC_CHAPTER_MSG_ADDR + SC_CHAPTER_MSG_SZ)
  211. #define SC_TITLE_NUM_MSG_SZ 6
  212. #define SC_CHAPTER_NUM_MSG_ADDR (SC_TITLE_NUM_MSG_ADDR + SC_TITLE_NUM_MSG_SZ)
  213. #define SC_CHAPTER_NUM_MSG_SZ 6
  214. #define SC_AUDIO_MSG_ADDR (SC_CHAPTER_MSG_ADDR + SC_CHAPTER_MSG_SZ)
  215. #define SC_AUDIO_MSG_SZ 20
  216. #define SC_SUBTITLE_MSG_ADDR (SC_AUDIO_MSG_ADDR + SC_AUDIO_MSG_SZ)
  217. #define SC_SUBTITLE_MSG_SZ 20
  218. #define SC_BITRATE_INFO_ADDR (SC_SUBTITLE_MSG_ADDR + SC_SUBTITLE_MSG_SZ)
  219. #define SC_BITRATE_INFO_SZ 2
  220. #define SC_BITRATE_MSG_ADDR (SC_BITRATE_INFO_ADDR + SC_BITRATE_INFO_SZ)
  221. #define SC_BITRATE_MSG_SZ 20
  222. #define SC_CLIPTYPE_MSG_ADDR (SC_BITRATE_MSG_ADDR + SC_BITRATE_MSG_SZ)
  223. #define SC_CLIPTYPE_MSG_SZ 10
  224. #ifdef AVI_DRM_SUPPORT
  225. #define SC_AVI_DRM_MSG_ADDR (SC_CLIPTYPE_MSG_ADDR + SC_CLIPTYPE_MSG_SZ)
  226. #define SC_AVI_DRM_MSG_SZ 22
  227. #endif
  228. #ifdef AVI_DRM_SUPPORT
  229. #define SC_VERSION_MSG_ADDR (SC_AVI_DRM_MSG_ADDR + SC_AVI_DRM_MSG_SZ)
  230. #else
  231. #define SC_VERSION_MSG_ADDR (SC_CLIPTYPE_MSG_ADDR + SC_CLIPTYPE_MSG_SZ)
  232. #endif
  233. #define SC_VERSION_MSG_SZ 20
  234. #define SC_CURR_CAPTION_BAR_ADDR (SC_VERSION_MSG_ADDR+SC_VERSION_MSG_SZ)
  235. #ifdef I96_UI_MEM_SAVE
  236. #define SC_CURR_CAPTION_BAR_SIZE  CAPTION_DISPLAY_LEN+4
  237. #else
  238. #define SC_CURR_CAPTION_BAR_SIZE  0
  239. #endif
  240. #define SC_EXT_INFO_ADDR (SC_CURR_CAPTION_BAR_ADDR+SC_CURR_CAPTION_BAR_SIZE)
  241. #ifdef I96_UI_MEM_SAVE
  242. #define SC_EXT_INFO_SIZE   EXTINFO_LEN
  243. #else
  244. #define SC_EXT_INFO_SIZE   0
  245. #endif
  246. //#ifdef DVD_AUDIO_SUPPORT
  247. #define SC_PAGE_MSG_ADDR (SC_EXT_INFO_ADDR + SC_EXT_INFO_SIZE)
  248. #define SC_PAGE_MSG_SZ 6
  249. #define SC_PAGE_NUM_MSG_ADDR (SC_VERSION_MSG_ADDR + SC_VERSION_MSG_SZ)
  250. #define SC_PAGE_NUM_MSG_SZ 6
  251. #define SC_DA_AUDIO1_MSG_ADDR (SC_PAGE_MSG_ADDR + SC_PAGE_MSG_SZ)
  252. #define SC_DA_AUDIO1_MSG_SZ 20
  253. #define SC_DA_AUDIO2_MSG_ADDR (SC_DA_AUDIO1_MSG_ADDR + SC_DA_AUDIO1_MSG_SZ)
  254. #define SC_DA_AUDIO2_MSG_SZ 20
  255. //#endif
  256. #define SC_VOLUME_ID_ADDR (SC_DA_AUDIO2_MSG_ADDR + SC_DA_AUDIO2_MSG_SZ)
  257. #define SC_VOLUME_ID_SZ ((FILESYSTEM_MAX_VOLUME_NAME *sizeof(WCHAR)+sizeof(DWORD)-1) / sizeof(DWORD))
  258. #define SC_CURRENT_PATHNAME_ADDR (SC_VOLUME_ID_ADDR + SC_VOLUME_ID_SZ)
  259. #define SC_CURRENT_PATHNAME_SZ ((MAX_PATH *sizeof(WCHAR)+sizeof(DWORD)-1)/sizeof(DWORD))
  260. #define SC_MEMORY_CLUSTERS_REGISTRY_ADDR (SC_CURRENT_PATHNAME_ADDR+SC_CURRENT_PATHNAME_SZ)
  261. #define SC_MEMORY_CLUSTERS_REGISTRY_SZ ((CLUSTERS_POOL_REG_SZ(SC_CLUSTERS_CNT)+sizeof(DWORD))/sizeof(DWORD))
  262. #define SC_CLIPS_CURRENT_DIRECTORY_ADDR (SC_MEMORY_CLUSTERS_REGISTRY_ADDR + SC_MEMORY_CLUSTERS_REGISTRY_SZ)
  263. #define SC_CLIPS_CURRENT_DIRECTORY_SZ (((CLIPS_MAX_DIRNAME_LEN+1)*sizeof(WCHAR)+sizeof(DWORD)-1)/sizeof(DWORD))
  264. #define SC_CLIPS_CURRENT_FILENAME_ADDR (SC_CLIPS_CURRENT_DIRECTORY_ADDR + SC_CLIPS_CURRENT_DIRECTORY_SZ)
  265. #define SC_CLIPS_CURRENT_FILENAME_SZ (((CLIPS_MAX_FILENAME_LEN+1)*sizeof(WCHAR)+sizeof(DWORD)-1)/sizeof(DWORD))
  266. #define SC_MSG_END_ADDR (SC_CLIPS_CURRENT_FILENAME_ADDR + SC_CLIPS_CURRENT_FILENAME_SZ)
  267. #define SC_AUX_TABLE_ADDR SC_MSG_END_ADDR
  268. #ifdef SC_AUX_TBL
  269. #define SC_AUX_TABLE_SZ MAX_CACHED_SECTORS
  270. #else
  271. #define SC_AUX_TABLE_SZ 0
  272. #endif
  273. #define SC_AUX_END_ADDR SC_AUX_TABLE_ADDR + SC_AUX_TABLE_SZ
  274. #if D_SUPPORT_SACD //share sc space with DVD.
  275. #define SC_SACD_TXT_LEN 40 // in word, unicode 8 * 6 = 48, allocate 48 DWORD for 6 song titles within a menu .
  276. #define SC_SACD_TXT_LEN_IN_DWORD 20 // 8 * 6 = 48, allocate 48 DWORD for 6 song titles within a menu .
  277. #define SC_SACD_DISC_TITLE SC_SUBTITLE_MSG_ADDR
  278. #define SC_SACD_TXT_ARTIST (SC_ANGLE_MSG_ADDR + SC_SACD_TXT_LEN_IN_DWORD)
  279. //#define SC_SACD_TXT_ALBUM  (SC_ANGLE_MSG_ADDR + SC_SACD_TXT_LEN_IN_DWORD*2)
  280. #endif
  281. #ifdef DVD_VR_SUPPORT// Share the SC space with Global Program-List. when playing DVD VR, it only need 12 program lists
  282. #define SC_RDI_BUFFER_SZ (CONTAINER_COUNT(RDI_SIZE*MAX_RDI_BUFFER))
  283. #define SC_RDI_BUFFER_ADDR (SC_PROGLIST_ADDR+SC_PROGLIST_SZ-SC_RDI_BUFFER_SZ)
  284. #endif
  285. /////////////////////////////////////////////////////////////////////////////
  286. // Shared Memory Segments
  287. //
  288. // The following are memory-segments inside the Scratch-Pad, which are 
  289. // shared among a number of modules, and their purpose is determined at run 
  290. // time by the module using this space.
  291. // Navigators Data-Structures for DVD
  292. #define SC_NAVIGATORS_ADDR (SC_AUX_END_ADDR)
  293. #ifdef DVD_VR_SUPPORT
  294. #define SC_DVDVR_NAV_ADDR (SC_NAVIGATORS_ADDR)
  295. #endif
  296. // Table-Of-Contents Buffer for CD media
  297. #define SC_CDTOC_ADDR (SC_AUX_END_ADDR)
  298. #define SC_CDTOC_SZ (99 * 2) // Needs 2 DWORDs (5 used bytes only) * 99 items
  299. // Navigator Data-Structures for CD Media
  300. #define SC_CDDA_NAV_ADDR (SC_CDTOC_ADDR + SC_CDTOC_SZ)
  301. #define SC_SVCD_NAV_ADDR (SC_CDTOC_ADDR + SC_CDTOC_SZ)
  302. #define SC_CLIPS_NAV_ADDR (SC_CDTOC_ADDR + SC_CDTOC_SZ)
  303. #define SC_CLIPS_LIST_ADDRESS (SC_FOR_CLIPS_ADDR>>1)
  304. #define SC_CLIPS_LIST_SZ (((UINT32)sizeof(Clip)*CLIPS_MAX_PROGRAM_SIZE + 3)>>2) //sizeof(Clip) is 106, mandatory conversion needed
  305. #define SC_CLIPSDIR1_LIST_ADDRESS (SC_CLIPS_LIST_ADDRESS + SC_CLIPS_LIST_SZ)
  306. #define SC_CLIPSDIR1_LIST_SZ (((MAX_SUBDIRS_CNT * (1+MAX_DIRNAME_LEN) * 2) + 3)>>2)//now support 150 items with each have 66 characters(each 2 bytes) for 64M SDRAM
  307. #ifdef MANUAL_DIRECTORY_EXPLORER
  308. #define SC_CLIPSDIR2_LIST_ADDRESS (SC_CLIPSDIR1_LIST_ADDRESS + SC_CLIPSDIR1_LIST_SZ)
  309. //#define SC_CLIPSDIR2_LIST_SZ (((MAX_SUBDIRS_CNT * (1+MAX_DIRNAME_LEN) * 2) + 3)>>2)//same size as DIR1
  310. #endif
  311. #ifdef DISC_CACHE_ENABLE
  312. #define SC_DISC_CACHE_TABLE_ADDR SC_CLIPS_LIST_ADDRESS
  313. #define SC_DISC_CACHE_TABLE_SZ (CACHE_NBR_SLOT*2)
  314. #define SC_DISC_CACHE_ADDR SC_DISC_CACHE_TABLE_ADDR+SC_DISC_CACHE_TABLE_SZ
  315. #define SC_DISC_CACHE_SZ (CACHE_NBR_SLOT * 2048UL / BYTE_PER_CONTAINER)
  316. #endif
  317. #if D_SUPPORT_SACD 
  318. #define SDRAM_2CH_AREA_INFO_BASE          (SC_CLIPSDIR1_LIST_ADDRESS - 0x600ul) //in DWORDS
  319. #define SDRAM_MULTICH_AREA_INFO_BASE    (SC_CLIPSDIR1_LIST_ADDRESS - 0x300ul) //in DWORDS
  320. #endif
  321. //card reader todo: check later.
  322. #ifdef INTERNAL_MEM_CARD_READER //suppose we don't have 5000 clips on a memory card.
  323. #define SC_MS_TL_PHYSICAL_TABLE_ADDR (FE_BUFFER_START>>1) //2*64bytes for MS physical table. //todo check later.
  324. //xD type M
  325. #define SC_MS_TL_TABLE_ADDR (SC_MS_TL_PHYSICAL_TABLE_ADDR + 0x8000ul) //64k * 2 * 2 * 2bytes for MS TL table. //todo check later.
  326. //xD type M
  327. #define SC_FILEX_SDRAM_CACHE_ADDR (SC_MS_TL_TABLE_ADDR + 0x20000ul) //8K bytes
  328. #define SC_FILEX_SDRAM_CACHE_SWITCH_ADDR (SC_FILEX_SDRAM_CACHE_ADDR + 0x2000ul/4) //1/2 k bytes
  329. #endif
  330. #endif // __SCPADALLOC_H_