Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
libdvdread [2015/01/16 11:05]
beandog
libdvdread [2015/01/16 16:08]
beandog
Line 136: Line 136:
       * ''​last_byte''​ - end address, last byte of last entry       * ''​last_byte''​ - end address, last byte of last entry
       * **''​title_info_t''​** ''​title''​       * **''​title_info_t''​** ''​title''​
-        * **''​playback_type_t''​** ​**pb_ty**+        * **''​playback_type_t''​** ​''​pb_ty''​
           * ''​zero_1''​           * ''​zero_1''​
           * ''​multi_or_random_pgc_title''​           * ''​multi_or_random_pgc_title''​
Line 151: Line 151:
         * ''​vts_ttn''​ - title number within VTS, VTS_TTN         * ''​vts_ttn''​ - title number within VTS, VTS_TTN
         * ''​title_set_sector''​ - starting sector for VTS         * ''​title_set_sector''​ - starting sector for VTS
 +      * **''​pgc_t''​** ''​first_play_pgc''​ - **VMG IFO ONLY**, first (and only possible) PGC for VMG IFO
 +        * ''​zero_1''​ - reserved / unused
 +        * ''​nr_of_programs''​ - number of programs
 +        * ''​nr_of_cells''​ number of cells
 +        * **''​dvd_time_t''​** ''​playback_time''​
 +          * ''​hour''​
 +          * ''​minute''​
 +          * ''​second''​
 +          * ''​frame_u''​ - the two high bits are the framerate
 +        * **''​user_ops_t''​** ''​prohibited_ops''​
 +          * (skipping display of **''​user_ops_t''​** here, see source code)
 +        * ''​audio_control[8]''​ - audio stream control
 +        * ''​subp_control[32]''​ - sub-picture stream control
 +        * ''​next_pgc_nr''​ - next PGCN
 +        * ''​prev_pgc_nr''​ - previous PGCN
 +        * ''​goup_pgc_nr''​ - group PGCN
 +        * ''​still_time''​ - PGC still time, 255 = infinite
 +        * ''​pg_playback_mode''​ - PG playback mode, 0=sequential,​ otherwise bit7 indicates random (0) or shuffle (1), and the program count is in bits6-0
 +        * ''​palette[16]''​ - palette (0, Y, Cr, Cb)
 +        * ''​command_tbl_offset''​ - offset within PGC to commands
 +        * ''​program_map_offset''​ - offset within PGC to program map
 +        * ''​cell_playback_offset''​ - offset within PGC to cell playback information table
 +        * ''​cell_position_offset''​ - offset within PGC to cell position information table
 +        * **''​pgc_command_tbl_t''​** ''​command_tbl''​
 +          * ''​nr_of_pre''​ - number of pre commands
 +          * ''​nr_of_post''​ - number of post commands
 +          * ''​nr_of_cell''​ - number of cell commands
 +          * ''​zero_1''​ - end address relative to command table
 +          * **''​vm_cmd_t''​** ''​pre_cmds''​
 +            * ''​bytes[8]''​
 +          * **''​vm_cmd_t''​** ''​post_cmds''​
 +            * ''​bytes[8]''​
 +          * **''​vm_cmd_t''​** ''​cell_cmds''​
 +            * ''​bytes[8]''​
 +        * **''​pgc_program_map_t''​** ''​program_map''​ - PGC program map (simple typedef of uint8_t)
 +        * **''​cell_playback_t''​** ''​cell_playback''​
 +          * ''​block_mode''​
 +          * ''​block_type''​
 +          * ''​seamless_play''​
 +          * ''​interleaved''​
 +          * ''​stc_discontinuity''​
 +          * ''​seamless_angle''​
 +          * ''​playback_mode''​
 +          * ''​restricted''​
 +          * ''​unknown2''​
 +          * ''​still_time''​
 +          * ''​cell_cmd_nr''​
 +          * **''​dvd_time_t''​** ''​playback_time''​
 +            * ''​hour''​
 +            * ''​minute''​
 +            * ''​second''​
 +            * ''​frame_u''​
 +          * ''​first_sector''​
 +          * ''​first_ilvu_end_sector''​
 +          * ''​last_vobu_start_sector''​
 +          * ''​last_sector''​
 +        * **''​cell_position_t''​** ''​cell_position''​ - cell position information
 +          * ''​vob_id_nr''​
 +          * ''​zero_1''​
 +          * ''​cell_nr''​
 +        * ''​ref_count''​
 +      * **''​ptl_mait_t''​** ''​ptl_mait''​ - **VMG IFO ONLY**, parental management information table
 +        * ''​nr_of_countries''​ - number of countries
 +        * ''​nr_of_vtss''​ - number of title sets
 +        * ''​last_byte''​ - end address, last byte of PTL_MAIT
 +        * **''​ptl_mait_country_t''​** ''​countries''​
 +          * ''​country_code''​
 +          * ''​zero_1''​
 +          * ''​pf_ptl_mai_start_byte''​
 +          * ''​zero_2''​
 +          * **''​pf_level_t''​** ''​pf_ptl_mai''​
 +      * **''​vts_atrt_t''​** ''​vts_atrt''​ - **VMG IFO ONLY**, VTS Attribution Table
 +        * ''​nr_of_vtss''​ - number of title sets
 +        * ''​zero_1''​
 +        * ''​last_byte''​ - end address (last byte of last VTS_ATRT)
 +        * **''​vts_attributes_t''​** ''​vts''​ - VTS attributes
 +          * ''​last_byte''​ - end address
 +          * ''​vts_cat''​
 +          * **''​video_attr_t''​** ''​vtsm_vobs_attr''​ - video attributes (see above)
 +          * ''​nr_of_vtsm_audio_streams''​ - limited to maximum of 1 for VMG IFO
 +          * **''​audio_attr_t''​** ''​vtsm_audio_attr''​ - audio attributes (see above)
 +          * **''​audio_attr_t''​** ''​zero_2[7]''​
 +          * ''​zero_3[16]''​
 +          * ''​zero_4''​
 +          * ''​nr_of_vtsm_subp_streams''​ - number of sub-picture streams
 +          * **''​subp_attr_t''​** ''​vtsm_subp_attr''​ - sub-picture attributes (see above)
 +          * **''​subp_attr_t''​** ''​zero_5[27]''​
 +          * ''​zero_6[2]''​
 +          * **''​video_attr_t''​** ''​vtstt_vobs_video_attr''​
 +          * ''​zero_7''​
 +          * ''​nr_of_vtstt_audio_streams''​
 +          * **''​audio_attr_t''​** ''​vtstt_audio_attr[8]''​
 +          * ''​zero_8[16]''​
 +          * ''​zero_9''​
 +          * ''​nr_of_vtstt_subp_streams''​
 +          * **''​subp_attr_t''​** - vtstt_subp_attr[32]
 +        * ''​vts_atrt_offsets''​ - offsets table for each vts_attributes
 +      * **''​txtdt_mgi_t''​** ''​txtdt_mgi''​ - **VMG IFO ONLY**, Text Data Manager Information
 +        * ''​disc_name[14]''​ - ?
 +        * ''​nr_of_language_units''​ - number of language units
 +        * ''​last_byte''​
 +        * **''​txtdt_lu_t''​** ''​lu''​ - language unit
 +          * ''​lang_code''​
 +          * ''​unknown''​
 +          * ''​txtdt_start_byte''​ - prt, rel start of vmg_txtdt_mgi
 +          * **''​txtdt_t''​** ''​txtdt''​
 +            * ''​last_byte''​
 +            * ''​offsets[100]''​
 +      * **''​pgci_ut_t''​** ''​pgci_ut''​ - **VMG AND VTS**, Menu PGCI Unit Table
 +        * ''​nr_of_lus''​ - number of language units
 +        * ''​zero_1''​
 +        * ''​last_byte''​
 +        * **''​pgci_lu_t''​** ''​lu''​ - Menu PGCI Language Unit
 +          * ''​lang_code''​
 +          * ''​lang_extension''​
 +          * ''​exists''​
 +          * ''​lang_start_byte''​
 +          * **''​pgcit_t''​** ''​pgcit''​ - Program Chain Information Table
 +            * ''​nr_of_pgci_srp''​
 +            * ''​zero_1''​
 +            * ''​last_byte''​
 +            * **''​pgci_srp_t''​** ''​pgci_srp''​ - Program Chain Information Search Pointer
 +              * ''​entry_id''​
 +              * ''​block_mode''​
 +              * ''​block_type''​
 +              * ''​unknown1''​
 +              * ''​ptl_id_mask''​
 +              * ''​pgc_start_byte''​
 +              * **''​pgc_t''​** ''​pgc''​ (see above)
 +            * ''​ref_count''​
 +      * **''​c_adt_t''​** ''​menu_c_adt''​ - **VMG and VTS IFOs**, Cell Address Table
 +        * ''​nr_of_vobs''​ - number of VOBs (max 99)
 +        * ''​zero_1''​
 +        * ''​last_byte''​
 +        * **''​cell_adr_t''​** ''​cell_adr_table''​
 +          * ''​vob_id''​
 +          * ''​cell_id''​
 +          * ''​zero_1''​
 +          * ''​start_sector''​
 +          * ''​last_sector''​
 +      * **''​vobu_admap_t''​** ''​menu_vobu_admap''​ - **VMG and VTS IFOs**, VOBU Address Map
 +        * ''​last_byte''​
 +        * ''​vobu_start_sectors''​
 +      * **''​vtsi_mat_t''​** ''​vtsi_mat''​ - Video Title Set Information Management Table
 +        * ''​vts_identifier[12]''​ - VTS identifier
 +        * ''​vts_last_sector''​ - last sector of VTS (BUP)
 +        * ''​zero_1[12]''​ - reserved / unknown
 +        * ''​vtsi_last_sector''​ - last sector of VTS IFO
 +        * ''​zero_2''​
 +        * ''​specification_version''​
 +        * ''​vts_category''​ - VTS category
 +          * 0: unspecified
 +          * 1: karaoke
 +        * ''​zero_3''​
 +        * ''​zero_4''​
 +        * ''​zero_5''​
 +        * ''​zero_6[19]''​
 +        * ''​zero_7''​
 +        * ''​zero_8[32]''​
 +        * ''​zero_9''​
 +        * ''​zero_10[24]''​
 +        * ''​vtsi_last_byte''​ - last byte of VTS IFO
 +        * ''​zero_11''​
 +        * ''​zero_12[56]''​
 +        * ''​vtsm_vobs''​ - starting sector of VTS Menu VOBs
 +        * ''​vtstt_vobs''​ - starting sector of table of titles
 +      * **''​vts_ptt_srpt_t''​** ''​vts_ptt_srpt''​ - Part of Title Search Pointer Table
 +        * ''​nr_of_srpts''​
 +        * ''​zero_1''​
 +        * ''​last_byte''​
 +        * **''​ttu_t''​** title
 +        * ''​ttu_offset''​
 +      * **''​pgcit_t''​** ''​vts_pgcit''​ - Program Chain Information Table (see above) ​     ​
 +      * **''​vts_tmapt_t''​** ''​vts_tmapt''​ - time maps for each PGC
 +        * ''​nr_of_tmaps''​ - number of program chains
 +        * ''​zero_1''​
 +        * ''​last_byte''​ - end address (last byte of last VTS_TMAP)
 +        * **''​vts_tmap_t''​** ''​tmap''​
 +          * ''​tmu''​ - time unit, in seconds
 +          * ''​zero_1''​ - reserved / unknown / safe to ignore
 +          * ''​nr_of_entries''​ - number of entries in map; ''​0''​ for empty map
 +          * **''​map_ent_t''​** ''​map_ent''​ - time map entry (typedef as uint32_t)
 +      * **''​c_adt_t''​** ''​vts_c_adt''​
 +      * **''​vobu_admap_t''​** ''​vts_vobu_admap''​
     * [[VMGM]]     * [[VMGM]]
       * ''​VIDEO_TS.VOB''​       * ''​VIDEO_TS.VOB''​
