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

DVD

开发平台:

Others

  1. /***********************************************************************/
  2. /* File:                                                               */
  3. /* =====                                                               */
  4. /* Descripton:                                                         */
  5. /* ===========                                                         */
  6. /*                                                                     */
  7. /* Log:                                                                */
  8. /* =====                                                                 */
  9. /*
  10.  $Name: $                                                             
  11.  $Header: /I76/I76_Common/I76_Reference/Playcore/Nav_DVD/Header/NVGADEFS.H 10    04-03-31 20:26 Angieh $                                                           
  12.  $Log: /I76/I76_Common/I76_Reference/Playcore/Nav_DVD/Header/NVGADEFS.H $                                                              
  13.  * 
  14.  * 10    04-03-31 20:26 Angieh
  15.  * Add support for index and page search.
  16.  * 
  17.  * 9     2/20/04 6:17p Glenl
  18.  * Merged S1 code
  19.  * 
  20.  * 8     12/30/03 11:28a Leonh
  21.  * Angieh:Change for DVD AUDIO navigator header.
  22.  * 
  23.  * 16    11/06/03 8:34a Leslie
  24.  * clean up the code
  25.  * 
  26.  * 15    10/20/03 11:46a Leslie
  27.  * check the variable type and change the dvda rtpb schedule way as the
  28.  * same with DVD Video
  29.  * 
  30.  * 14    8/20/03 2:56p Leonh
  31.  * Merge dvd audio code with the latest nav_dvd code with reference
  32.  * 
  33.  * 9     03-05-13 16:46 Leonh
  34.  * merge pgc_construct()
  35.  * 
  36.  * 8     03-05-08 18:18 Leonh
  37.  * 
  38.  * 7     03-05-08 13:46 Leonh
  39.  * 
  40.  * 6     03-04-30 15:35 Fwang
  41.  * audio pgc define
  42.  * 
  43.  * 5     03-04-30 10:41 Fwang
  44.  * compilation error
  45.  * 
  46.  * 4     03-04-28 17:52 Fwang
  47.  * nav command define for DVDA
  48.  * 
  49.  * 3     03-04-28 17:47 Fwang
  50.  * pgc type define
  51.  * 
  52.  * 2     03-04-28 17:40 Fwang
  53.  * Add DVDA definition.
  54.  * 
  55.  * 1     03-04-28 11:15 Fwang
  56.  * Initial for DVDA
  57.  * 
  58.  * 7     03-07-30 18:09 Leonh
  59.  * differentiate the cell presentation access restriction and parent level
  60.  * wrong
  61.  * 
  62.  * 9     27/05/02 18:13 Nirm
  63.  * - Fixed typo in pre-compilation definition.
  64.  * 
  65.  * 8     5/21/02 12:38p Leslie
  66.  * Support 5 DVD Bookmarks
  67.  * 
  68.  * 7     9/05/02 21:47 Nirm
  69.  * - Added pre-caching of CGMS information, in order to minimize
  70.  * File-System accesses when possible.
  71.  * 
  72.  * 6     9/05/02 16:14 Nirm
  73.  * - Alternative implementation to CGMS support.
  74.  * 
  75.  * 5     5/01/02 14:35 Rinata
  76.  * get category code and copy bit
  77.  * 
  78.  * 4     4/30/02 17:11 Rinata
  79.  * CGMS/WSS support
  80.  * 
  81.  * 3     4/26/02 12:46p Leslie
  82.  * Comment out useless Macros.
  83.  * Replace npi_flags with npi_resume_lbn in
  84.  * S_NAV_PK_INFO_FIFO
  85.  * 
  86.  * 2     23/04/02 9:34 Nirm
  87.  * - Added dependency in "Config.h".
  88.  * 
  89.  * 1     2/17/02 12:12 Rinata
  90.  * 
  91.  * 1     2/17/02 11:38 Rinata
  92.  * 
  93.  * 2     8/01/02 16:24 Nirm
  94.  * Corrected Include-Paths.
  95.  Revision 1.22  2001/09/28 23:11:02Z  stephaneh                                                              
  96.  Merged changes from ZCH for DVD navigator                                                              
  97.  Revision 1.21  2001/05/17 17:50:34Z  bhupeshv                                                              
  98.  Added Tias' SRAM DATA savings.                                                              
  99.  Revision 1.21  2001/05/15 10:55:23  tia                                                              
  100.  Remove sprm.initial. Saves 48 bytes from SRAM.                                                              
  101.  Revision 1.20  2001/03/29 04:48:15  tia                                                              
  102.  Add DVD Chapter remain time information.                                                              
  103.  Revision 1.19  2001/01/20 05:15:52  tia                                                              
  104.  Fix for Bonus Disc Toy Story.                                                              
  105.  Revision 1.18  2000/11/09 18:24:07  tia                                                              
  106.  Revision 1.17  2000/07/27 22:11:30  tia                                                              
  107.  Revision 1.16  2000/07/14 05:55:55  tia                                                              
  108.  Revision 1.15  2000/07/13 00:01:38  tia                                                              
  109.  Revision 1.14  2000/06/14 02:46:25  tia                                                              
  110.  Revision 1.13  2000/06/06 20:59:46  tia                                                              
  111.  Revision 1.12  2000/06/02 02:45:33  tia                                                              
  112.  Revision 1.11  2000/05/24 23:32:22  tia                                                              
  113.  Revision 1.10  2000/05/19 03:48:26  tia                                                              
  114.  Revision 1.9  2000/05/17 02:41:38  tia                                                              
  115.  Revision 1.8  2000/05/16 03:12:20  tia                                                              
  116.  Revision 1.7  2000/05/13 02:20:58  tia                                                              
  117.  Revision 1.6  2000/05/11 22:36:04  tia                                                              
  118.  Revision 1.5  2000/05/02 23:31:30  tia                                                              
  119.  Revision 1.4  2000/05/02 02:57:50  tia                                                              
  120.  Revision 1.3  2000/04/27 02:47:18  tia                                                              
  121.  Revision 1.2  2000/04/20 20:17:52  tia                                                              
  122.  Revision 1.1  2000/04/18 18:51:12  tia                                                              
  123.  Initial revision                                                              
  124.  Revision 1.1  2000/04/14 02:02:12  tia                                                              
  125.  Initial revision                                                              
  126.  */
  127. /***********************************************************************/
  128. #include "Config.h" // Global Configuration - do not remove!
  129. #ifndef _NVGADEFS_H
  130. #define _NVGADEFS_H
  131. #include "PlaycoreNav_DVDHeaderhli_defs.h"
  132. #include "PlaycoreNav_DVDHeaderccmpeg.h"
  133. #include "PlaycoreNav_DVDHeaderstream.h"
  134. #include "PlaycoreNav_DVDHeaderdvddef.h"
  135. /*  CRealTimePlayback and PCI opBuffer sizes, influence STATIC variable size requirements */
  136. enum { 
  137. MAX_NP_INFO = 8, /* NAV PACK INFO FIFO depth, lag between DSI processing and PCI processing */
  138. MAX_SCHEDULED_OPS = 4,
  139. MAX_PCI_BUFFER    = 2    /*  2 for ping-pong buffer */
  140. };
  141. //
  142. // Capability defines
  143. //
  144. typedef enum {AUDIO_ALGORITHM,
  145.               VIDEO_ALGORITHM,
  146.               AUDIO_MODE,
  147.               VIDEO_MODE
  148. }PRESENTATION_CAP;
  149. // *************************************
  150. //
  151. // Video algorithm values (can be ORed together in return codes)
  152. //
  153. #define VIDEO_ALGORITHM_MPEG1 0x1
  154. #define VIDEO_ALGORITHM_MPEG2 0x3
  155. // *************************************
  156. //
  157. // Audio algorithm values (can be ORed together in return codes)
  158. //
  159.     #define AUDIO_ALGORITHM_MPEG1 0x1
  160.     #define AUDIO_ALGORITHM_MPEG2 0x3
  161.     #define AUDIO_ALGORITHM_AC3   0x4
  162.     #define AUDIO_ALGORITHM_PCM   0x8
  163.     #define AUDIO_ALGORITHM_AC_3    0x4000
  164.     #define AUDIO_ALGORITHM_MPEG    0x1000
  165.     #define AUDIO_ALGORITHM_DTS     0x0800
  166.     #define AUDIO_ALGORITHM_SDDS    0x0400
  167.     #define AUDIO_ALGORITHM_LPCM_K  0x0080
  168.     #define AUDIO_ALGORITHM_AC3_K   0x0040
  169.     #define AUDIO_ALGORITHM_MPEG_K  0x0010
  170.     #define AUDIO_ALGORITHM_DTS_K   0x0008
  171.     #define AUDIO_ALGORITHM_SDDS_K  0x0004
  172. //#endif
  173. // *************************************
  174. //
  175. // Video mode values (can be ORed togethe in return codes)
  176. //
  177. // Video_SetMode syntax:     mode   details         extra     return
  178. //--------------------------------------------------------------------
  179. #define VIDEO_MODE_WIDE       0x1 /*   -              -        success */
  180. #define VIDEO_MODE_LETTER_BOX 0x2 /*   -              -        success */
  181. #define VIDEO_MODE_PAN_SCAN   0x4 /*   -              -        success */
  182. // *************************************
  183. //
  184. // Audio mode values (can be ORed togethe in return codes)
  185. //
  186. // Audio_SetMode syntax:     mode   details         extra     return
  187. //--------------------------------------------------------------------
  188. #define AUDIO_MODE_VOLUME     0x1
  189. #define                             SET_ABS 0
  190. #define                             SET_REL 1
  191. //                                                  value    new volume (0 - 1000)
  192. #define AUDIO_MODE_BALANCE    0x2
  193. //                                  SET_ABS
  194. //                                  SET_REL
  195. //                                                  value    new balance (-1000 - 1000)
  196. // NOTE: Volume and Balance units are measured in thousands.
  197. //       Relative settings are added to the current values.
  198. //       The new absolute values are returned.
  199. //       Negative balance represents right to left ratio (right lower than left)
  200. //       Positive balance represents left to right ratio (left lower than right)
  201. #define AUDIO_MODE_SURROUND   0x4 /*   TBD            TBD      success */
  202. #define AUDIO_MODE_KARAOKE    0x8 /*  SPRM(11)        -        success */
  203. // *************************************
  204. // *************************************
  205. //
  206. // Presentation events
  207. //
  208. // playback window identity change
  209. #define PRESENTATION_EVENT_WINDOW_ID   1
  210.  
  211. // ****************************************************************************
  212. //                             Events
  213. // ****************************************************************************
  214. //
  215. //             event                        value      result     return           comment
  216. //
  217. //
  218. #define DVD_EVENT_ANGLE_CHANGE        256 //  -           -        SUCCESS/FAILURE  synchronizes angle change in PGC
  219. #define DVD_EVENT_EMPTY_STREAM_PUMP   257 //  -           -        SUCCESS/FAILURE  retrieves the VOBU to play
  220. #define DVD_EVENT_PTM                 258 //  -           -        SUCCESS/FAILURE  retrieves the VOBU to play
  221. #define DVD_EVENT_TIME                259 //  ID          -        SUCCESS/FAILURE  retrieves the VOBU to play
  222. #define DVD_EVENT_CLOCK               260 //  ID          -        SUCCESS/FAILURE  retrieves the VOBU to play
  223. #define DVD_EVENT_STOP_STATUS         261 //  -           -        -
  224. #define THREAD_SWITCH_EVENT           1000
  225. // =============================================
  226. // SPRM -- symbolic definitions
  227. enum
  228. {
  229.   M_LCD = 0,       ASTN,            SPSTN,          AGLN,
  230.   TTN,             VTS_TTN,         TT_PGCN,        PTTN_SEQ,
  231.   HL_BTTN,         NV_TMR,          TT_PGCN_NV_TMR, P_A_MXMD,
  232.   CTY_CD_PTL_MA,   PTL_LVL,         P_CFG_VIDEO,    P_CFG_AUDIO,
  233.   INI_LCD_AST,     INI_LCD_EXT_AST, INI_LCD_SPST,   INI_LCD_EXT_SPST,
  234.   PLAYER_REG_CODE, RESERVED_1,      RESERVED_2,     EXTENDED_PLAY,
  235.   // Add some additional SPRM's for DVD Audio
  236.   PG_NUM = 7,
  237.   ATT_GRN = 21,
  238.   ATTN = 22,   // Att number
  239.   TKN = 23,
  240.   ASVN = 24
  241. };
  242. #define NO_AUDIO_STREAM    0xF
  243. #define NO_SP_STREAM       62
  244. #define DUMMY_SP_STREAM    63
  245. #define SP_FORCED_CAPTION 0x09      //FW0906 According to DVD Spec. VI3-57 
  246. #define CODE_NOT_SPECIFIED (-1)
  247. #define EXT_NOT_SPECIFIED  0
  248. #define PTL_NOT_SPECIFIED  0xF
  249. // Karaoke mode not supported
  250. #define P_CFG_AUDIO_DTS    0x0800
  251. #define P_CFG_AUDIO_AC_3   0x4000
  252. #define P_CFG_AUDIO_MPEG   0x1000 
  253.  
  254. // there's no bit assigned for PCM capability -- see SPRM( 15 ),
  255. //   use bit15 as LPCM capability bit
  256. #define P_CFG_AUDIO_LPCM   0x8000
  257. enum {
  258.   VOBU_STILL = 1,
  259.   CELL_STILL = 2,
  260.   PGC_STILL  = 3,
  261.   SYNC_STILL = 4,
  262.   STOP_STILL = 5
  263. };
  264. //
  265. // System Menu IDs 
  266. //
  267. enum { MENU__TITLE      = 2,
  268.        MENU__ROOT       = 3,
  269.        MENU__SUBPICTURE = 4,
  270.        MENU__AUDIO      = 5,
  271.        MENU__ANGLE      = 6,
  272.        MENU__PTT        = 7
  273. };
  274. // Domain ID -- see JumpSS/CallSS
  275. typedef enum  { FP_DOM    = 0, 
  276.  VMGM_DOM  = 1,
  277.  VTSM_DOM  = 2,
  278.  VMGM_PGCN = 3,
  279.  // Values not needed fpr JumpSS/CallSS
  280.  TT_DOM    = 4, 
  281.  STOP      = 5,
  282.  // Domain IDs for DVD-AUDIO
  283.  AMGM_DOM = 1,    // same value as VMGM_DOM
  284.  AVTT_GR_DOM = 4, // same value as TT_DOM
  285.  AOTT_GR_DOM = 6
  286. }DOMAIN_ID;
  287. // CGMS Information collected for each VOB file, from the File-System
  288. #define MAX_VTS_CNT_PER_CACHE 1
  289. #define MAX_FILES_PER_VTS 10 // Up to 9 files, plus one optional (VTS_XX_0.VOB)
  290. #define MAX_CGMS_ENTRIES (1 + (MAX_FILES_PER_VTS * MAX_VTS_CNT_PER_CACHE))
  291. #define CGMS_ENTRIES_ON_FLY (1+3)//For reducing the caching time when chagne the VTS
  292. typedef struct {
  293. DWORD dwVOBStartLBN;
  294. DWORD dwVOBEndLBN;
  295. BYTE  ucCGMS;
  296. } S_VOB_CGMS_INFO;
  297. // PCI General Information
  298. typedef struct
  299. {
  300. DWORD NV_PCK_LBN;   // logical block number of navigation pack
  301. DWORD VOBU_UOP_CTL; // user operation control of VOBU
  302. DWORD VOBU_S_PTM;   // start Presentation TiMe of the video data in VOBU
  303. DWORD VOBU_E_PTM;   // end PTM of VOBU
  304. DWORD VOBU_SE_E_PTM; // end PTM of sequence end in VOBU
  305. DWORD C_ELTM;     // cell elapse time
  306.   WORD  VOBU_CAT;        // analogue protection sytem (APS)
  307.   BYTE  TC_FLAG;         // tc_flag
  308. } S_PCI_GI;
  309. // structure filled by C_PCI_PKT.Get_HL_GI()
  310. typedef struct
  311. {
  312. long HLI_S_PTM; // start PTM of HLI
  313. long HLI_E_PTM; // end PTM of HLI
  314. long BTN_SL_E_PTM; // end PTM of button select
  315. BYTE HLI_SS; // status of highlight information
  316. BYTE FOSL_BTNN; // forcedly selected button number
  317. BYTE FOAC_BTNN; // forcedly activated button number
  318. BYTE BTN_OFN; //button offset number
  319. BYTE BTN_Ns; //number of buttons
  320. BYTE NSL_BTN_Ns; //number of numerical select buttons
  321. } S_HL_GI;
  322. // Selection/Action mode
  323. enum { SELECT,
  324.        ACTIVATE
  325. };
  326. // structure filled by C_PCI_PKT.Get_Button_Links()
  327. typedef struct
  328. {
  329. WORD UP_BTNN; // upper button number
  330. WORD LO_BTNN;
  331. WORD LEFT_BTNN;
  332. WORD RIGHT_BTNN;
  333. } S_AJBTN;
  334. // enumerated data type for display mode
  335. enum { Normal    = 0x0000, 
  336.        Wide      = 0x0001,
  337.        Letterbox = 0x0002, 
  338.        Panscan   = 0x0004
  339. };
  340. typedef struct
  341. {
  342. long VOBU_SA;
  343. BOOL V_Exist1;
  344. BOOL V_Exist2;
  345. } S_VOBU_SRI;
  346. typedef struct
  347. {
  348. DWORD NV_PCK_SCR; // the lower 32 bits of SCR_base
  349. DWORD NV_PCK_LBN; // address of NV_PCK in wich DSI is included with RLBN...
  350. DWORD VOBU_EA; // End address of VOBU
  351. DWORD VOBU_1STREF_EA; // first reference picture end address
  352. DWORD VOBU_2NDREF_EA;
  353. DWORD VOBU_3RDREF_EA;
  354. DWORD C_ELTM; // Cell elapse time
  355. WORD  VOBU_VOB_IDN; // VOB ID number
  356. BYTE  VOBU_C_IDN; // Cell ID number
  357. } S_DSI_GI;
  358. typedef struct
  359. {
  360. DWORD ILVU_EA;   // interleaved unit end address
  361. DWORD NT_ILVU_SA;   // next interleaved unit start address
  362. DWORD VOB_V_S_PTM; // video start PTM in VOB
  363. DWORD VOB_V_E_PTM; // video end PTM in VOB
  364. WORD  VOBU_SML_CAT; // unit end, unit start, ILVU, PREU flag
  365. WORD  NT_ILVU_SZ; // next interleaved unit size
  366. } S_SML_PBI;
  367. // Op codes used with CRunScheduledOp
  368. enum { STOP_OP = 1,
  369.        FLUSH_OP,
  370.        VOBU_STILL_OP,
  371.        PCI_DECODE,
  372.        THREAD_SWITCH,
  373. #ifdef DVD_AUDIO_SUPPORT//LeonH_1017_2003:    add the runtime schedule uop for dvd audio 
  374. RTPB_AOB_MUTED_NEXTPLAY,
  375. RTPB_AOB_UPDATE_PGNUM,
  376. RTPB_AOB_DISPLAY_DLIST,
  377. RTPB_AOB_RTN_MENU, 
  378. RTPB_AOB_ASV_IS_DISPLAYED,
  379. RTPB_AOB_MUTED_PREVPLAY, 
  380. #endif
  381.        HLI_S_OP,
  382.        HLI_E_OP,
  383.        BTN_SL_E_OP
  384. };
  385. #define PCI_SIZE      790 /* originaly 1024, specs says  979 but we don't care about 189 bytes of Recording information */
  386. #ifdef LANGUAGE_LEARNING_SUPPORT
  387. #define MAX_NUMOF_DSI_GRAMMER_CMD 8
  388. #define DSI_GRAMMER_CMD_SIZE     8
  389. #define DSI_GRAMMER_ID_SIZE 4
  390. #define DSI_GRAMMER_NUMCMD_SIZE 4
  391. #define DSI_GRAMMER_ID_INDEX 546
  392. #define DSI_GRAMMER_NUMCMD_INDEX ( DSI_GRAMMER_ID_INDEX + DSI_GRAMMER_ID_SIZE ) //Only the last byte is usefull
  393. #define DSI_GRAMMER_CMD_INDEX ( DSI_GRAMMER_NUMCMD_INDEX + DSI_GRAMMER_NUMCMD_SIZE )
  394. #define DSI_SIZE                     618//=( MAX_NUMOF_DSI_GRAMMER_CMD*8 + DSI_GRAMMER_NUMCMD_SIZE + DSI_GRAMMER_ID_SIZE )
  395. #else
  396. #define DSI_SIZE      546 /* originaly 1024, specs says 1017 but there are 471 of reserved bytes (don't care ) */
  397. #endif
  398. #define PGC_GI_SIZE (236+6) /* read 6 more bytes for the size of CMDT */
  399. #if 0//LX042602
  400. // bits used in DSI / PCI to descibe VOBU content
  401. #define VIDEO_VOBU_FLAG 0x01
  402. #define NOSPDATA_VOBU_FLAG 0x02
  403. #define BEGINSPU_VOBU_FLAG 0x03
  404. #endif
  405. // structure filled by C_PGC_PGMAP.GET_ENTRY_CELL()
  406. typedef struct {
  407. WORD entry_cell; // entry cell number
  408. WORD first_non_cell; // entry cell of next program or 0 for last prog
  409. } S_PG;
  410. // structure filled by C_PTT.GET_ENTRY(), C_VTS.GetPTT() and also by
  411. //   C_PGC_TBL.Fill_Struct(), C_PGC_TBL.Fill_Status()
  412. typedef struct {
  413. DWORD PGCI_SA;
  414. WORD PGCN;
  415. WORD PGN;
  416. BYTE   status;
  417. } S_PGC_SRP;    // This is PGCI_SRP and PTT_SRP plus the status
  418. // S_PGC_SRP status 
  419. enum {
  420.   VALID_PGCN=0,
  421.   WRONG_PGCN,
  422.   WRONG_PTLV,
  423.   NOFPLAY_PGC
  424. };
  425. //  structure filled by C_TT.Get_TT_SRP()
  426. typedef struct {
  427. DWORD VTS_SA;     // Start adress of the VTS
  428. WORD N_PTT;     // Number of Part_of_Titles
  429. WORD Parental_ID;   // Parental_ID_Field for Title
  430. BYTE Title_Playback; // Title Playback Type
  431. BYTE N_Angle;     // Number of Angles
  432. BYTE VTSN;       // VTS number
  433. BYTE VTS_TTN;     // VTS Title number
  434. } S_TT_SRP;
  435. //  ATT_SRP structure 
  436. typedef struct {
  437. BYTE    ATT_CAT;        // category
  438. BYTE    ATT_PG_Ns; // Number of programs
  439. BYTE    AGL_Ns;             // Number of angles (only for AVTT)
  440. BYTE    ATSN;         // ATS/VTS number
  441. BYTE    ATS_TTN;       // ATS/VTS Title number
  442. DWORD   ATT_PB_TM;          // playback time
  443. DWORD   ATS_SA;     // Start adress of the ATS/VTS
  444. int     PGIdx;           // index of requested track within this ATT
  445. } S_ATT_SRP;
  446. // structure filled by C_PGC_GI::Get_Program_Content()
  447. typedef struct {
  448. WORD Number_of_Programs;
  449. WORD Number_of_Cells;
  450. } S_PGC_CNT;
  451. // structure filled by C_PGC_GI.Get_Audio_Control_Info()
  452. typedef struct  {
  453. BYTE decod_AST_Downmix;
  454. BYTE decod_AST;
  455. BOOL availability;
  456. } S_PGC_AST_CTL;
  457. // structure filled by C_PGC_GI.Get_SP_Control_Info()
  458. typedef struct {
  459. BYTE decod_SP_43;
  460. BYTE decod_SP_Wide;
  461. BYTE decod_SP_Letterbox;
  462. BYTE decod_SP_Panscan;
  463. BOOL availability;
  464. } S_PGC_SPST_CTL;
  465. // structure filled by C_PGC_GI.Get_Navigation_Info()
  466. typedef struct {
  467. WORD Next_PGCN;
  468. WORD Prev_PGCN;
  469. WORD GoUp_PGCN;
  470. BYTE PG_Playback;
  471. BYTE Still_Time;
  472. } S_PGC_NV_CTL;
  473. // structure filled by C_PGC_GI.Get_SP_Palette()
  474. //typedef struct {
  475. //        int Luminance;
  476. //        int     Coldif_Cr;
  477. //        int Coldif_Cb;
  478. //} S_PAL_ENTRY;
  479. typedef enum {
  480.   AC_3  = 0x00, 
  481.   MPEG1 = 0x02,
  482.   MPEG2 = 0x03,
  483.   LPCM  = 0x04,
  484.   DTS   = 0x06
  485. }DVD_AUDIO_STREAM_TYPE;
  486. // structure filled by C_???_ATR.Get_Audio_MultiChanel_Attr()
  487. typedef struct {
  488. BYTE audio_mix;
  489. BYTE ACH_mixmode;
  490. BYTE ACH_contents;
  491. BYTE alpha;
  492. BYTE betha;
  493. } S_MU_A_ATR; // audio streams may be #0 to #7
  494. // structure filled by C_???_ATR.Get_SP_Attr()
  495. typedef struct {
  496. WORD spec_code;
  497. BYTE coding_mode;  // subpicture coding mode
  498. BYTE stype;        //sub-picture type
  499. BYTE spec_code_ext;
  500. } S_SP_ATR;
  501. //  structure filled by C_C_POSIT.Get_Cell_Position()
  502. typedef struct {
  503. WORD C_VOB_IDN; //VOB number of the cell
  504. BYTE C_IDN; // cell number
  505. } S_C_POSIT;
  506. //  structure filled by C_C_PBIT.Get_Cell_PBI()
  507. enum { 
  508.   NO_BLOCK    = 0, 
  509.   ANGLE_BLOCK = 1,
  510.   FIRST_CELL  = 1, 
  511.   LAST_CELL   = 3 
  512. };
  513. typedef struct {
  514.     DWORD PBTM;
  515.     DWORD FVOBU_SA;
  516.     DWORD FILVU_EA;
  517.     DWORD LVOBU_SA;
  518.     DWORD LVOBU_EA;
  519.     BYTE   still_time;
  520.     BYTE   command_number;
  521.     BYTE   position_in_block;
  522.     BYTE   type;
  523.     BYTE   block_type;
  524.     BOOL  seamless;
  525.     BOOL  interleaved;
  526.     BOOL  discontinuity;
  527.     BOOL  seamless_angle_change;
  528.     BOOL  VOBU_still;
  529.     BOOL  restricted_access;
  530. } S_C_PBI;
  531. typedef struct {
  532.     BYTE   ATS_C_IXN;
  533.     BYTE   ATS_C_TY;
  534.     DWORD  ATS_C_SA;
  535.     DWORD  ATS_C_EA;
  536. } S_ATS_C_PBI;
  537. typedef struct
  538. {
  539. DWORD CP_SA; // cell piece start LBN address
  540. DWORD CP_EA; // cell piece end LBN address
  541. } S_CP;
  542. #define T_ATRT_SIZE 472
  543. #define M_ATRT_SIZE  92
  544. #define VMGI_MAT_SIZE 348
  545. #define VTSI_MAT_SIZE 984
  546. /************ C_SPRM class translation - data *****************/
  547. #define NSPRM 25
  548. typedef struct{
  549. WORD value[NSPRM]; /* used by UI */
  550. /* WORD initial[NSPRM]; */ /* TC0515 : Remove initial for memory saving */
  551. }S_SPRM;
  552. /************ C_GPRM class translation - data *****************/
  553. #define NGPRM 16
  554. #define REGISTER 0
  555. #define COUNTER  1
  556. #define SET_GPRM_REGISTER( mode_flags, n ) (mode_flags) &= 0xFFFF^(1<<n)
  557. #define SET_GPRM_COUNTER( mode_flags, n ) (mode_flags) |= (1<<n)
  558. #define IS_GPRM_COUNTER( mode_flags, n) ((mode_flags)&(1<<n))
  559. typedef struct{
  560. WORD value[NGPRM];
  561. WORD mode_flags;
  562. }S_GPRM;
  563. /************ C_DSI C_DSI_PKT class translataion - data *************/
  564. enum { DISABLED = 0, ARMED  = 1, ACTIVE   = 3 };
  565. typedef struct {
  566. // previous VOB_V_E_PTM, actual VOB_V_S_PTM
  567. DWORD pVOB_V_E_PTM;
  568. DWORD aVOB_V_S_PTM;
  569. long STCoffset;
  570. /* from C_DSI */
  571. S_DSI_GI  dsi_gi;
  572. S_SML_PBI sml_pbi;
  573. WORD angle;
  574. /* MR: Only need 1 buffer, no need for ping-pong buffer */
  575. /* int container_index; */
  576. /* BYTE buffer[ 2 ][ DSI_SIZE ];  */
  577. #ifdef NO_SCPAD
  578. /* from C_DSI_PKT */
  579. BYTE *DSI_SA;
  580. BYTE buffer[DSI_SIZE];
  581. #else
  582. WORD sc_handle;
  583. #endif
  584. // DSI-based VOBU processing
  585. S_CP cell, cell_piece, vobu;
  586. // E-STD model flag and PCI address
  587. // SPU stream
  588. BYTE SPUstream;
  589. BYTE E_STDmode;
  590. // This is a "Patch" for Nav Test Disc vol.1 Pres.Still test:
  591. BOOL Is_CellVOBU_Still; // Hold TRUE if the current cell is a VOBU still cell
  592. // End of Patch
  593. BOOL Is_LastVOBU;
  594. BOOL Is_SeamlessAngleChange;  // Updated from c_pbi - signals if angle changes should be seamless
  595. BOOL Is_DSI_Valid;
  596. BOOL actual_container;
  597. DWORD dwAngleScanVobu;//LX0703
  598. #ifdef LANGUAGE_LEARNING_SUPPORT
  599. BYTE ucNumOfGrammerCmds;
  600. BYTE ucGrammerCmdIndex;
  601. #endif
  602. DWORD dwLatestVOBUSize;//LX082402:
  603. }S_DSI;
  604. /********** Class from presentation.cpp ********/
  605. typedef struct{
  606.   DWORD  PTM;
  607.   DWORD  arg;
  608.   LBN    VOBU;
  609.   BYTE  func;
  610.   BYTE client_type;
  611.   BYTE  e_nbr;
  612. }S_ScheduledOp;
  613. #define SCHEDULE_CLIENT_RTPB 1
  614. #define SCHEDULE_CLIENT_PCI 2
  615. #define SCHEDULE_CLIENT_AOB_RTPB 3
  616. #define SCHOP_PTM( schop ) (((S_ScheduledOp *) schop)->PTM)
  617. typedef struct {
  618.   S_DATA_CONTAINER c;
  619.   S_ScheduledOp opS;
  620. #ifdef NO_SCPAD
  621.   BYTE data[ PCI_SIZE ];
  622. #else
  623.   WORD sc_handle;
  624. #endif  
  625. } PCI_BUFFER;
  626. /************ C_PCI C_PCI_PKT class translation - data *************/
  627. #define NO_PCI_BUFFER_REJECTED 0xFF
  628. typedef struct {
  629.       long buffered_packets;
  630.       long decoded_packets;
  631.       long empty_pumps;
  632.       int packet_index; // MODULU so int is OK
  633.       int opS_index;    // MODULU so int is OK
  634.       S_DATA_CONTAINER *crt_packet, *next_packet;
  635.       PCI_BUFFER buffer[ MAX_PCI_BUFFER ]; 
  636. /* from C_PCI_PKT */
  637. #ifdef NO_SCPAD
  638. BYTE *PCI_SA;
  639. #else
  640. WORD PCI_SA_sc_handle;
  641. #endif
  642. /* from C_PCI */
  643.       // continuity flags
  644.       S_PCI_GI pci_gi;
  645.       S_HL_GI  hl_gi;
  646.       S_ScheduledOp hli_s, hli_e;
  647.       S_ScheduledOp btn_sl_e;
  648.       WORD angle;
  649.       WORD previous_APSTB;
  650.     BYTE GRN;          /* number of groups */
  651.     BYTE crt_GR;       /* group currently aimed at */
  652.       BYTE  rejected_buffer_num; /* indicate PCI buffer number that was previously rejected. -1 means none were rejected */
  653.       // Reference time to be set at the next PCI
  654.       BOOL setReferenceTime;
  655.       BOOL decoder_locked;
  656.       BOOL active_HLIdecoder;
  657.       BOOL stopped;
  658. }S_PCI;
  659. /************ C_DOM class translation - data ***********************/
  660. typedef struct{
  661. // LBN address of the corresponding VOBS
  662. LBN VOBS_LBNaddress;
  663. #ifdef NO_SCPAD
  664. S_STORAGE stream_attr_st;
  665. S_STORAGE PGC_table_st;
  666. BYTE* pgcit_data;
  667. BYTE *atrt_data;
  668. #else
  669. S_SC_STORAGE stream_attr_sc_st;
  670. /*S_SC_STORAGE PGC_table_sc_st;*//* ZORAN TC0116 : Ultimate Toy Story Box disc #3 */
  671. WORD atrt_data_sc_handle;
  672. #endif
  673. S_FPOS  pgcit_addr;
  674. S_FPOS  fpdom_addr;
  675. /* <<< ZORAN TC0116 : Ultimate Toy Story Box disc #3 */
  676. WORD pgc_count;
  677. BYTE b_init_pgc_table;
  678. /* ZORAN TC0116 >>> */
  679. BYTE type; /* Title domain or Menu domain */
  680. #ifdef EXINO2
  681. BOOL b_IsAvailable_MenuDom;// SEC shKang070903 : this is not enough to check if can go to menu domain.
  682. #endif // EXINO2
  683. }S_DOM;
  684. /********** C_VMG class translation -data **************/
  685. typedef struct{
  686. #ifdef NO_SCPAD
  687. S_STORAGE parental_table_st;
  688. #else
  689. S_SC_STORAGE parental_table_sc_st;
  690. #endif
  691. S_DOM  menu;
  692. S_DOM power_on;
  693. S_STORAGE st;
  694. #ifdef NO_SCPAD
  695. BYTE*  tt_data;
  696. S_STORAGE title_table_st;
  697. #else
  698. S_SC_STORAGE title_table_sc_st;
  699. #endif
  700. #ifdef NO_SCPAD
  701. BYTE* ptl_data;
  702. #else
  703. /* S_SC_STORAGE ptl_data_sc_st; */ /* not needed, equivalent to parental_table_sc_st */
  704. #endif
  705. #ifdef NO_VMGI_DATA_REDUCTION
  706. BYTE data[ VMGI_MAT_SIZE ];
  707. #else
  708. #endif
  709. #ifdef NO_SCPAD
  710. BYTE power_on_atrt_data[ T_ATRT_SIZE ]; /* defined here temporarely */
  711. BYTE menu_atrt_data[ M_ATRT_SIZE ]; /* defined here temporarely */
  712. #else
  713. WORD power_on_atrt_data_sc_handle; /* defined here temporarely */
  714. WORD menu_atrt_data_sc_handle; /* defined here temporarely */
  715. #endif
  716. VOLUME_ID vol_id;
  717. BYTE vol_cat;
  718. BYTE vts_count;
  719. BOOL initialized;
  720. }S_VMG;
  721. /********** C_VTS class translation -data **************/
  722. typedef struct{
  723. S_DOM  menu;
  724. S_DOM title;
  725. S_FPOS  part_table;
  726. #ifdef NO_SCPAD
  727. BYTE* part_data;
  728. int   part_size;
  729. #else
  730. S_SC_STORAGE part_data_sc_st;
  731. #endif
  732. S_FPOS time_table;
  733. #ifdef NO_VTS_DATA_REDUCTION
  734. S_STORAGE st;
  735. BYTE data[ VTSI_MAT_SIZE ];
  736. #endif
  737. #ifdef NO_SCPAD
  738. BYTE title_atrt_data[ T_ATRT_SIZE ];
  739. BYTE menu_atrt_data[ M_ATRT_SIZE ];
  740. #else
  741. WORD title_atrt_data_sc_handle;
  742. WORD menu_atrt_data_sc_handle;
  743. #endif
  744. BOOL initialized;
  745. #ifdef LANGUAGE_LEARNING_SUPPORT
  746. BYTE LanguageLearning_SubStreamID;//0xFF = no data
  747. #endif
  748. }S_VTS;
  749. #define   AOTT_AOB_ATR_SIZE   128
  750. #define   ATS_DM_COEFT_SIZE   288
  751. /********** ATS data **************/
  752. typedef struct{
  753. S_DOM title;
  754. #ifdef NO_SCPAD
  755. BYTE AOTT_AOBS_ATR[ AOTT_AOB_ATR_SIZE ];  // audio attributes
  756. BYTE ATS_DM_COEFT[ATS_DM_COEFT_SIZE];     // down mix coefficients
  757. #else
  758. S_SC_STORAGE  aott_aobs_atr_sc_st;
  759. S_SC_STORAGE  ats_dm_coeft_sc_st;
  760. #endif
  761. BOOL initialized;
  762. }S_ATS;
  763. /********** CRealTimePlayback class translation - data ********/
  764. typedef struct{
  765. long  stopPersistence;   // Embedded - suspicius - long is better
  766. int   cell;
  767. S_C_PBI   c_pbi;
  768. S_C_POSIT c_posit;
  769. S_ATS_C_PBI  ats_c_pbi;
  770. // cell piece address
  771. S_CP      cp;
  772. S_CP vobu; // last played VOBU
  773. // scheduled operations buffer
  774.  S_ScheduledOp opBuffer[ MAX_SCHEDULED_OPS ];
  775. #ifdef SET_ANGLE_OUT_OF_ANGLE_BLOCK//Angie_0824_2004:For Funai, need to set the angle out of angle block.
  776. WORD angle_count; //Use to recode the angle number in current title.
  777. #endif
  778. WORD available_angles;
  779. // actual VTSN
  780. WORD actualVTSN;
  781. BOOL stopped;
  782. BOOL pumpSought;
  783. // handle EOD
  784. BOOL EODStatus;
  785. BOOL starvation;
  786. BOOL Wait4ASV;
  787. }S_RTPBINFO;
  788. /**************** C_Acton translation - data and defs *********/
  789. typedef DWORD CmdID;   // mainly for the embedded port
  790. enum {
  791.   // Table 4.6.3.2-1. valid in both CNavigationCommand and CAction
  792.   GoToCmd = 0,
  793.   // Table 4.6.3.2-1, but valid only in CNavigationCommand
  794.   Link_Jump = 1, SetSystem = 2, Set = 3, Set_Compare_LinkSIns = 4,
  795.   Compare_and_Set_LinkSIns = 5, Compare_Set_and_LinkSIns = 6, Reserved = 7,
  796.   // Valid only in CAction
  797.   Link = 64, Jump, InitialAccess, PartPlay, TimePlay, 
  798.   CellPlay, BookmarkPlay, NonSeamlessCellPlay,
  799.   Still, 
  800.   Resume, ReportError, Navigation, Breakpoint, Nothing
  801. };
  802. typedef DWORD CmdOpt;   // mainly for the embedded port
  803. enum {
  804.   // although is not always legal
  805.   Nop = 0,
  806.   // Table 4.6.3.2-2 Compare
  807.   BC = 1, EQ = 2, NE = 3, GE = 4, GT = 5, LE = 6, LT = 7,
  808.   // Table 4.6.3.2-3 GoTo
  809.   GoTo = 1, Break = 2, SetTmpPML = 3,
  810.   // Table 4.6.3.2-4 Link
  811.   LinkSIns = 1, LinkTKN = 2, LinkDLISTN = 3, LinkPGCN = 4, LinkPTTN = 5, LinkPGN = 6, LinkCN = 7,
  812.   LinkTKNGP = 10, LinkDLISTNGP = 11, LinkPGCNGP = 12, LinkPGNGP = 14, LinkCNGP = 15,
  813.   // LinkSIns -- see 4.6.4.2
  814.   LinkNoLink  = 0x00, LinkTopC    = 0x01, LinkNextC   = 0x02, LinkPrevC   = 0x03, 
  815.   LinkTopPG   = 0x05, LinkNextPG  = 0x06, LinkPrevPG  = 0x07, LinkTopPGC  = 0x09, 
  816.   LinkNextPGC = 0x0A, LinkPrevPGC = 0x0B, LinkGoUpPGC = 0x0C, LinkTailPGC = 0x0D, RSM = 0x10,
  817.   LinkNextDLIST = 0x12, LinkPrevDLIST = 0x13,
  818.   // Table 4.6.3.2-5 Jump
  819.   Exit = 1, JumpTT = 2, JumpVTS_TT = 3, JumpVTS_PTT = 5, JumpSS = 6, CallSS = 8,
  820.   JumpTT_GR = 9, JumpTK = 10, AMGM_RSM = 11,
  821.   // Table 4.6.3.2-6 SetSystem
  822.   SetSTN = 1, SetNVTMR = 2, SetGPRMMD = 3, SetAMXMD = 4, SetHL_BTTN = 6, 
  823.   PlayerReserved = 7, SPRM0Reserved = 8,
  824.   // Table 4.6.3.2-7 Set
  825.   Mov = 1, Swp = 2, Add = 3, Sub = 4, Mul = 5, Div = 6, 
  826.   Mod = 7, Rnd = 8, And = 9, Or = 10, Xor = 11,
  827.   // BookmarkPlay options
  828.   BmkPlay = 0, BmkRepeat, BmkResume, BmkScan,
  829.   
  830.   // ReportError codes
  831.   NoError = 0, InvalidRegion,
  832.   BadOperand, InvalidOpCode, DivideByZero, WrongContext, 
  833.   MenuDomainIgnored, FirstPlayIgnored, InconsistentData, 
  834.   RestrictedAccess, ProhibitedUOP, PendingUOP, StopState,WrongParentLevel
  835. // <<< ZKR GL082103 : Added "InvalidTVSystem" error report.
  836. #if defined(D_PROHIBIT_PAL_TO_NTSC)
  837.   , InvalidTVSystem
  838. #endif
  839. // ZKR GL082103 >>>
  840. };
  841. #define COMMAND_LENGTH  8
  842. typedef struct{
  843.   DWORD cod;
  844.   DWORD opt;
  845.   DWORD arg;
  846.   BYTE  raw[ COMMAND_LENGTH ]; 
  847.   CmdOpt last_error;
  848. }S_Action;
  849. typedef struct{
  850.   CmdOpt error_code;
  851.   S_Action *dvd_act;
  852. }S_EmitAction;
  853. typedef struct{
  854.   S_STORAGE st;
  855.   S_EmitAction ea;
  856. }S_NavigationCommand;
  857. /**************** C_PGC class translation - data **************/
  858. enum{ 
  859.     start=0, 
  860.     init_pre_command, pre_command,
  861.     init_presentation,
  862.     program_presentation,
  863.     cell_presentation, cell_still, 
  864.     cell_command, cell_command_acp,
  865.     loop_count, loop_count_acp,
  866.     pgc_still, 
  867.     init_post_command, init_post_command_acp,
  868.     post_command, 
  869. #ifdef LANGUAGE_LEARNING_SUPPORT
  870. grammer_command,
  871. #endif
  872.     link, 
  873.     stop
  874. };
  875. typedef  BYTE PGC_STATE;
  876. #define MAX_REPEAT                    100
  877. enum { 
  878.   NO_PRECOMMAND    = 0x01,
  879.   TIME_PLAY_SEARCH = 0x02
  880. }; 
  881. typedef enum  { VIDEO_PGC = 0, AUDIO_PGC , AMGM_PGC }  PgcTypes;
  882. typedef struct{
  883. DWORD cur_pg_pbtime; /* ZORAN TC0327 : Current program total playback time */
  884. DWORD e_pg_time; /* ZORAN TC0327 : Current program elapsed time of previous cells composing the cell */
  885.     DWORD e_cell_time;
  886.     DWORD e_time;
  887.     DWORD entryVOBU;
  888. S_EmitAction ea;
  889.     // PGC content and navigation
  890.     S_PGC_CNT    pgc_cnt;
  891.     S_PGC_NV_CTL pgc_nv_ctl;
  892.     
  893. short requested_program_index; /* -1 means no user search requested , in case of PTT play, we must make sure that we play the requested program even if pre_commands wants to link to another CN */
  894.     WORD   e_program_index;
  895.     /* int repeat_value; */
  896.     WORD PGCN;
  897.     // actual program (index in playback_order, 0, ..., repeat - 1)
  898.     WORD program_index; /* start from 1 in VP2K */
  899.     // next cell
  900.     WORD     next_c_n;
  901.     // previous, entry cell, and first non-cell
  902.     WORD     prev_c_n;
  903.     WORD     entry_c_n;
  904.     WORD     fnon_c_n;
  905.     // the cell number used in CellPlay
  906.     WORD     lplay_c_n;
  907.     // first cell in the angle block
  908.     WORD     fagl_c_n;
  909.     // actual cell number and PBI
  910.     WORD       actual_c_n;
  911.     S_C_PBI   actual_c_pbi;
  912. #ifdef DVD_AUDIO_INDEX
  913. WORD current_index;
  914. WORD number_of_indexes;
  915. #endif
  916.     
  917.     // entry VOBU for Time_Play / Time_Search (valid when != 0x3FFFFFFF)
  918. #ifdef NO_SCPAD
  919.     S_STORAGE   info_st;  // Contains also the first 6 bytes of the CMDT
  920.     S_STORAGE   cell_position_st;
  921.     S_STORAGE   playback_info_st;
  922.     S_STORAGE  command_table_st;
  923.     S_STORAGE program_map_st;
  924. #else
  925.     S_SC_STORAGE   info_sc_st;  // Contains also the first 6 bytes of the CMDT
  926.     S_SC_STORAGE   cell_position_sc_st;
  927.     S_SC_STORAGE   playback_info_sc_st;
  928.     S_SC_STORAGE  command_table_sc_st;
  929.     S_SC_STORAGE program_map_sc_st;
  930. #endif
  931. S_C_PBI   decoded_c_pbi;
  932.     // PGC_GI -- has 6 more bytes for the size of CMDT
  933. #ifdef NO_SCPAD
  934.     BYTE  pgc_gi_data[ 236 + 6 ];
  935. #endif
  936.     // Actual data buffer for PGC_GI and PGCI (doesn't contain PGC_GI)
  937. #ifdef NO_SCPAD
  938.     BYTE *pgci_data;
  939. #endif
  940.     // actual command
  941.     BYTE     command;
  942.     // actual angle
  943.     BYTE actual_angle;    
  944.     // Any aditional play conditions?
  945.     // PGC state
  946.     PGC_STATE state;
  947. PGC_STATE next_state;
  948.     BYTE play_mode;
  949. BOOL initialized;
  950. //  -----  the following extensions are for DVD_AUDIO
  951. BYTE PgcType;
  952. WORD ATS_PGIT_SA;
  953. WORD ATS_C_PBIT_SA;
  954. WORD ATS_ASV_PBIT_SA;
  955. DWORD  ATS_PG_CNT;
  956. #ifdef NO_SCPAD
  957.     S_STORAGE   asv_pbit_st;
  958. #else
  959.     S_SC_STORAGE asv_pbit_sc_st;
  960. #endif
  961.     DWORD entryTime;
  962. DWORD curr_fac_s_ptm;
  963.     DWORD aob_cell_time;
  964. }S_PGC;
  965. #define BMARK_RESUME 0
  966. #define BMARK_A 0
  967. #define BMARK_B 1
  968. #define BMARK_1 2
  969. #define BMARK_2 3
  970. #define BMARK_3 4
  971. #ifdef SUPPORT_FIVE_DVD_BOOKMARKS
  972. #define BMARK_4 5
  973. #define BMARK_5 6
  974. #define BMARK_MAX 7
  975. #elif D_SUPPORT_TWELVE_BOOKMARKS
  976. #define BMARK_4 5
  977. #define BMARK_5 6
  978. #define BMARK_6 7
  979. #define BMARK_7 8
  980. #define BMARK_8 9
  981. #define BMARK_9 10
  982. #define BMARK_10 11
  983. #define BMARK_11 12
  984. #define BMARK_12 13
  985. #define BMARK_MAX 14
  986. #else
  987. #define BMARK_MAX 5
  988. #endif//SUPPORT_FIVE_DVD_BOOKMARKS
  989. #define BMARK_NUM(n) (n-1+BMARK_1)
  990. /********** S_DVD_NAVIGATION data structure **********/
  991. #define VTSN_NOT_INITIALIZED 0xFF
  992. #define ANGLE_OFFSET_COUNT 10
  993. #define ANGLE_OFFSET_SIZE (ANGLE_OFFSET_COUNT*sizeof(DWORD))
  994. typedef struct
  995. {
  996.   DWORD PGC_UOP_CTL;
  997.   DWORD VOBUEndPTM;
  998.   int ScanSpeed;
  999.   int UserRepeat;    
  1000.   S_DOM              *domain;
  1001.   DOMAIN_ID           domainID;
  1002.   WORD VideoAttribute;
  1003.   WORD prev_VideoAttribute;
  1004.   WORD CurrentP_CFGVideo;
  1005.   WORD UserP_CFGVideo;
  1006.   WORD special_requirements;
  1007.   // bookmark data
  1008.   DVD_BOOKMARK Bookmark; 
  1009. #ifdef NO_SCPAD
  1010.   DVD_BOOKMARK SavedBookmark[BMARK_MAX];
  1011.   DWORD AnglesOffset[ 10 ];
  1012. #else
  1013.   DVD_BOOKMARK PlayBookmark; /* needed when STOP occurs when bookmark play is requested */
  1014. #endif
  1015.   BYTE EventNumber;
  1016.   BYTE  crt_VTSN; /* originally a CSpace private member */
  1017.   BYTE SystemASTN;
  1018.   BYTE SystemSPSTN;
  1019.   BYTE Title_Playback;
  1020.   BYTE StillType;
  1021.   BOOL  DSIAngleOffset;
  1022.   BOOL BreakpointMode;
  1023.   BOOL Pause;
  1024.   BOOL UseNavigationTimer;
  1025.   BOOL Validated;
  1026.   BOOL PlayingATS;  // True if playing from ATS , false if playing from VTS
  1027.   BYTE CopyBit;
  1028.   BYTE CategoryCode;
  1029. // <<< ZKR GL082103 : Added TV system validation.
  1030. #if defined(D_PROHIBIT_PAL_TO_NTSC)
  1031.   BOOL TVSystemValidated;   
  1032. #endif
  1033. // ZKR GL082103 >>>
  1034. } S_DVD_NAVIGATION_C;
  1035. /************ Navigation Manager class translation -data *********/
  1036. typedef struct{
  1037. DWORD actualUOP_CTL;
  1038. /* Auto Notification parameter (formerly VOID-Thread switch event ) */
  1039. S_ScheduledOp *auto_notification_schop;
  1040. S_EmitAction ea;
  1041. S_Action action;
  1042. S_Action pending_action;
  1043. // resume data
  1044. DVD_BOOKMARK resume_bookmark;
  1045. #ifdef NO_SCPAD
  1046. DWORD resume_anglesoffset[ 10 ];
  1047. #endif
  1048. // stop waiting flag
  1049. BOOL WaitingForStop;
  1050. // Play mode
  1051. BOOL PlayStatus;
  1052. BOOL    pending;
  1053. BOOL    pending_argument;
  1054. } S_NavigationManager;
  1055. typedef struct{
  1056. DWORD npi_stc_offset[MAX_NP_INFO];
  1057. // BYTE npi_flags[MAX_NP_INFO];
  1058. DWORD npi_resume_lbn[MAX_NP_INFO];//LX042602
  1059. BYTE wr_cnt;
  1060. BYTE rd_cnt;
  1061. BYTE level;
  1062. } S_NAV_PK_INFO_FIFO;
  1063. #define PLAY_MODE_NORMAL   0
  1064. #define PLAY_MODE_CONTINUE 1
  1065. #define PLAY_MODE_FAST     2
  1066. #define PLAY_MODE_SLOWR    3
  1067. typedef enum{
  1068. PASSWORD_IN_PROGRESS,
  1069. PASSWORD_FAILED,
  1070. PASSWORD_OK
  1071. }PASSWORD_STATUS;
  1072. #endif /* __NVGATI_C_H */