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

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: MAPPING.H $             
  6.  *
  7.  * Description: 
  8.  * ============
  9.  * 
  10.  * 
  11.  * Log:
  12.  * ====
  13.  * $Revision: 4 $
  14.  * Last Modified by $Author: Angieh $ at $Modtime: 04-03-08 11:40 $ 
  15.  ****************************************************************************************
  16.  * Updates:
  17.  ****************************************************************************************
  18.  * $Log: /I76/I76_Common/I76_Reference/Playcore/Nav_DVD/Header/MAPPING.H $
  19.  * 
  20.  * 4     04-03-08 11:41 Angieh
  21.  * Check with the AMGM has no audio problem.
  22.  * 
  23.  * 3     12/30/03 11:28a Leonh
  24.  * Angieh:Change for DVD AUDIO navigator header.
  25.  * 
  26.  * 3     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.  * 2     03-05-14 18:02 Leonh
  31.  * 
  32.  * 1     03-04-28 11:15 Fwang
  33.  * Initial for DVDA
  34.  * 
  35.  * 2     23/04/02 9:34 Nirm
  36.  * - Added dependency in "Config.h".
  37.  * 
  38.  * 1     2/17/02 12:12 Rinata
  39.  * 
  40.  * 1     2/17/02 11:38 Rinata
  41.  * 
  42.  * 3     4/02/02 10:39 Nirm
  43.  * Removal of compilation-warnings.
  44.  * 
  45.  * 2     9/01/02 16:40 Nirm
  46.  * Corrected Include-Paths.
  47.  ****************************************************************************************/
  48. #include "Config.h" // Global Configuration - do not remove!
  49. #ifndef __MAPPING_H
  50. #define __MAPPING_H
  51. #include "PlaycoreNav_DVDHeaderstream.h"
  52. #include "PlaycoreNav_DVDHeaderdvddef.h"
  53. #ifdef NO_SCPAD
  54. BOOL pgc_cmdt_Get_Pre_Command ( S_STORAGE *st, BYTE *buffer, int command );
  55. BOOL pgc_cmdt_Get_Cell_Command( S_STORAGE *st, BYTE *buffer, int command );
  56. BOOL pgc_cmdt_Get_Post_Command( S_STORAGE *st, BYTE *buffer, int command );
  57. BOOL c_pbit_Get_Cell_PBI( S_STORAGE *st, int cell, S_C_PBI *buffer);
  58. BOOL pgc_pgmap_Get_Entry_Cell( S_STORAGE *st, int program, S_PG *buffer);
  59. BOOL pgc_pgmap_Get_PG_CNT(S_STORAGE *st, int program,DWORD *pg_cnt);
  60. BOOL c_posit_Get_Cell_Position(S_STORAGE *st, int cell, S_C_POSIT *buffer);
  61. int c_posit_Get_Last_C_IDN( S_STORAGE *st, int C_VOB_IDN );
  62. WORD ptl_Get_ID( S_STORAGE *st, int level, int VTSN);
  63. #else
  64. BOOL pgc_cmdt_Get_Pre_Command ( S_SC_STORAGE *st, BYTE *buffer, int command );
  65. BOOL pgc_cmdt_Get_Cell_Command( S_SC_STORAGE *st, BYTE *buffer, int command );
  66. BOOL pgc_cmdt_Get_Post_Command( S_SC_STORAGE *st, BYTE *buffer, int command );
  67. BOOL c_pbit_Get_Cell_PBI( S_SC_STORAGE *st, int cell, S_C_PBI *buffer);
  68. BOOL pgc_pgmap_Get_Entry_Cell( S_SC_STORAGE *st, int program, S_PG *buffer);
  69. BOOL pgc_pgmap_Get_PG_CNT(S_SC_STORAGE *st, int program,DWORD *pg_cnt);
  70. BOOL c_posit_Get_Cell_Position(S_SC_STORAGE *st, int cell, S_C_POSIT *buffer);
  71. int c_posit_Get_Last_C_IDN( S_SC_STORAGE *st, int C_VOB_IDN );
  72. WORD ptl_Get_ID( S_SC_STORAGE *st, int level, int VTSN);
  73. #endif
  74. #ifdef NO_SCPAD
  75. #define  pgc_gi_Get_PlayBack_Time( st ) ((DWORD) TIME_DECOD((st)->buffer[4], (st)->buffer[5], (st)->buffer[6], (st)->buffer[7]))
  76. #define  pgc_gi_Get_UOP_CTL( st ) ((DWORD) buff2dword((st)->buffer,8) & 0x01FFFFEFL)
  77. BOOL pgc_gi_Get_Audio_Control_Info( S_STORAGE *st, int stream, S_PGC_AST_CTL *buffer);
  78. BOOL pgc_gi_Get_SP_Control_Info   ( S_STORAGE *st, int stream, S_PGC_SPST_CTL *buffer);
  79. void pgc_gi_Get_Navigation_Info( S_STORAGE *st, S_PGC_NV_CTL *buffer );
  80. void pgc_gi_Get_SP_Palette     ( S_STORAGE *st, S_PAL_ENTRY *buffer );
  81. void pgc_gi_Get_Program_Content( S_STORAGE *st, S_PGC_CNT *buffer   );
  82. #else
  83. #define  pgc_gi_Get_PlayBack_Time() ((DWORD) TIME_DECOD(fs_scGetByte(gns.dvd.pgc.info_sc_st.sc_handle,4), fs_scGetByte(gns.dvd.pgc.info_sc_st.sc_handle,5), fs_scGetByte(gns.dvd.pgc.info_sc_st.sc_handle,6), fs_scGetByte(gns.dvd.pgc.info_sc_st.sc_handle,7)))
  84. #define  pgc_gi_Get_UOP_CTL() ((DWORD)fs_scGetDword(gns.dvd.pgc.info_sc_st.sc_handle, 8) & 0x01FFFFEFL)
  85. BOOL pgc_gi_Get_Audio_Control_Info( int stream, S_PGC_AST_CTL *buffer);
  86. BOOL pgc_gi_Get_SP_Control_Info   ( int stream, S_PGC_SPST_CTL *buffer);
  87. void pgc_gi_Get_Navigation_Info( S_PGC_NV_CTL *buffer );
  88. void pgc_gi_Get_SP_Palette     ( S_PAL_ENTRY *buffer );
  89. void pgc_gi_Get_Program_Content( S_PGC_CNT *buffer   );
  90. #endif
  91. #ifdef NO_SCPAD
  92. int  pgc_tbl_Get_PGC     ( S_STORAGE *st, WORD PTL_ID, S_PGC_SRP *buffer );
  93. int  pgc_tbl_Get_Menu_PGC( S_STORAGE *st, WORD PTL_ID, S_PGC_SRP *buffer );
  94. WORD pgc_tbl_Menu_Struc  (S_STORAGE *st,  WORD PTL_ID                    );
  95. BOOL pgc_tbl_Fill_Struct( S_STORAGE *st, int PGCN,   S_PGC_SRP *buffer );
  96. BOOL pgc_tbl_Fill_Status( S_STORAGE *st, int status, S_PGC_SRP *buffer );
  97. #else
  98. #if 0 /* <<< ZORAN TC0116 : Ultimate Toy Box */
  99. BOOL  pgc_tbl_Get_PGC     ( S_SC_STORAGE *st, WORD PTL_ID, S_PGC_SRP *buffer );
  100. BOOL  pgc_tbl_Get_Menu_PGC( S_SC_STORAGE *st, WORD PTL_ID, S_PGC_SRP *buffer );
  101. WORD pgc_tbl_Menu_Struc  (S_SC_STORAGE *st,  WORD PTL_ID                    );
  102. BOOL pgc_tbl_Fill_Struct( S_SC_STORAGE *st, int PGCN,   S_PGC_SRP *buffer );
  103. BOOL pgc_tbl_Fill_Status( S_SC_STORAGE *st, int status, S_PGC_SRP *buffer );
  104. #else
  105. BOOL  pgc_tbl_Get_PGC     ( S_DOM *dom, WORD PTL_ID, S_PGC_SRP *buffer );
  106. BOOL  pgc_tbl_Get_Menu_PGC( S_DOM *dom, WORD PTL_ID, S_PGC_SRP *buffer );
  107. WORD pgc_tbl_Menu_Struc  ( S_DOM *dom,  WORD PTL_ID                    );
  108. BOOL pgc_tbl_Fill_Struct(S_DOM *dom, WORD PGCN,   S_PGC_SRP *buffer );//Jeanz_0422_2005 Chang type for PGCN
  109. BOOL pgc_tbl_Fill_Status( int status, S_PGC_SRP *buffer );
  110. #endif /* ZORAN TC0116 >>> */
  111. #endif
  112. #ifdef NO_SCPAD
  113. #define tt_Get_Count() ( gns.dvd.vmg.title_table_st.size / 12)
  114. #else
  115. #define tt_Get_Count() ( gns.dvd.vmg.title_table_sc_st.size / 12)
  116. #endif
  117.   // Retrieves the S_TT_SRP structure based on the TTN.
  118. BOOL tt_Get_TT_SRP( S_TT_SRP *buffer, int TTN);
  119.   // finds TTN based on VTSN and VTS_TTN
  120. int tt_Get_TTN( int VTSN, int VTS_TTN );
  121. // returns the address for a VTSN
  122. DWORD tt_Get_VTS_SA( int VTSN);
  123. //
  124. //  Specific sizes for C_ATRT's data
  125. //
  126. #define T_ATRT_SIZE 472
  127. #define M_ATRT_SIZE  92
  128. #ifdef NO_SCPAD
  129. #define atrt_Get_Video_Attr( st )        ((WORD) buff2word((st)->buffer, 0))
  130. #define atrt_Get_Audio_Stream_Count( st ) ((int) buff2word((st)->buffer,2) & 0x0F)
  131. #define atrt_Get_SP_Stream_Count( st )    ((int) buff2word((st)->buffer,84) & 0x3F)
  132. BOOL atrt_Get_Audio_Attr            ( S_STORAGE *st, AUDIO_ATTRIBUTES *buffer, int stream );
  133. BOOL atrt_Get_Audio_MultiChanel_Attr( S_STORAGE *st, S_MU_A_ATR       *buffer, int stream );
  134. BOOL atrt_Get_SP_Attr               ( S_STORAGE *st, S_SP_ATR         *buffer, int stream );
  135. #else /* NO_SCPAD */
  136. #define atrt_Get_Video_Attr( st )        (fs_scGetWord((st)->sc_handle, 0))
  137. #define atrt_Get_Audio_Stream_Count( st ) ((int) fs_scGetWord((st)->sc_handle,2) & 0x0F)
  138. #define atrt_Get_DA_Audio_Stream_Count( st ) ((int) fs_scGetWord((st)->sc_handle + 1,0) & 0x0F)
  139. #define atrt_Get_SP_Stream_Count( st )    ((int) fs_scGetWord((st)->sc_handle,84) & 0x3F)
  140. BOOL atrt_Get_Audio_Attr            ( S_SC_STORAGE *st, AUDIO_ATTRIBUTES *buffer, int stream );
  141. BOOL atrt_Get_Audio_MultiChanel_Attr( S_SC_STORAGE *st, S_MU_A_ATR       *buffer, int stream );
  142. BOOL atrt_Get_SP_Attr               ( S_SC_STORAGE *st, S_SP_ATR         *buffer, int stream );
  143. #endif /* NO_SCPAD */
  144. //
  145. //  Specific sizes for VMGI / VTSI data
  146. //
  147. #define VMGI_MAT_SIZE 348
  148. #define VTSI_MAT_SIZE 984
  149. /* C_VMG class translation */
  150. void vmg_construct(S_FPOS *address, WORD country, WORD language);
  151. void vmg_delete( void );
  152. void vmg_GetVTS( S_FPOS *fposp,  int VTSN );
  153. WORD vmg_Get_PTL_ID(  WORD level, int VTSN);
  154. WORD vmg_Get_Menu_Structure( WORD VMG_Parental_ID );
  155. #define vmg_GetTT( buffer, TTN ) tt_Get_TT_SRP( buffer, TTN)
  156. #ifdef NO_VMGI_DATA_REDUCTION
  157. void vmg_GetVolumeID( VOLUME_ID *buffer );
  158. #define vmg_Get_VTS_Count() ((int) buff2word(gns.dvd.vmg.st.buffer,62) & 0x7F)
  159. #define vmg_Get_CAT() ((BYTE) gns.dvd.vmg.st.buffer[35])
  160. #else
  161. #define vmg_Get_VTS_Count() ((int) gns.dvd.vmg.vts_count&0x7F)
  162. #define vmg_Get_CAT() ( gns.dvd.vmg.vol_cat)
  163. #define vmg_GetVolumeID( p_vol_id ) *(VOLUME_ID *)p_vol_id = gns.dvd.vmg.vol_id
  164. #endif
  165. /* C_VTS class translation */
  166. BOOL  vts_construct( S_FPOS *address ,WORD language);
  167. void vts_delete(void );
  168. #define  vts_Get_CAT( st ) ( (BYTE) (st)->buffer[35] )
  169. BOOL  vts_GetPTT( S_PGC_SRP *buffer, int VTS_TTN, int PTTN);
  170. DWORD vts_GetTimeVOBU( int PGCN, int TIME);
  171. int   vts_Get_PTTN( int PGCN, int PGN );
  172. WORD  vts_Get_Menu_Structure( WORD VMG_Parental_ID );
  173. /* C_DOM, C_TITLE_DOM, C_MENU_DOM translation */
  174. #ifdef NO_SCPAD
  175. void dom_init( S_DOM *dom, int type, BYTE *addr );
  176. #else
  177. void dom_init( S_DOM *dom, int type, WORD sc_handle );
  178. #endif
  179. void dom_delete( S_DOM *dom );
  180. void dom_SetPGC_table( S_DOM *dom, S_FPOS *pgct ) ;
  181. void title_dom_construct( S_DOM *dom, LBN VOBSaddress, S_FPOS *attr, S_FPOS *pgct );
  182. void title_dom_GetPGC( S_DOM *dom, S_FPOS *fposp, S_PGC_SRP *srp, WORD ptl_lvl);
  183. void menu_dom_construct( S_DOM *dom, LBN VOBSaddress, S_FPOS *attr, S_FPOS *pgct, WORD language  );
  184. void menu_dom_GetPGC( S_DOM *dom, S_FPOS *fposp, S_PGC_SRP *srp, WORD ptl_lvl, BOOL menu_id );
  185. #endif //__MAPPING_H