- 
-  * **[[VMG]]** 
-    * vmgi_mat_t 
-    * playback_type_t 
-    * title_info_t 
-    * tt_srpt_t 
-    * pf_level_t 
-    * ptl_mait_country_t 
-    * ptl_mait_t 
-    * vts_attributes_t 
-    * vts_atrt_t 
-    * txtdt_t 
-    * txtdt_lu_t 
-    * txtdt_mgi_t 
-  * **[[VTS]]** 
-    * vtsi_mat_t 
-    * ptt_info_t 
-    * ttu_t 
-    * vts_ptt_srpt_t 
-    * map_ent_t 
-    * vts_tmap_t 
-    * vts_tmapt_t 
-  * **All [[IFO|IFOs]]** 
-    * ifo_handle_t 
- 
-<​code>​ 
-typedef struct { 
-  dvd_file_t *file; 
- 
-  /* VMGI */ 
-  vmgi_mat_t ​    ​*vmgi_mat;​ 
-  tt_srpt_t ​     *tt_srpt; 
-  pgc_t          *first_play_pgc;​ 
-  ptl_mait_t ​    ​*ptl_mait;​ 
-  vts_atrt_t ​    ​*vts_atrt;​ 
-  txtdt_mgi_t ​   *txtdt_mgi; 
- 
-  /* Common */ 
-  pgci_ut_t ​     *pgci_ut; 
-  c_adt_t ​       *menu_c_adt;​ 
-  vobu_admap_t ​  ​*menu_vobu_admap;​ 
- 
-  /* VTSI */ 
-  vtsi_mat_t ​    ​*vtsi_mat;​ 
-  vts_ptt_srpt_t *vts_ptt_srpt;​ 
-  pgcit_t ​       *vts_pgcit; 
-  vts_tmapt_t ​   *vts_tmapt; 
-  c_adt_t ​       *vts_c_adt; 
-  vobu_admap_t ​  ​*vts_vobu_admap;​ 
-} ifo_handle_t;​ 
-</​code>​ 

Navigation