====== libdvdread ====== * [[libdvdread wishlist]] * [[DVD Structure]] * [[ifoOpen]] * [[VMG]] - Video Manager Group * **''ifo_handle_t''** ''ifofile'' * **''dvd_file_t''** file * **''vmgi_mat_t''** ''vmgi_mat'' - [[VMGI]] - Video Manager Group IFO (''VIDEO_TS.IFO'', ''VIDEO_TS.BUP'') * ''vmg_identifier[12]'' - ''DVDVIDEO-VMG'' * ''vmg_last_sector'' - last sector of VMG set (last sector of ''VIDEO_TS.BUP'') * ''zero_1[12]'' - reserved / unknown * ''vmgi_last_sector'' last sector of ''VIDEO_TS.IFO'' * ''zero_2'' - reserved / unknown * ''specification_version'' - version number * ''vmg_category'' - VMG category; byte1=prohibited region mask * ''vmg_nr_of_volumes'' - number of volumes, as in physical sets of discs (metadata) * ''vmg_this_volume_nr'' - volume number this disc belongs to (metadata) * ''disc_side'' - physical side of this disc (metadata) * ''zero_3[19]'' - reserved / unknown * ''vmg_nr_of_title_sets'' - number of title sets (VTS, or non-VMG IFOs) * ''provider_identifier'' - 32 character string of provider id (metadata), usually blank * ''vmg_pos_code'' - VMG POS (?) * ''zero_4[24]'' - reserved / unknown * ''vmgi_last_byte'' - end byte address of ''VMGI_MAT'' * ''first_play_pgc'' - start address of ''FP_PGC'', the first, and only, and optional PGC for this (VMG) IFO * ''zero_5[56]'' - reserved / unknown * ''vmgm_vobs'' - starting sector of Menu VOB * ''tt_srpt'' - starting sector of table of titles, ''TT_SRPT'' * ''vmgm_pgci_ut'' - starting sector of menu program chain table, ''VMGM_PGCI_UT'' * ''ptl_mait'' - starting sector of parental management masks, ''VMG_PTL_MAIT'' * ''vts_atrt'' - starting sector of audio, subtitle attributes, ''VMG_VTS_ATRT'' * ''txtdt_mgi'' - starting sector of text data, ''VMG_TXTDT_MG'' * ''vmgm_c_adt'' - starting sector of menu cell address table, ''VMGM_C_ADT'' * ''vmgm_vobu_admap'' - starting sector of menu VOBU address map, ''VMGM_VOBU_ADMAP'' * ''zero_6[32]'' - reserved / unknown * **''video_attr_t''** ''vmgm_video_attr'' - VMG VOBs video attributes * ''mpeg_version'' - MPEG version * 0: MPEG-1 * 1: MPEG-2 * ''video_format'' - Video format * 0: NTSC * 2: PAL * ''display_aspect_ratio'' - aspect ratio * 0: 4:3 * 1: reserved * 2: reserved * 3: 16:9 * ''permitted_df'' - permitted display formats (?) * ''line21_cc_1'' - CC for line 21 field 1 in GOP (NTSC only) * ''line21_cc_2'' - CC for line 22 field 1 in GOP (NTSC only) * ''unknown1'' - reserved / unknown * ''bit_rate'' - ? * ''picture_size'' - video resolution * If format is NTSC: * 0: 720x480 * 1: 704x480 * 2: 352x480 * 3: 352x240 * If format is PAL: * 0: 720x576 * 1: 704x576 * 2: 352x576 * 3: 352x288 * ''letterboxed'' * 0: no * 1: yes * ''film_mode'' (if PAL) * 0: camera * 1: film * ''zero_7'' - reserved / unknown * ''nr_of_vmgm_audio_streams'' - number of audio streams in VMG VOBS, must be 0 or 1 * **''audio_attr_t''** ''vmgm_audio_attr'' - VMG VOBs audio attributes * ''audio_format'' - audio codec * 0: AC3 (Dolby Digital) * 1: unknown * 2: MPEG-1 * 3: MPEG-2EXT * 4: LPCM * 5: unknown * 6: DTS * 7: unknown * ''multichannel_extension'' - multichannel extension exists or not for karaoke mode * ''lang_type'' - language type (?) * 0: unspecified * 1: "per bytes 2&3" (DVD info spec) * ''application_mode'' (?) * 0: unspecified * 1: karaoke * 2: surround * ''quantization'' - quantization / dynamic range control (DRC) * If audio codec is MPEG-1 (2) or MPEG2-EXT (3), then * 0: No DRC * 1: DRC * If audio codec is LPCM (4), then * 0: 16 bps * 1: 20 bps * 2: 24 bps * ''sample_frequency'' - sample rate * 0: 48 Kbps * ''unknown1'' - reserved / unknown * ''channels'' - number of audio channels, 6 (5.1 surround sound) is maximum * ''lang_code'' - language code * ''lang_extension'' - reserved for language code extension * ''code_extension'' - code extension * 0: unspecified * 1: normal * 2: for visually impaired * 3: director's comments * 4: alternate director's comments * ''unknown3'' - reserved / unknown * **''audio_attr_t''** ''zero_8[7]'' - reserved for audio streams, max 8 * ''zero_9[17]'' - reserved / unknown * ''nr_of_vmgm_subp_streams'' - number of sub-picture streams in VMG VOBS, must be 0 or 1 * **''subp_attr_t''** ''vmgm_subp_attr'' - VMG VOBs sub-picture attributes * ''code_mode'' - coding mode * 0: run length * 1: extended * 2: other * ''zero1'' - reserved / unknown / ignored * ''type'' - language type * 0: unspecified * 1: language * 2: other * ''zero2'' - reserved / unknown / ignored * ''lang_code'' - language code * ''lang_extension'' - language code extension * ''code_extension'' - code extension * **''subp_attr_t''** ''zero_10[27]'' - reserved / unknown * **''tt_srpt_t''** ''tt_srpt'' - **VMG IFO ONLY**, pointers to all the tables on the disk * ''nr_of_srpts'' - number of titles * ''zero_1'' - reserved * ''last_byte'' - end address, last byte of last entry * **''title_info_t''** ''title'' * **''playback_type_t''** ''pb_ty'' * ''zero_1'' * ''multi_or_random_pgc_title'' * ''jlc_exists_in_cell_cmd'' * ''jlc_exists_in_prepost_cmd'' * ''jlc_exists_in_button_cmd'' * ''jlc_exists_in_tt_dom'' * ''chapter_search_or_play'' * ''title_or_time_play'' * ''nr_of_angles'' - number of angles * ''nr_of_ptts'' - number of chapters (PTTs) * ''parental_id'' - parental management mask * ''title_set_nr'' - VTS number (VTSN) * ''vts_ttn'' - title number within VTS, VTS_TTN * ''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'' - **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]] * ''VIDEO_TS.VOB''