GlobsDef.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: GlobsDef.h $             
  6.  *
  7.  * Description: 
  8.  * ============
  9.  * 
  10.  * 
  11.  * Log:
  12.  * ====
  13.  * $Revision: 11 $
  14.  * Last Modified by $Author: Terencet $ at $Modtime: 3/11/04 3:30p $ 
  15.  ****************************************************************************************
  16.  * Updates:
  17.  ****************************************************************************************
  18.  * $Log: /I76/I76_Common/I76_Reference/Playcore/Nav_SVCD/GlobsDef.h $
  19.  * 
  20.  * 11    3/11/04 3:31p Terencet
  21.  * add check for VCD version2.0
  22.  * 
  23.  * 10    2/16/04 5:13p Lyncolnc
  24.  * Merged S1 Changes.
  25.  * 
  26.  * 9     03-04-29 22:32 Leslie
  27.  * Add Entry Information parse
  28.  * 
  29.  * 8     03-02-18 10:34 Leslie
  30.  * Support SVCD Total elapsed time
  31.  * 
  32.  * 7     03-01-24 20:32 Leslie
  33.  * Add bIsIntroPlayMode
  34.  * 
  35.  * 12    2/06/02 17:11 Nirm
  36.  * - Moved SVCD_MAX_BOOKMARKS to Config.h
  37.  * 
  38.  * 11    27/05/02 10:46 Ettim
  39.  * Changed the number of available bookmarks to 5.
  40.  * 
  41.  * 10    23/04/02 9:35 Nirm
  42.  * - Added dependency in "Config.h".
  43.  * 
  44.  * 9     31/03/02 8:48 Nirm
  45.  * - Removed unnecessary dependency.
  46.  * 
  47.  * 8     2/27/02 17:31 Ettim
  48.  * Added Digest support.
  49.  * 
  50.  * 7     2/18/02 11:01 Ettim
  51.  * Updated Audio SID setting for the channels C0 & C1
  52.  * 
  53.  * 6     2/06/02 17:17 Ettim
  54.  * Enabling play after slow mode.
  55.  * Fixing the problem of Fast reverse & play - retrying before abandoning
  56.  * the PTS-based measurement
  57.  * Canceling scanning when moving to the previous or the next item.
  58.  * 
  59.  * 5     1/17/02 17:05 Ettim
  60.  * Removed the definition for SC_NULL since it already exists as
  61.  * NULL_HANDLE in scmgr.h
  62.  * 
  63.  * 4     9/01/02 17:10 Nirm
  64.  * Corrected Include-Paths.
  65.  * 
  66.  * 3     8/01/02 16:27 Nirm
  67.  * Corrected Include-Paths.
  68.  * 
  69.  * 2     12/26/01 18:53 Ettim
  70.  * After updating nav_svcd.c & pe_cd.c
  71.  ****************************************************************************************/
  72. #include "Config.h" // Global Configuration - do not remove!
  73. #ifndef SVCD_GLOBS_H_
  74. #define SVCD_GLOBS_H_
  75. #include "Kernelker_api.h"
  76. typedef enum { PlayList = 0, SelectionList, EndList, Undetermined } enPSD_ListType;
  77. typedef enum { eNoError, eIFrameDisplayMiss, ePlaybackHangup } enErrorRecoveryType;
  78. typedef struct SVCD_Marker_TAG 
  79. {
  80. enPSD_ListType ListType;
  81. DWORD dwPSD_Offset;
  82. WORD uListItem;
  83. DWORD dwStartAddress;
  84. } SVCD_Marker;
  85. typedef struct
  86. {
  87. UINT8 ScanFinishGap;
  88. } SVCD_MESSAGE_GAP_STATE;
  89. typedef struct SVCD_Info_TAG 
  90. {
  91. ULONG ulPSD_Size; // The size of the PSD file (if it exists)
  92. BYTE aFirstSegmentAddress[3]; // The MM:SS:FF Address of the first Segment in Track #1
  93. BYTE uOffsetMultiplier; // A multiplication factor for PSD Offsets
  94. WORD uMaxSegmentNumber; // The maximal Segment-number in this Volume
  95. } SVCD_Info;
  96. typedef union SVCD_PSDList_TAG 
  97. {
  98. struct PSD_PlayList
  99. {
  100. WORD uItemsCnt; // The number of Play-Items
  101. WORD uPrevOffset; // Offset to the Previous List
  102. WORD uNextOffset; // Offset to the Next List
  103. WORD uReturnOffset; // Offset to the Return List
  104. WORD uPlayingTime; // The Playback-duration
  105. BYTE wWaitTime; // Waiting times for Play-Items
  106. BYTE wAutoPausePeriod; // Pause Period for Auto-Pause
  107. } PlayList;
  108. struct PSD_SelectionList 
  109. {
  110. WORD uSelectionsCnt; // The number of Selection-Items
  111. WORD uSelectionBase; // The Base-Number of selections in this List
  112. WORD uPrevOffset; // Offset to the Previous List
  113. WORD uNextOffset; // Offset to the Next List
  114. WORD uReturnOffset; // Offset to the Return List
  115. WORD uDefaultOffset; // Offset to the Default List
  116. WORD uTimeoutOffset; // Offset to the List to be used on Time-Out
  117. BYTE wTimeoutWaitTime; // Waiting time for Time-Out
  118. BYTE bPostponeEventsDuringPlay; // Indicates whether to postpone an event arriving during playback
  119. WORD uRepeatCnt; // The remaining number of times to repeat the Play item
  120. WORD uPlayItemNumber; // Identifies the Play-Item to be played
  121. } SelectionList;
  122. } SVCD_PSDList;
  123. typedef struct  SVCD_Navigator_TAG
  124. {
  125. // Navigator Internal-States
  126. BYTE m_uCurrPlaybackMode; // The current Playback-Mode
  127. BOOL m_bIsDisplaying; // Indicates whether or not an image is being displayed
  128. BOOL m_bIsUsingPSD; // Indicates whether or not the PSD file is being used (PBC On/Off)
  129. BOOL m_bIsSegment; //Indicates whether in segment play status
  130. // General Navigation Information
  131. SVCD_Info m_NavigationInfo;
  132. WORD m_uDiscStandard; // The Standard used to encode the Disc (VCD or SVCD)
  133. WORD m_uFirstCDDA_Track; // The serial-number of the first Track which is a CDDA track
  134. DWORD m_dwSecondTrackAddress; // Start address of the second track - for absolute time calculations
  135. ULONG m_ulSecondTrackBlocksPerSecond; // Second track's blocks per second
  136. // Encryption-related Information
  137. BOOL m_bIsEncrypted; // Indicates whether or not the content is encrypted
  138. // Event-related Information
  139. BOOL m_bPendingEvent; // Indicates whether or not there's a pending Event
  140. EVENT m_PendingEvent; // Holds the pending Event, when there is one
  141. WORD m_uPendingEventParam; // Holds the parameter accompanying the pending-Event, when there is one
  142. // Current-Location Information
  143. BOOL m_bLocationChanging; // Indicates whether or not the current Location is being changed
  144. DWORD m_dwTargetLocation; // Holds the Target-Address for Location-Changes
  145. DWORD   dwSlowRCurrentPosition; // Holds the Current Position in case of Slow-Reverse (Unsupported!)
  146. // Scanning-related Information
  147. DWORD m_aCurrSegment[2]; // An array holding the Starting and Ending points of the current segment
  148. DWORD m_aCurrTrack[3]; // An array holding the Starting and Ending points of the current Track
  149. // and VBR of the current track.
  150. VideoSID m_iCurrVideoType; // The Video Type of the current segment
  151. AudioSID m_uCurrAudioSID; // The Audio information of the current segment
  152. BOOL m_bIsMPEG2; // An indication whether there is an MPEG2 directory on the vcd
  153. // Timing Information
  154. DWORD m_dwWaitTime; // The Wait-Time associated with Play-Items
  155. DWORD m_dwTimeout; // The Timeout period associated with Play-Items
  156. DWORD m_dwPausePeriod; // The Pause-Period associated with Auto-Pause
  157. // Time-Measurement Information
  158. struct TimeMeasurementInfo_TAG {
  159. BOOL  bUsePTS; // Indicates whether or not to use PTS's for measurement
  160. int   iTimeOffset; // Holds a fixed offset, from which measurement starts
  161. BOOL  bAcquireStartPTS; // Indictates whether there's need to acquire the first PTS
  162. DWORD dwStartPTS; // Holds the Start PTS of the current Segment
  163. DWORD dwLastPTS; // Holds the last-seen PTS
  164. } m_TimeMeasurementInfo;
  165. // Repeat-Mode and Random-Access Information
  166. SVCD_Marker m_PositionA; // Location-Marker for Position A
  167. SVCD_Marker m_PositionB; // Location-Marker for Position B
  168. SVCD_Marker m_ResumePlayback; // Playback-Resumption Point
  169. SVCD_Marker m_Bookmarks[SVCD_MAX_BOOKMARKS]; // Random-Access Bookmarks
  170. // Error-Handling and Recovery
  171. struct SVCD_ErrorRecoveryInfo_TAG {
  172. enErrorRecoveryType eRecoveryType; // Holds the Error-Recovery Mechanism Type to engage
  173. WORD  uTimeout; // Holds the Timeout (in Ticks) to activation
  174. DWORD dwParam; // Holds a Parameter for the Error-Recovery Mechanism
  175. BYTE ucRetryCounter; //LX051302: Used to calculate next error recover address
  176. } m_ErrorRecoveryInfo;
  177. WORD m_wEntriesUsedCnt; //Number of allocated entries - to be freed in the destructor
  178. //PSD Caching information
  179. WORD m_wPSD_CacheOffset; // The Offset in the Scratch-Pad to the PSD-Cache
  180. DWORD m_dwPSD_CacheBase; // The base of the PSD-Cache (the first DWORD in the PSD-Cache)
  181. #ifdef SVCD_DIGEST_SUPPORT
  182. //Digest related information
  183. BOOL m_bDigestMode; // Indicates whether digest mode is on
  184. UINT32 m_uiDigestUnits; // Holds the units to be displayed on digest mode 
  185. #endif //SVCD_DIGEST_SUPPORT
  186. unsigned long m_ulCOP_Mask;
  187. BYTE ucStillPicturePlaybackFinishedGapCounter;//LX091202
  188. } SVCD_Nav_Info;
  189. typedef struct svcd_globals_TAG {
  190. // Current-Location Information
  191. SVCD_Marker m_CurrPosition; // Describes the current position of the Navigator
  192. SVCD_PSDList m_CurrList; // Holds information about the current List being used
  193. // Scanning-related Information
  194. int m_iScanSpeed; // The current Scanning-speed (direction is determined by polarity)
  195. int m_iSlowSpeed; // Holds the Current Slow-Motion Speed
  196. // Public-access information
  197. WORD  uCurrentTrackNumber; // Holds the Current Track Number
  198. BYTE  ucCurrentTrackInfo; // Holds the Control-field for the Current Track
  199. BOOL  bIsElapsedTimeValid; // Indicates whether or not the Elapsed-Time information is valid
  200. int   iCurrentTime; // Holds the Elapsed-Time since the beginning of the current Segment
  201. WORD  wTotalPlaybackTime; // Holds the Total Playback Time (in Seconds)
  202. WORD  wRemainingPlaybackTime; // Holds the remaining playback time
  203. WORD wTotalElpasedTime; // Holds the total elapsed time since the begining of first MPEG A/V track
  204. BOOL  bPBC_Available; // Indicates whether or not PBC information is available
  205. BOOL  bDrivePaused;
  206. //Audio related information
  207. BYTE uTotalNumberOfAudioChannels; // Total number of currently available audio channels
  208. BYTE uCurrentAudioSIDChannel; // The current played audio sid channel
  209. WORD wCurrentEntryNumber;
  210. BOOL bEntryInfoAvaiable;
  211. BOOL bIsIntroPlayMode;      
  212. BOOL bIsVCD20; //is VCD version 2.0
  213. #ifdef D_ENABLE_SVCD_SAMPLE_RATE_DETECTION
  214. DWORD ulSVDSamplingRate;
  215. #endif
  216. // Internal variables
  217. SVCD_MESSAGE_GAP_STATE SVCDMessageGap;
  218. UINT32 g_hEntriesTable;
  219. UINT32 g_hSegmentsContentTable;
  220. UINT32 g_hTracksTable;
  221. SVCD_Nav_Info *g_pSVCDNav;
  222. // <<< SEC BK.LIM062303 // ZKR GLV778
  223. #ifdef S1_GUI
  224. DWORD dwCurrentLocation;
  225. #endif
  226. // >>>
  227. } S_SVCD_GLOBALS;
  228. #endif //SVCD_GLOBS_H_