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
libdvdread [2015/01/16 11:10]
beandog
libdvdread [2015/01/16 16:21] (current)
beandog
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''​ - first (and only possible) PGC for VMG IFO+      * **''​pgc_t''​** ''​first_play_pgc''​ - **VMG IFO ONLY**, ​first (and only possible) PGC for VMG IFO
         * ''​zero_1''​ - reserved / unused         * ''​zero_1''​ - reserved / unused
         * ''​nr_of_programs''​ - number of programs         * ''​nr_of_programs''​ - number of programs
Line 160: Line 160:
           * ''​second''​           * ''​second''​
           * ''​frame_u''​ - the two high bits are the framerate           * ''​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''​ - **VTS IFOs only**, 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''​ - **VTS IFOs only**, Part of Title Search Pointer Table
 +        * ''​nr_of_srpts''​
 +        * ''​zero_1''​
 +        * ''​last_byte''​
 +        * **''​ttu_t''​** title
 +        * ''​ttu_offset''​
 +      * **''​pgcit_t''​** ''​vts_pgcit''​ - **VTS IFOs only**, Program Chain Information Table (see above) ​     ​
 +      * **''​vts_tmapt_t''​** ''​vts_tmapt''​ - **VTS IFOs only**, 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''​ **VTS IFOs only**, VTS cell address table
 +      * **''​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