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

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: nav_clips.h $             
  6.  *
  7.  * Description: 
  8.  * ============
  9.  * 
  10.  * 
  11.  * Log:
  12.  * ====
  13.  * $Revision: 26 $
  14.  * Last Modified by $Author: Lotan $ at $Modtime: 2/10/04 11:41p $ 
  15.  ****************************************************************************************
  16.  * Updates:
  17.  ****************************************************************************************
  18.  * $Log: /I76/I76_Common/I76_Reference/Playcore/Nav_Clips/nav_clips.h $
  19.  * 
  20.  * 26    2/10/04 11:41p Lotan
  21.  * 
  22.  * 25    1/13/04 12:11 Hamadk
  23.  * Merged with CES DB
  24.  * 
  25.  * 24    11/10/03 11:33a Leonh
  26.  * Get Sampling rate for WMA
  27.  * 
  28.  * 23    03-07-29 14:49 Leonh
  29.  * solve the storage conflict between ID3 TAG info and Mpeginfo
  30.  * 
  31.  * 22    03-05-28 22:40 Leonh
  32.  * support mepg 1 layer 2
  33.  * 
  34.  * 21    03-05-26 18:51 Leonh
  35.  * 
  36.  * 20    03-05-26 18:40 Leonh
  37.  * 
  38.  * 19    03-04-02 11:29 Janeg
  39.  * Include error code file.
  40.  * 
  41.  * 18    03-03-10 16:16 Jerryc
  42.  * clean up.
  43.  * 
  44.  * 17    03-03-10 13:53 Jerryc
  45.  * clean up the browser object implementation.
  46.  * 
  47.  * 16    03-03-05 17:40 Jerryc
  48.  * jerryc, fix some play modes.
  49.  * 
  50.  * 15    03-03-04 15:01 Jerryc
  51.  * jerryc, clean up  
  52.  * 
  53.  * 14    03-03-04 11:57 Jerryc
  54.  * jerryc, add enum type enWINDOWTYPE.
  55.  * 
  56.  * 13    03-03-04 11:50 Jerryc
  57.  * jerryc, add function Clips_SetBrowserStyle.
  58.  * 
  59.  * 12    03-03-04 11:34 Jerryc
  60.  * jerry cai, merge new nav clips lib 
  61.  * 
  62.  * 11    03-02-08 0:36 Leslie
  63.  * Add MANUAL_DIRECTORY_EXPLORER
  64.  * 
  65.  * 10    03-01-10 12:21 Leslie
  66.  * Add wide-character strings support
  67.  * 
  68.  * 9     10/30/02 17:49 Rond
  69.  * 
  70.  * 3     11/09/02 17:33 Atai
  71.  * Vaddis 5e production update
  72.  * 
  73.  * 24    21/08/02 17:25 Nirm
  74.  * - Added WMA Content-Description.
  75.  * 
  76.  * 23    19/08/02 22:27 Nirm
  77.  * - Added Playback-Filter.
  78.  * 
  79.  * 22    13/08/02 13:46 Nirm
  80.  * - Added Clip-Status information.
  81.  * 
  82.  * 21    30/07/02 20:35 Nirm
  83.  * - Integrated Multi-Standard support for Clips.
  84.  * 
  85.  * 20    15/05/02 15:46 Ettim
  86.  * Added UI support including OSD for Angle and Transition in JPEG.
  87.  * 
  88.  * 19    29/04/02 12:25 Nirm
  89.  * - Fixes for JPEG Digest.
  90.  * 
  91.  * 18    23/04/02 22:44 Nirm
  92.  * - Moved some configurations to Config.h.
  93.  * 
  94.  * 17    23/04/02 9:32 Nirm
  95.  * - Added dependency in "Config.h".
  96.  * 
  97.  * 16    3/27/02 13:18 Ettim
  98.  * Replaced D_PICTURE_CD_ENABLED with CLIPS_JPEG_SUPPORT
  99.  * 
  100.  * 15    27/03/02 9:20 Nirm
  101.  * - Moved some privately-used definitions into Nav_Clips.c.
  102.  * 
  103.  * 
  104.  * 14    3/26/02 19:14 Ettim
  105.  * Added new clips navigation support.
  106.  * 
  107.  * 12    4/03/02 14:18 Nirm
  108.  * Compilation switches changed/updated.
  109.  * 
  110.  * 11    4/03/02 14:08 Nirm
  111.  * Compilation switches changed/updated.
  112.  * 
  113.  * 10    2/28/02 2:50a Dingming
  114.  * code porting for picture cd
  115.  * 
  116.  * 9     2/21/02 5:23p Tomasp
  117.  * Limited number of clips for 16MBit SDRAM version.
  118.  * Limited directory name length 16MBit SDRAM version.
  119.  * 
  120.  * 8     21/02/02 16:53 Nirm
  121.  * - Fixed string-lenghts problem.
  122.  * 
  123.  * 7     20/02/02 17:37 Nirm
  124.  * - Added Implementation-Specific Data;
  125.  * - Code cleanup.
  126.  * 
  127.  * 6     19/02/02 9:40 Nirm
  128.  * Prolonged the Filename.
  129.  * 
  130.  * 5     18/02/02 20:33 Nirm
  131.  * Integrated MP3-ID3 extraction.
  132.  * 
  133.  * 4     18/02/02 11:33 Nirm
  134.  * Feature configuration.
  135.  * 
  136.  * 3     18/02/02 11:26 Nirm
  137.  * Added MP3-ID3v1 support.
  138.  * 
  139.  * 2     14/02/02 18:13 Nirm
  140.  * Integration of the Clips Navigator.
  141.  * 
  142.  * 1     7/02/02 7:49 Nirm
  143.  ****************************************************************************************/
  144. #include "Config.h" // Global Configuration - do not remove!
  145. #ifndef __NAV_CLIPS_H_
  146. #define __NAV_CLIPS_H_
  147. #include "IncludeSysDefs.h"
  148. #include "PlaycoreCoremainCoremain.h"
  149. #include "PlaycoreFileSysFileSystem.h"
  150. #include "PlaycoreNav_ClipsClip.h"
  151. #include "PlaycoreNav_ClipsMP3.h"
  152. #include "PlaycoreNav_ClipsWMA.h"
  153. #include "playcorecoremaincore_err.h"
  154. #ifdef CLIPS_JPEG_SUPPORT
  155. #include "PlaycoreNav_ClipsJPEG.h"
  156. #endif
  157. #ifdef IS_OGG_VORBIS_CAPABLE
  158. #include "PlaycoreNav_ClipsOGG.h"
  159. #endif
  160. /////////////////////////////////////////////////////////////////////////////
  161. // Constants and Enumerations
  162. typedef enum {
  163. eCLS_Uninitialized,
  164. eCLS_Building,
  165. eCLS_Finalized
  166. } enClipsListStatus;
  167. typedef enum {
  168. eWINDOWS_EXPLORER_STYLE,
  169. eSingle_LIST_STYLE
  170. } enClipsBrowserStyle;
  171. typedef enum
  172. {
  173. eCLIPS_UPDATE_NONE,
  174. eCLIPS_UPDATE_INDEX,
  175. eCLIPS_UPDATE_ALL
  176. }enCLIPS_UPDATE_TYPE;
  177. typedef enum
  178. {
  179.  eSingle_WINDOW = 0, //eSingle_WINDOW must be 0 to maitain backward compatibility.
  180.  eLEFT_WINDOW,
  181.  eRIGHT_WINDOW
  182. }enWINDOWTYPE;
  183. typedef enum 
  184. {
  185. eSingleItem,
  186. eSingleFolder,
  187. eWholeDisc
  188. } enClipsExplorerStyleBrowserPlayMode;
  189. /////////////////////////////////////////////////////////////////////////////
  190. // Common Structures
  191. typedef struct ClipInfoEx_TAG {
  192. // Standard Information
  193. // ClipInfo ciInfo;
  194. CurrClipInfo ciInfo;
  195. UINT8 eClipStatus;
  196. // Extended Information
  197. UINT8 bIsExtendedInfoAvailable;
  198. #ifdef CLIPS_ACQUIRE_EXTENDED_INFO
  199. /*
  200. UINT16 uPlaybackTime;
  201. UINT16 uAudioSamplingRateInHz;
  202. */
  203. //Angie_0810_2004:Move the MP3 and WMA extend info from gns to SCPAD for I86 memory reducing.
  204. WORD ExtInfo_sc_handle;
  205. MPEGInfo mpeginfo;
  206. #endif //CLIPS_ACQUIRE_EXTENDED_INFO
  207. } ClipInfoEx;
  208. /////////////////////////////////////////////////////////////////////////////
  209. // Defines
  210. #define SPUHdrSize 4
  211. #define DCSQ0Size 24
  212. #define DCSQTSize 30
  213. #define FourCCSize 4
  214. #define CkSizeSize 4
  215. #define DurationSize 27
  216. #define STDHeaderSize 26
  217. #define SPU_HEADER_LENGTH 4
  218. #define SPU_COMMAND_LENGTH 15
  219. #define MAX_SUBDIRS_CNT 150
  220. #ifdef CLIPS_USE_LONG_FILENAMES
  221. #define MAX_DIRNAME_LEN 65
  222. #else
  223. #define MAX_DIRNAME_LEN 8
  224. #endif //CLIPS_USE_LONG_FILENAMES
  225. //Angie_0810_2004:Move the MP3 and WMA extend info from gns to SCPAD for I86 memory reducing.
  226. #ifdef CLIPS_ACQUIRE_EXTENDED_INFO
  227. #define SC_CLIPS_EXTINFO_ADDR SC_CLIPS_NAV_ADDR//66DWORDs
  228. #endif
  229. #define SC_AVI_DRM_KEYS_ADDR               SC_CLIPS_NAV_ADDR
  230. //#define SC_AVI_DRM_KEYS_SIZE      2048
  231. #define SC_AVI_DRM_KEYS_SIZE ((2224+3)/4)
  232. //#ifndef USE_AUX_SUBTITLES
  233. //#define SC_AVI_INDEX_TABLE_ADDR SC_AVI_DRM_KEYS_ADDR + SC_AVI_DRM_KEYS_SIZE
  234. //#else
  235. #define SC_AUX_SUBTITLES_STRINGS_ADDR SC_AVI_DRM_KEYS_ADDR + SC_AVI_DRM_KEYS_SIZE
  236. #define SC_AUX_SUBTITLES_STRINGS_SZ 114
  237. //#define SC_AVI_INDEX_TABLE_ADDR SC_AUX_SUBTITLES_STRINGS_ADDR + SC_AUX_SUBTITLES_STRINGS_SZ
  238. //#endif
  239. // <<< Robin_0903_2004
  240. #ifdef DIVX_SUPPORT_MULTI_SUBTITLE
  241. #define SC_AVI_EXTEND_SUBTITLE_TOTAL_NUM 1000
  242. #define SC_AVI_EXTEND_SUBTITLE_ADDR (SC_AUX_SUBTITLES_STRINGS_ADDR + SC_AUX_SUBTITLES_STRINGS_SZ)
  243. #define SC_AVI_EXTEND_SUBTITLE_SZ ( (SC_AVI_EXTEND_SUBTITLE_TOTAL_NUM * sizeof(Extend_Subtitle_Info_St))>>2 )
  244. #endif
  245. // >>> Robin_0903_2004
  246. #define SC_MPEG4_AUDIO_STREAM_INFO_SZIE_IN_DOWRD (((MAX_AUDS_PER_CLIP * SIZE_OF_AUDIO_STREAM_INFO) + 3) >> 2)
  247. #ifdef DIVX_SUPPORT_MULTI_SUBTITLE
  248. #define SC_MPEG4_AUDIO_STREAM_INFO_ADDR (SC_AVI_EXTEND_SUBTITLE_ADDR + SC_AVI_EXTEND_SUBTITLE_SZ)
  249. #else
  250. #define SC_MPEG4_AUDIO_STREAM_INFO_ADDR (SC_AUX_SUBTITLES_STRINGS_ADDR + SC_AUX_SUBTITLES_STRINGS_SZ)
  251. #endif
  252. #define SC_MPEG4_SUBTITLE_STREAM_INFO_SIZE_IN_DWORD (((MAX_SUB_PER_CLIP * SIZE_OF_SUBTITLE_STREAM_INFO) + 3) >> 2)
  253. #define SC_MPEG4_SUBTITLE_STREAM_INFO_ADDR (SC_MPEG4_AUDIO_STREAM_INFO_ADDR + SC_MPEG4_AUDIO_STREAM_INFO_SZIE_IN_DOWRD)
  254. #define SC_MPEG4_VIDEO_HEADER_DATA_SIZE_IN_DWORD ((MPEG4_VIDEO_HEADER_BUFFER_SIZE + 3) >> 2)
  255. #define SC_MPEG4_VIDEO_HEADER_DATA_ADDR (SC_MPEG4_SUBTITLE_STREAM_INFO_ADDR + SC_MPEG4_SUBTITLE_STREAM_INFO_SIZE_IN_DWORD)
  256. #ifdef IS_MP4_CAPABLE
  257. #define SC_MPEG4_VIDEO_SAMPLE_TABLE_ADDREX_BUFF_SIZE (SIZE_OF_MP4StreamSampleTableAddrEX_IN_DWORD)
  258. #define SC_MPEG4_VIDEO_SAMPLE_TABLE_ADDREX_BUFF_ADDR (SC_MPEG4_VIDEO_HEADER_DATA_ADDR + SC_MPEG4_VIDEO_HEADER_DATA_SIZE_IN_DWORD)
  259. #define SC_MPEG4_AUDIO_SAMPLE_TABLE_ADDREX_BUFF_SIZE  (MAX_AUDS_PER_CLIP * SIZE_OF_MP4StreamSampleTableAddrEX_IN_DWORD)
  260. #define SC_MPEG4_AUDIO_SAMPLE_TABLE_ADDREX_BUFF_ADDR (SC_MPEG4_VIDEO_SAMPLE_TABLE_ADDREX_BUFF_ADDR + SC_MPEG4_VIDEO_SAMPLE_TABLE_ADDREX_BUFF_SIZE)
  261. #define SC_MPEG4_SUBTITLE_SAMPLE_TABLE_ADDREX_BUFF_SIZE (MAX_SUB_PER_CLIP * SIZE_OF_MP4StreamSampleTableAddrEX_IN_DWORD)
  262. #define SC_MPEG4_SUBTITLE_SAMPLE_TABLE_ADDREX_BUFF_ADDR (SC_MPEG4_AUDIO_SAMPLE_TABLE_ADDREX_BUFF_ADDR + SC_MPEG4_AUDIO_SAMPLE_TABLE_ADDREX_BUFF_SIZE)
  263. // Robin_0106_2005, reserve some unused smaple tables
  264. #define SC_MPEG4_RESERVED_SAMPLE_TABLE_ADDREX_BUFF_SIZE (MAX_RESERVED_PER_CLIP * SIZE_OF_MP4StreamSampleTableAddrEX_IN_DWORD)
  265. #define SC_MPEG4_RESERVED_SAMPLE_TABLE_ADDREX_BUFF_ADDR (SC_MPEG4_SUBTITLE_SAMPLE_TABLE_ADDREX_BUFF_ADDR + SC_MPEG4_SUBTITLE_SAMPLE_TABLE_ADDREX_BUFF_SIZE)
  266. #endif
  267. /////////////////////////////////////////////////////////////////////////////
  268. // Public Services
  269. // <<< SEC BK.LIM101303 : Search first file if  Root dose not have  any file list to play.
  270. #ifdef EXINO2
  271. #ifdef MP3_SUBFOLDER_AUTOPLAY
  272. void Clips_set_Autoplay(BOOL bAutoplay);
  273. #endif
  274. #endif
  275. // SEC BK.LIM101303>>>
  276. enClipsListStatus Clips_getClipsListStatus(void);
  277. void Clips_findClips(UINT16 uTypesToFind);
  278. BOOL Clips_addClip(LPCWSTR i_pszFilename);
  279. BOOL Clips_addClipEx(const FindData *i_pFileInfo);
  280. void Clips_removeAllClips(void);
  281. void Clips_finalizeClipsList(void);
  282. BOOL Clips_getClipFileInfoAt(UINT16 uClipNumber, ClipInfo *o_pClipInfo);
  283. void Clips_setPresentationTime(enClipType eType, UINT8 uPresentationTime);
  284. UINT16 Clips_getAvailableTypes(void);
  285. UINT16 Clips_getPlaybackFilter(void);
  286. void Clips_setPlaybackFilter(UINT16 uTypesToPlay);
  287. void Clips_SetExplorerStyleBrowserPlayMode(enClipsExplorerStyleBrowserPlayMode ePlayMode);
  288. void Clips_SetExplorerStyleBrowserDiscScanMode(BOOL bDiscScanMode);
  289. void Browser_GetPeerFolderInfo(UINT16 uDirNum,ClipInfo *o_pInfo);
  290. void ClipsSysStateReset( void );
  291. void ClipsSysStateReset( void );
  292. void CyclicWriteDRAMData(const INT32 uiBufferStart,const INT32 uiBufferEnd, 
  293.                          UINT32 uiAddress, UINT16* puiTarget, UINT32 uiLength );
  294. /////////////////////////////////////////////////////////////////////////////
  295. // Navigation Interface
  296. int Clips_Navigator(HDLR_OP op, EVENT evt, void *param);
  297. #endif //__NAV_CLIPS_H_