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

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: Clip.h $             
  6.  *
  7.  * Description: 
  8.  * ============
  9.  * 
  10.  * 
  11.  * Log:
  12.  * ====
  13.  * $Revision: 11 $
  14.  * Last Modified by $Author: Terencet $ at $Modtime: 4/02/04 9:59a $ 
  15.  ****************************************************************************************
  16.  * Updates:
  17.  ****************************************************************************************
  18.  * $Log: /I76/I76_Common/I76_Reference/Playcore/Nav_Clips/Clip.h $
  19.  * 
  20.  * 11    4/02/04 10:02a Terencet
  21.  * add one transition effect for JPEG: vertical blind up
  22.  * 
  23.  * 9     03-03-04 11:34 Jerryc
  24.  * jerry cai, merge new nav clips lib 
  25.  * 
  26.  * 8     03-02-19 17:35 Victorwu
  27.  * 
  28.  * 7     03-02-08 0:34 Leslie
  29.  * Add MANUAL_DIRECTORY_EXPLORER
  30.  * 
  31.  * 6     03-02-06 14:22 Leslie
  32.  * Add clip attribute eSlowable
  33.  * 
  34.  * 5     03-01-30 0:11 Leslie
  35.  * Add uClipNumer in ClipMarker type
  36.  * 
  37.  * 4     03-01-28 18:43 Leslie
  38.  * 
  39.  * 3     03-01-10 12:21 Leslie
  40.  * Add wide-character strings support
  41.  * 
  42.  * 2     03-01-09 12:30 Leslie
  43.  * 
  44.  * 1     10/30/02 18:05 Rond
  45.  * 
  46.  * 1     11/09/02 15:48 Atai
  47.  * 
  48.  * 3     13/08/02 13:47 Nirm
  49.  * - Clip_isFinished() replaced by Clip_getStatus().
  50.  * 
  51.  * 2     2/08/02 19:47 Nirm
  52.  * - Added Caching capability.
  53.  * 
  54.  * 1     30/07/02 18:39 Nirm
  55.  ****************************************************************************************/
  56. #include "Config.h" // Global Configuration - do not remove!
  57. #ifndef __CLIP_H_
  58. #define __CLIP_H_
  59. #include "IncludeSysDefs.h"
  60. #include "PlaycoreFileSysFileSystem.h"
  61. /////////////////////////////////////////////////////////////////////////////
  62. // Clips Repository
  63. /////////////////////////////////////////////////////////////////////////////
  64. /////////////////////////////////////////////////////////////////////////////
  65. // Public Services
  66. BOOL ClipsRepository_construct(UINT16 uMaxClipsCnt);
  67. void ClipsRepository_destruct(void);
  68. void ClipsRepository_empty(void);
  69. UINT16 ClipsRepository_getSize(void);
  70. void ClipsRepository_setTypeFilter(UINT16 uTypeFilter);
  71. UINT16 ClipsRepository_addClip(const FindData *i_pFileInfo);
  72. UINT16 ClipsRepository_getInstanceAt(UINT16 uPos);
  73. /////////////////////////////////////////////////////////////////////////////
  74. // Clip
  75. /////////////////////////////////////////////////////////////////////////////
  76. /////////////////////////////////////////////////////////////////////////////
  77. // Constants and Enumerations
  78. #define LOGICAL_BLOCK_SIZE 2048
  79. #ifndef CLIPS_USE_LONG_FILENAMES
  80. #undef CLIPS_MAX_DIRNAME_LEN
  81. #undef CLIPS_MAX_FILENAME_LEN
  82. #define CLIPS_MAX_DIRNAME_LEN 8
  83. #define CLIPS_MAX_FILENAME_LEN 8
  84. #endif //CLIPS_USE_LONG_FILENAMES
  85. #define INFINITE_PRESENTATION_TIME 0xFF
  86. typedef enum {
  87. eClipType_None = 0x00,
  88. eClipType_MP2  = 0x01, // MPEG-1, Layer-II Audio
  89. eClipType_MP3  = 0x02, // MPEG-1 or MPEG-2, Layer-III Audio
  90. eClipType_WMA  = 0x04, // WindowsMedia(tm) Audio
  91. eClipType_JPEG = 0x08, // JPEG Image
  92. eClipType_MPEG = 0x10, // MPEG-1 or MPEG-2 Audio/Video clips
  93. eClipType_AVI  = 0x20,  // AVI format
  94. eClipType_DIR  = 0x40,   // Directory
  95. #ifdef IS_OGG_VORBIS_CAPABLE
  96. eClipType_OGG  = 0x80,  // OGG format
  97. #endif
  98. #ifdef IS_ASF_CAPABLE
  99. eClipType_ASF  = 0x100, // ASF fileformat // Robin_0818_2004, first merge MPEG4 code
  100. #endif
  101. #ifdef IS_MP4_CAPABLE
  102. eClipType_MP4 = 0x200, // MP4 fileformat // Robin_0818_2004, first merge MPEG4 code
  103. #endif
  104. } enClipType;
  105. typedef enum {
  106. eCA_None = 0x00, // No special Attributes
  107. eCA_Cacheable = 0x01, // Supports Cached playback
  108. eCA_Zoomable = 0x02, // Zoom can be applied
  109. eCA_Markable = 0x04, // Markers can be recorded
  110. eCA_Digestable = 0x08, // May be Digested
  111. eCA_StillImage = 0x10, // Consists of a Still Image
  112. eCA_Scanable = 0x20, // Scan can be applied
  113. eCA_Slowable = 0x40, // Slow operation is avaliable
  114. } enClipAttribute;
  115. typedef enum {
  116. eCS_Idle,
  117. eCS_Busy,
  118. eCS_Finished,
  119. eCS_Error_UnsupportedFormat,
  120. eCS_Error_Decoding
  121. } enClipStatus;
  122. #ifndef D_ENABLE_JPEG_MIRROR_ROTATION
  123. typedef enum { 
  124. eCIO_Original = 0, 
  125. eCIO_Rotate90Deg,
  126. eCIO_Rotate180Deg, 
  127. eCIO_Rotate270Deg,
  128. eCIO_OrientationCnt
  129. } enClipImageOrientation;
  130. #else
  131. typedef enum { 
  132. eCIO_Original = 0, 
  133. eCIO_HorizontalMirror,
  134. eCIO_HVMirror, 
  135. eCIO_VerticalMirror,
  136. eCIO_OrientationCnt
  137. } enClipImageOrientation;
  138. #endif
  139. typedef enum { 
  140. eCTE_None = 0, 
  141. eCTE_TopToBottom, 
  142. eCTE_BottomToTop, 
  143. eCTE_TopBottomToCenter, 
  144. eCTE_CenterToTopBottom, 
  145. eCTE_VerticalBlindDown, 
  146. eCTE_VerticalBlindUp, 
  147. eCTE_Random,
  148. eCTE_TransitionEffectsCnt
  149. } enClipTransitionEffect;
  150. /////////////////////////////////////////////////////////////////////////////
  151. // Macros
  152. #define VIRTUAL
  153. /////////////////////////////////////////////////////////////////////////////
  154. // Forward Declarations of Structures
  155. struct Clip_TAG;
  156. /////////////////////////////////////////////////////////////////////////////
  157. // Common Structures
  158. typedef struct ClipInfo_TAG {
  159. // Clip-Type
  160. enClipType eType;
  161. // Path information
  162. WCHAR szDirectoryName[1+CLIPS_MAX_DIRNAME_LEN];
  163. // File-Name, Location, and Size (Bytes)
  164. WCHAR szFilename[1+CLIPS_MAX_FILENAME_LEN];
  165. DWORD dwFileLocation;
  166. ULONG cbFileSize;
  167. // Robin_0715_2004, merge changelist #24166
  168. #ifdef USE_AUX_SUBTITLES
  169. // <<< Robin_0903_2004
  170. #ifdef DIVX_SUPPORT_MULTI_SUBTITLE
  171. WORD wSubFileIndex;
  172. WORD wSubFileCnt;
  173. #else
  174. DWORD dwSubtitlesFileAddress;
  175. // Robin_1003_2004_E
  176. DWORD dwSubtitlesFileSize;
  177. #endif
  178. // >>> Robin_0903_2004
  179. #endif
  180. } ClipInfo;
  181. typedef struct CurrClipInfo_TAG {
  182. // Clip-Type
  183. enClipType eType;
  184. #if defined(MANUAL_DIRECTORY_EXPLORER)     // JohnD_0606_2005_A: 
  185. // Path information
  186. WCHAR szDirectoryName[1+CLIPS_MAX_DIRNAME_LEN];
  187. // File-Name, Location, and Size (Bytes)
  188. WCHAR szFilename[1+CLIPS_MAX_FILENAME_LEN];
  189. #endif
  190. DWORD dwFileLocation;
  191. ULONG cbFileSize;
  192. // Robin_0715_2004, merge changelist #24166
  193. #ifdef USE_AUX_SUBTITLES
  194. // <<< Robin_0903_2004
  195. #ifdef DIVX_SUPPORT_MULTI_SUBTITLE
  196. WORD wSubFileIndex;
  197. WORD wSubFileCnt;
  198. #else
  199. DWORD dwSubtitlesFileAddress;
  200. // Robin_1003_2004_E
  201. DWORD dwSubtitlesFileSize;
  202. #endif
  203. // >>> Robin_0903_2004
  204. #endif
  205. } CurrClipInfo;
  206. typedef struct ClipMarker_TAG {
  207. DWORD  dwAddress;
  208. UINT16 uTime;
  209. UINT16 uClipNumer;
  210. } ClipMarker;
  211. /////////////////////////////////////////////////////////////////////////////
  212. // Public Services
  213. void Clip_setPresentationTime(enClipType eType, UINT8 uPresentationTime);
  214. void Clip_beforeStop(UINT16 hInstance);
  215. void Clip_performErrorHandling(UINT16 hInstance);
  216. void Clip_continueScanning(void);
  217. void Clip_construct(struct Clip_TAG *o_pClip, const FindData *i_pFileInfo);
  218. enClipType Clip_getType(UINT16 hInstance);
  219. BOOL Clip_hasAttribute(UINT16 hInstance, enClipAttribute eAttr);
  220. void Clip_getFileInfo(UINT16 hInstance, ClipInfo *o_pInfo);
  221. void Clip_getCurrFileInfo(UINT16 hInstance, CurrClipInfo *o_pInfo);
  222. UINT8 Clip_getPresentationTime(UINT16 hInstance);
  223. enClipImageOrientation Clip_getOrientation(UINT16 hInstance);
  224. void Clip_setOrientation(UINT16 hInstance, enClipImageOrientation eOrientation);
  225. enClipTransitionEffect Clip_getTransitionEffect(UINT16 hInstance);
  226. void Clip_setTransitionEffect(UINT16 hInstance, enClipTransitionEffect eTransitionEffect);
  227. VIRTUAL BOOL Clip_getExtendedInfo(UINT16 hInstance, WORD i_pExtInfo_sc_handle);
  228. VIRTUAL BOOL Clip_startPlayback(UINT16 hInstance, const ClipMarker *i_pResumeMarker,
  229. BOOL bCacheOnly);
  230. VIRTUAL void Clip_pausePlayback(UINT16 hInstance, BOOL bEnable);
  231. VIRTUAL enClipStatus Clip_getStatus(UINT16 hInstance);
  232. VIRTUAL void Clip_abortPlayback(UINT16 hInstance, BOOL bMaintainStandby);
  233. VIRTUAL void Clip_recordMarker(UINT16 hInstance, ClipMarker *o_pMarker);
  234. VIRTUAL void Clip_refresh(UINT16 hInstance);
  235. VIRTUAL UINT16 Clip_getTime(UINT16 hInstance);
  236. VIRTUAL void Clip_digest(UINT16 hInstance);
  237. VIRTUAL void Clip_Scan(UINT16 hInstance, int iScanSpeed);
  238. void ClipsRepository_clear();
  239. #ifdef SUPPORT_FLASH_CARD
  240. extern UINT32 Clips_GetPSNOnFlashCard(UINT32 lsn);
  241. #endif
  242. #endif //__CLIP_H_