dvdpe_d.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:7k
源码类别:

DVD

开发平台:

C/C++

  1. //
  2. // FILE 
  3. // dvdpe_d.h
  4. //
  5. // DESCRIPTION
  6. // DVD navigation related data structure
  7. //
  8. // *NOTE* all structure in big-endian format
  9. //
  10. #ifndef __DVDPE_D_H
  11. #define __DVDPE_D_H
  12. //
  13. // PCI 
  14. // {
  15. //   PCI_GI 60  PCI general information
  16. //   NSML_AGLI 36  Angle Information for non-seamless
  17. //   HLI 694 Highlight Information (..)
  18. //   RECI 189 Recording Information (ISRC)
  19. // }
  20. //
  21. // PCI_GI 60
  22. // {
  23. //   NV_PCK_LBN 4   LBN of Naviation pack
  24. //   VOBU_CAT 2   Category of VOBU
  25. //   <reserved> 2
  26. //   VOBU_UOP_CTL 4   User Operation control of VOBU
  27. //   VOBU_S_PTM 4   Start PTM of VOBU
  28. //   VOBU_E_PTM 4   End PTM of VOBU
  29. //   VOBU_SE_E_PTM 4   End PTM of sequence end in VOBU (??)
  30. //   C_ELTM 4   Cell Elasped Time
  31. //   <reserved> 32
  32. // }
  33. typedef struct {
  34.   UINT32  NV_PCK_LBN;             // 4
  35.   UINT16 VOBU_CAT;               // 2
  36.   UINT16 reserved_0[1];          // 2
  37.   UINT32 VOBU_UOP_CTL;           // 4
  38.   UINT32 VOBU_S_PTM;             // 4
  39.   UINT32 VOBU_E_PTM;             // 4
  40.   UINT32  VOBU_SE_E_PTM;          // 4
  41.   UINT32 C_ELTM;                 // 4
  42.   UINT32 reserved_1[8];          // 32
  43. } t_pci_gi; // 60
  44. // NSML_AGLI 36
  45. // {
  46. //   NSML_AGL_C_DSTA 36
  47. // }
  48. typedef struct {
  49.   UINT32 NSML_AGL_C_DSTA[9];  
  50. } t_nsml_agli;
  51. // BTN_POSI 6
  52. // {
  53. //   POSI 6
  54. // }
  55. typedef struct  {
  56.   UINT8 POSI[6];
  57. } t_btn_posi;
  58. // ADJBTN_POSI 4
  59. // {
  60. //   UP 1
  61. //   DOWN 1
  62. //   LEFT 1
  63. //   RIGHT 1
  64. // }
  65. typedef struct {
  66.   UINT8 DIR[4]; //up,down,left,right  
  67. } t_ajbtn_posi;
  68. // NAV_CMD
  69. // {
  70. //   CMD 8
  71. // }
  72. typedef struct {
  73.   UINT8 CMD[8];
  74. } t_nav_cmd; // 8
  75. // BTN_COLI
  76. // {
  77. //   SL_COLI 4   color during selected
  78. //   AC_COLI 4   color during action
  79. // }
  80. typedef struct {
  81.   UINT32 SL_COLI;
  82.   UINT32 AC_COLI;
  83. } t_btn_coli;
  84. // BTNI 18
  85. // {
  86. //   BTN_POSI 6
  87. //   AJBTN_POSI 4
  88. //   NAV_CMD 8
  89. // }
  90. typedef struct {
  91.   t_btn_posi BTN_POSI __attribute__((packed));
  92.   t_ajbtn_posi AJBTN_POSI __attribute__((packed));
  93.   t_nav_cmd BTN_CMD __attribute__((packed)); 
  94. } t_btni; // 18
  95. // HLI 694
  96. // {
  97. //   HLI_GI 22
  98. //   BTN_COLI 3*8
  99. //   BTNI 36*18
  100. // }
  101. typedef struct {
  102.   // hl_gi
  103.   UINT16 HLI_SS __attribute__((packed));
  104.   UINT32 HLI_S_PTM __attribute__((packed));
  105.   UINT32 HLI_E_PTM __attribute__((packed));
  106.   UINT32 BTN_SL_E_PTM __attribute__((packed));
  107.   UINT16 BTN_MD __attribute__((packed));
  108.   UINT8 BTM_OFN __attribute__((packed));
  109.   UINT8 BTN_Ns __attribute__((packed));
  110.   UINT8 NSL_BTN_Ns __attribute__((packed));
  111.   UINT8 reserved __attribute__((packed));
  112.   UINT8 FOSL_BTNN __attribute__((packed));
  113.   UINT8 FOAC_BTNN __attribute__((packed));
  114.   t_btn_coli BTN_COLI[3] __attribute__((packed));
  115.   t_btni BTNI[36] __attribute__((packed));
  116. } t_hli;
  117. typedef struct {
  118.   t_pci_gi PCI_GI; // __attribute__((packed)); // 60
  119.   t_nsml_agli NSML_AGLI __attribute__((packed)); // 36
  120.   t_hli HLI __attribute__((packed));
  121. } t_pci_no_reci;
  122. #define t_pci t_pci_no_reci
  123. //
  124. // DSI
  125. //
  126. //
  127. // DSI
  128. // {
  129. //   DSI_GI 32
  130. //   SML_PBI 148
  131. //   VOBU_SRI 168
  132. //   SYNCI 144
  133. //   <reserved> 471
  134. // }
  135. //
  136. // DSI_GI 32
  137. // {
  138. //   NV_PCK_SCR 4
  139. //   NV_PCK_LBN 4
  140. //   VOBU_EA 4
  141. //   VOBU_1STREF_EA 4
  142. //   VOBU_2NDREF_EA 4
  143. //   VOBU_3RDREF_EA 4
  144. //   VOBU_VOB_IDN 2
  145. //   <reserved> 1
  146. //   VOBU_C_IDN 1
  147. //   C_ELTM 4
  148. // }
  149. typedef struct {
  150.   UINT32 NV_PCK_SCR ; // 4
  151.   UINT32 NV_PCK_LBN ; // 4
  152.   UINT32 VOBU_EA ; // 4
  153.   UINT32 VOBU_1STREF_EA ; // 4
  154.   UINT32 VOBU_2NDREF_EA ; // 4
  155.   UINT32 VOBU_3RDREF_EA ; // 4
  156.   UINT16 VOBU_VOB_IDN ; // 2
  157.   UINT8 reserved ; // 1
  158.   UINT8 VOBU_C_IDN ; // 1
  159.   UINT32 C_ELTM ; // 4
  160. } t_dsi_gi; // 32
  161. typedef struct {
  162.   UINT32 VOB_A_STP_PTM1;
  163.   UINT32 VOB_A_STP_PTM2;
  164. } t_vob_a_stp_ptm; // 8
  165. typedef struct {
  166.   UINT32 VOB_A_GAP_LEN1;
  167.   UINT32 VOB_A_GAP_LEN2;
  168. } t_vob_a_gap_len; // 8
  169. #define VOBU_SML_CAT_PREU (1<<15)
  170. #define VOBU_SML_CAT_ILVU (1<<14)
  171. #define VOBU_SML_CAT_UnitStart (1<<13)
  172. #define VOBU_SML_CAT_UnitEnd (1<<12)
  173. // SML_PBI 148
  174. // {
  175. //   VOBU_SML_CAT 2
  176. //   ILVU_EA 4
  177. //   NXT_ILVU_SA 4
  178. //   NXT_ILVU_SZ 2
  179. //   VOB_V_S_PTM 4
  180. //   VOB_V_E_PTM 4
  181. //   VOB_A_STP_PTM[8] 64
  182. //   VOB_A_GAP_PTM[8] 64
  183. // }
  184. typedef struct {
  185.   UINT16 VOBU_SML_CAT __attribute__((packed)); // 2
  186.   UINT32 ILVU_EA __attribute__((packed)); // 4
  187.   UINT32 NXT_ILVU_SA __attribute__((packed)); // 4
  188.   UINT16 NXT_ILVU_SZ __attribute__((packed)); // 2
  189.   UINT32 VOB_V_S_PTM __attribute__((packed)); // 4
  190.   UINT32 VOB_V_E_PTM __attribute__((packed)); // 4
  191.   t_vob_a_stp_ptm VOB_A_STP_PTM[8] __attribute__((packed)); // 64
  192.   t_vob_a_gap_len VOB_A_GAP_LEN[8] __attribute__((packed)); // 64
  193. } t_sml_pbi; // 148
  194. // SML_AGL_CN_DSTA
  195. // {
  196. //   AGL_C
  197. //   AGL_C_ILVU
  198. // }
  199. typedef struct {
  200.   UINT32 AGL_C __attribute__((packed));
  201.   UINT16 AGL_C_ILVU __attribute__((packed));
  202. } t_sml_agl_cn_dsta; // 6
  203. // SML_AGLI
  204. // {
  205. //   SML_AGL_CN_DSTA[9]
  206. // }
  207. typedef struct {
  208.   t_sml_agl_cn_dsta SML_AGL_C_DSTA[9] __attribute__((packed));  
  209. } t_sml_agli; // 54
  210. //
  211. // VOBU_SRI index table
  212. // VI4-145
  213. //
  214. enum {
  215. FWDI_VIDEO = 0, // 0
  216. FWDI_240, // 1
  217. FWDI_120, // 2
  218. FWDI_60, // 3
  219. FWDI_20, // 4
  220. FWDI_15, // 5
  221. FWDI_14, // 6
  222. FWDI_13, // 7
  223. FWDI_12, // 8
  224. FWDI_11, // 9
  225. FWDI_10, // 10
  226. FWDI_9, // 11
  227. FWDI_8, // 12
  228. FWDI_7, // 13
  229. FWDI_6, // 14
  230. FWDI_5, // 15
  231. FWDI_4, // 16
  232. FWDI_3, // 17
  233. FWDI_2, // 18
  234. FWDI_1, // 19
  235. FWDI_NEXT, // 20
  236. BWDI_PREV, // 21
  237. BWDI_1, // 22
  238. BWDI_2, // 23
  239. BWDI_3, // 24
  240. BWDI_4, // 25
  241. BWDI_5, // 26
  242. BWDI_6, // 27
  243. BWDI_7, // 28
  244. BWDI_8, // 29
  245. BWDI_9, // 30
  246. BWDI_10, // 31
  247. BWDI_11, // 32
  248. BWDI_12, // 33
  249. BWDI_13, // 34
  250. BWDI_14, // 35
  251. BWDI_15, // 36
  252. BWDI_20, // 37
  253. BWDI_60, // 38
  254. BWDI_120, // 39
  255. BWDI_240, // 40
  256. BWDI_VIDEO, // 41
  257. };
  258. // VOBU_SRI
  259. // {
  260. //   SA[42] 168
  261. // }
  262. typedef struct
  263. {
  264.   UINT32 SA[42]; // total 42 (*4=168b) search address
  265. } t_vobu_sri;
  266. // SYNCI 144
  267. // {
  268. //   A_SYNCA 16
  269. //   SP_SYNCA 128
  270. // }
  271. typedef struct {
  272.   UINT16 A_SYNCA[8];
  273.   UINT32 SP_SYNCA[32];
  274. } t_synci;
  275. // DSI
  276. // {
  277. //   DSI_GI 32
  278. //   SML_PBI 148
  279. //   SML_AGLI 54
  280. //   VOBU_SRI 168
  281. // }
  282. typedef struct {
  283.   t_dsi_gi DSI_GI; // 32  (4*8)
  284.   t_sml_pbi SML_PBI; // 148 (4*37)
  285.   t_sml_agli SML_AGLI __attribute__((packed)); // 54 (4*13.5)
  286.   t_vobu_sri VOBU_SRI __attribute__((packed)); // 168 (4*42)
  287.   t_synci SYNCI __attribute__((packed)); // 16 + 128
  288. //  UINT16 unused __attribute__((packed));
  289. } t_dsi; // 402
  290. #endif/*__DVDPE_D_H*/