diff libmpdvdkit2/nav_types.h @ 15874:483e955893b8

update libdvdread to v0.9.4
author aurel
date Thu, 30 Jun 2005 22:48:26 +0000
parents 25df9508f9a8
children 0783dd397f74
line wrap: on
line diff
--- a/libmpdvdkit2/nav_types.h	Thu Jun 30 22:41:40 2005 +0000
+++ b/libmpdvdkit2/nav_types.h	Thu Jun 30 22:48:26 2005 +0000
@@ -2,7 +2,7 @@
 #define NAV_TYPES_H_INCLUDED
 
 /*
- * Copyright (C) 2000, 2001 Håkan Hjort <d95hjort@dtek.chalmers.se>
+ * Copyright (C) 2000, 2001, 2002 Håkan Hjort <d95hjort@dtek.chalmers.se>
  *
  * Modified for use with MPlayer, changes contained in libdvdread_changes.diff.
  * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
@@ -34,7 +34,7 @@
  */
 
 #include <inttypes.h>
-#include "ifo_types.h" // only dvd_time_t, vm_cmd_t and user_ops_t
+#include "ifo_types.h" /* only dvd_time_t, vm_cmd_t and user_ops_t */
 
 
 #undef ATTRIBUTE_PACKED
@@ -74,14 +74,14 @@
  * PCI General Information 
  */
 typedef struct {
-  uint32_t nv_pck_lbn;
-  uint16_t vobu_cat;
-  uint16_t zero1;
-  user_ops_t vobu_uop_ctl;
-  uint32_t vobu_s_ptm;
-  uint32_t vobu_e_ptm;
-  uint32_t vobu_se_e_ptm;
-  dvd_time_t e_eltm;
+  uint32_t nv_pck_lbn;      /**< sector address of this nav pack */
+  uint16_t vobu_cat;        /**< 'category' of vobu */
+  uint16_t zero1;           /**< reserved */
+  user_ops_t vobu_uop_ctl;  /**< UOP of vobu */
+  uint32_t vobu_s_ptm;      /**< start presentation time of vobu */
+  uint32_t vobu_e_ptm;      /**< end presentation time of vobu */
+  uint32_t vobu_se_e_ptm;   /**< end ptm of sequence end in vobu */
+  dvd_time_t e_eltm;        /**< Cell elapsed time */
   char vobu_isrc[32];
 } ATTRIBUTE_PACKED pci_gi_t;
 
@@ -89,26 +89,32 @@
  * Non Seamless Angle Information
  */
 typedef struct {
-  uint32_t nsml_agl_dsta[9]; 
+  uint32_t nsml_agl_dsta[9];  /**< address of destination vobu in AGL_C#n */
 } ATTRIBUTE_PACKED nsml_agli_t;
 
 /** 
  * Highlight General Information 
+ *
+ * For btngrX_dsp_ty the bits have the following meaning:
+ * 000b: normal 4/3 only buttons
+ * XX1b: wide (16/9) buttons
+ * X1Xb: letterbox buttons
+ * 1XXb: pan&scan buttons
  */
 typedef struct {
-  uint16_t hli_ss; ///< only low 2 bits
-  uint32_t hli_s_ptm;
-  uint32_t hli_e_ptm;
-  uint32_t btn_se_e_ptm;
+  uint16_t hli_ss; /**< status, only low 2 bits 0: no buttons, 1: different 2: equal 3: eual except for button cmds */
+  uint32_t hli_s_ptm;              /**< start ptm of hli */
+  uint32_t hli_e_ptm;              /**< end ptm of hli */
+  uint32_t btn_se_e_ptm;           /**< end ptm of button select */
 #ifdef WORDS_BIGENDIAN
-  unsigned int zero1 : 2;
-  unsigned int btngr_ns : 2;
-  unsigned int zero2 : 1;
-  unsigned int btngr1_dsp_ty : 3;
-  unsigned int zero3 : 1;
-  unsigned int btngr2_dsp_ty : 3;
-  unsigned int zero4 : 1;
-  unsigned int btngr3_dsp_ty : 3;
+  unsigned int zero1 : 2;          /**< reserved */
+  unsigned int btngr_ns : 2;       /**< number of button groups 1, 2 or 3 with 36/18/12 buttons */
+  unsigned int zero2 : 1;          /**< reserved */
+  unsigned int btngr1_dsp_ty : 3;  /**< display type of subpic stream for button group 1 */
+  unsigned int zero3 : 1;          /**< reserved */
+  unsigned int btngr2_dsp_ty : 3;  /**< display type of subpic stream for button group 2 */
+  unsigned int zero4 : 1;          /**< reserved */
+  unsigned int btngr3_dsp_ty : 3;  /**< display type of subpic stream for button group 3 */
 #else
   unsigned int btngr1_dsp_ty : 3;
   unsigned int zero2 : 1;
@@ -119,56 +125,69 @@
   unsigned int btngr2_dsp_ty : 3;
   unsigned int zero3 : 1;
 #endif
-  uint8_t btn_ofn;
-  uint8_t btn_ns;     ///< only low 6 bits
-  uint8_t nsl_btn_ns; ///< only low 6 bits
-  uint8_t zero5;
-  uint8_t fosl_btnn;  ///< only low 6 bits
-  uint8_t foac_btnn;  ///< only low 6 bits
+  uint8_t btn_ofn;     /**< button offset number range 0-255 */
+  uint8_t btn_ns;      /**< number of valid buttons  <= 36/18/12 (low 6 bits) */  
+  uint8_t nsl_btn_ns;  /**< number of buttons selectable by U_BTNNi (low 6 bits)   nsl_btn_ns <= btn_ns */
+  uint8_t zero5;       /**< reserved */
+  uint8_t fosl_btnn;   /**< forcedly selected button  (low 6 bits) */
+  uint8_t foac_btnn;   /**< forcedly activated button (low 6 bits) */
 } ATTRIBUTE_PACKED hl_gi_t;
 
 
 /** 
  * Button Color Information Table 
+ * Each entry beeing a 32bit word that contains the color indexs and alpha
+ * values to use.  They are all represented by 4 bit number and stored
+ * like this [Ci3, Ci2, Ci1, Ci0, A3, A2, A1, A0].   The actual palette
+ * that the indexes reference is in the PGC.
+ * @TODO split the uint32_t into a struct
  */
 typedef struct {
-  uint32_t btn_coli[3][2];
+  uint32_t btn_coli[3][2];  /**< [button color number-1][select:0/action:1] */
 } ATTRIBUTE_PACKED btn_colit_t;
 
 /** 
  * Button Information
+ *
+ * NOTE: I've had to change the structure from the disk layout to get
+ * the packing to work with Sun's Forte C compiler.
+ * The 4 and 7 bytes are 'rotated' was: ABC DEF GHIJ  is: ABCG DEFH IJ
  */
 typedef struct {
 #ifdef WORDS_BIGENDIAN
-  unsigned int btn_coln         : 2;
-  unsigned int x_start          : 10;
-  unsigned int zero1            : 2;
-  unsigned int x_end            : 10;
-  unsigned int auto_action_mode : 2;
-  unsigned int y_start          : 10;
-  unsigned int zero2            : 2;
-  unsigned int y_end            : 10;
+  unsigned int btn_coln         : 2;  /**< button color number */
+  unsigned int x_start          : 10; /**< x start offset within the overlay */
+  unsigned int zero1            : 2;  /**< reserved */
+  unsigned int x_end            : 10; /**< x end offset within the overlay */
+
+  unsigned int zero3            : 2;  /**< reserved */
+  unsigned int up               : 6;  /**< button index when pressing up */
 
-  unsigned int zero3            : 2;
-  unsigned int up               : 6;
-  unsigned int zero4            : 2;
-  unsigned int down             : 6;
-  unsigned int zero5            : 2;
-  unsigned int left             : 6;
-  unsigned int zero6            : 2;
-  unsigned int right            : 6;
+  unsigned int auto_action_mode : 2;  /**< 0: no, 1: activated if selected */
+  unsigned int y_start          : 10; /**< y start offset within the overlay */
+  unsigned int zero2            : 2;  /**< reserved */
+  unsigned int y_end            : 10; /**< y end offset within the overlay */
+
+  unsigned int zero4            : 2;  /**< reserved */
+  unsigned int down             : 6;  /**< button index when pressing down */
+  unsigned int zero5            : 2;  /**< reserved */
+  unsigned int left             : 6;  /**< button index when pressing left */
+  unsigned int zero6            : 2;  /**< reserved */
+  unsigned int right            : 6;  /**< button index when pressing right */
 #else
   unsigned int x_end            : 10;
   unsigned int zero1            : 2;
   unsigned int x_start          : 10;
   unsigned int btn_coln         : 2;
+
+  unsigned int up               : 6;
+  unsigned int zero3            : 2;
+
   unsigned int y_end            : 10;
   unsigned int zero2            : 2;
   unsigned int y_start          : 10;
   unsigned int auto_action_mode : 2;
 
-  unsigned int up               : 6;
-  unsigned int zero3            : 2;
   unsigned int down             : 6;
   unsigned int zero4            : 2;
   unsigned int left             : 6;
@@ -206,27 +225,27 @@
  */
 typedef struct {
   uint32_t nv_pck_scr;
-  uint32_t nv_pck_lbn;
-  uint32_t vobu_ea;
-  uint32_t vobu_1stref_ea;
-  uint32_t vobu_2ndref_ea;
-  uint32_t vobu_3rdref_ea;
-  uint16_t vobu_vob_idn;
-  uint8_t  zero1;
-  uint8_t  vobu_c_idn;
-  dvd_time_t c_eltm;
+  uint32_t nv_pck_lbn;      /**< sector address of this nav pack */
+  uint32_t vobu_ea;         /**< end address of this VOBU */
+  uint32_t vobu_1stref_ea;  /**< end address of the 1st reference image */
+  uint32_t vobu_2ndref_ea;  /**< end address of the 2nd reference image */
+  uint32_t vobu_3rdref_ea;  /**< end address of the 3rd reference image */
+  uint16_t vobu_vob_idn;    /**< VOB Id number that this VOBU is part of */
+  uint8_t  zero1;           /**< reserved */
+  uint8_t  vobu_c_idn;      /**< Cell Id number that this VOBU is part of */
+  dvd_time_t c_eltm;        /**< Cell elapsed time */
 } ATTRIBUTE_PACKED dsi_gi_t;
 
 /**
  * Seamless Playback Information
  */
 typedef struct {
-  uint16_t category; ///< category of seamless VOBU
-  uint32_t ilvu_ea;  ///< end address of interleaved Unit (sectors)
-  uint32_t ilvu_sa;  ///< start address of next interleaved unit (sectors)
-  uint16_t size;     ///< size of next interleaved unit (sectors)
-  uint32_t vob_v_s_s_ptm; ///< video start ptm in vob
-  uint32_t vob_v_e_e_ptm; ///< video end ptm in vob
+  uint16_t category;       /**< 'category' of seamless VOBU */
+  uint32_t ilvu_ea;        /**< end address of interleaved Unit */
+  uint32_t ilvu_sa;        /**< start address of next interleaved unit */
+  uint16_t size;           /**< size of next interleaved unit */
+  uint32_t vob_v_s_s_ptm;  /**< video start ptm in vob */
+  uint32_t vob_v_e_e_ptm;  /**< video end ptm in vob */
   struct {
     uint32_t stp_ptm1;
     uint32_t stp_ptm2;
@@ -239,8 +258,8 @@
  * Seamless Angle Infromation for one angle
  */
 typedef struct {
-    uint32_t address; ///< Sector offset to next ILVU, high bit is before/after
-    uint16_t size;    ///< Byte size of the ILVU poited to by address.
+    uint32_t address; /**< offset to next ILVU, high bit is before/after */
+    uint16_t size;    /**< byte size of the ILVU pointed to by address */
 } ATTRIBUTE_PACKED sml_agl_data_t;
 
 /**
@@ -254,11 +273,11 @@
  * VOBU Search Information 
  */
 typedef struct {
-  uint32_t next_video; ///< Next vobu that contains video
-  uint32_t fwda[19];   ///< Forwards, time
+  uint32_t next_video; /**< Next vobu that contains video */
+  uint32_t fwda[19];   /**< Forwards, time */
   uint32_t next_vobu;
   uint32_t prev_vobu;
-  uint32_t bwda[19];   ///< Backwards, time
+  uint32_t bwda[19];   /**< Backwards, time */
   uint32_t prev_video;
 } ATTRIBUTE_PACKED vobu_sri_t;
 
@@ -268,8 +287,8 @@
  * Synchronous Information
  */ 
 typedef struct {
-  uint16_t a_synca[8];   ///< Sector offset to first audio packet for this VOBU
-  uint32_t sp_synca[32]; ///< Sector offset to first subpicture packet
+  uint16_t a_synca[8];   /**< offset to first audio packet for this VOBU */
+  uint32_t sp_synca[32]; /**< offset to first subpicture packet */
 } ATTRIBUTE_PACKED synci_t;
 
 /**