?? ifo.h
字號(hào):
/* char ??? */ uint8_t i_spec_ver; /* 1 byte */ uint32_t i_cat; /* 4 bytes */ uint16_t i_volume_nb; /* 2 bytes */ uint16_t i_volume; /* 2 bytes */ uint8_t i_disc_side; /* 1 bytes *//* char[20] ??? */ uint16_t i_title_set_nb; /* 2 bytes */ byte_t ps_provider_id[32]; /* 32 bytes */ uint64_t i_pos_code; /* 8 bytes *//* char[24] ??? */ uint32_t i_vmg_inf_end_byte; /* 4 bytes */ uint32_t i_first_play_title_start_byte; /* 4 bytes *//* char[56] ??? */ uint32_t i_vob_start_sector; /* 4 bytes */ uint32_t i_title_inf_start_sector; /* 4 bytes */ uint32_t i_title_unit_start_sector; /* 4 bytes */ uint32_t i_parental_inf_start_sector; /* 4 bytes */ uint32_t i_vts_inf_start_sector; /* 4 bytes */ uint32_t i_text_data_start_sector; /* 4 bytes */ uint32_t i_cell_inf_start_sector; /* 4 bytes */ uint32_t i_vobu_map_start_sector; /* 4 bytes *//* char[2] ??? */ ifo_video_t video_attr; /* 2 bytes *//* char ??? */ uint8_t i_audio_nb; /* 1 byte */ ifo_audio_t p_audio_attr[8]; /* i_vmgm_audio_nb * 8 bytes *//* char[16] ??? */ uint8_t i_spu_nb; /* 1 byte */ ifo_spu_t p_spu_attr[32]; /* i_subpic_nb * 6 bytes */} manager_inf_t;/* * Part Of Title Search Pointer Table Information *//* Title sets structure * we have a pointer to this structure for each tts */typedef struct title_attr_s{ uint8_t i_play_type; /* 1 byte */ uint8_t i_angle_nb; /* 1 byte */ uint16_t i_chapter_nb; /* 2 bytes; Chapters/PGs */ uint16_t i_parental_id; /* 2 bytes */ uint8_t i_title_set_num; /* 1 byte (VTS#) */ uint8_t i_title_num; /* 1 byte ??? */ uint32_t i_start_sector; /* 4 bytes */} title_attr_t;/* Main struct for tts * - start at "i_vmg_ptt_srpt_ssector" */typedef struct title_inf_s{ uint16_t i_title_nb; /* 2 bytes *//* char[2] ??? */ uint32_t i_last_byte; /* 4 bytes */ title_attr_t * p_attr; /* i_ttu_nb * 12 bytes */} title_inf_t;/* * Parental Management Information Table */typedef struct parental_desc_s{ byte_t ps_country_code[2]; /* 2 bytes *//* char[2] ??? */ uint16_t i_parental_mask_start_byte; /* 2 bytes *//* char[2] ??? */} parental_desc_t;typedef struct parental_mask_s{ uint16_t * ppi_mask[8]; /* (i_vts_nb +1) * 8 * 2 bytes */} parental_mask_t;/* Main struct for parental management * - start at i_vmg_ptl_mait_ssector */typedef struct parental_inf_s{ uint16_t i_country_nb; /* 2 bytes */ uint16_t i_vts_nb; /* 2 bytes */ uint32_t i_last_byte; /* 4 bytes */ parental_desc_t* p_parental_desc; /* i_country_nb * 8 bytes */ parental_mask_t* p_parental_mask; /* i_country_nb * sizeof(vmg_ptl_mask_t) */} parental_inf_t;/* * Video Title Set Attribute Table *//* Attribute structure : one for each vts * - start at pi_atrt_sbyte */typedef struct vts_attr_s{ uint32_t i_last_byte; /* 4 bytes */ uint32_t i_cat_app_type; /* 4 bytes */ ifo_video_t vts_menu_video_attr; /* 2 bytes *//* char ??? */ uint8_t i_vts_menu_audio_nb; /* 1 byte */ ifo_audio_t p_vts_menu_audio_attr[8]; /* 8 * 8 bytes *//* char[17] ??? */ uint8_t i_vts_menu_spu_nb; /* 1 byte */ ifo_spu_t p_vts_menu_spu_attr[28]; /* i_vtsm_subpic_nb * 6 bytes *//* char[2] ??? */ ifo_video_t vts_title_video_attr; /* 2 bytes *//* char ??? */ uint8_t i_vts_title_audio_nb; /* 1 byte */ ifo_audio_t p_vts_title_audio_attr[8]; /* 8 * 8 bytes *//* char[17] ??? */ uint8_t i_vts_title_spu_nb; /* 1 byte */ ifo_spu_t p_vts_title_spu_attr[28]; /* i_vtstt_subpic_nb * 6 bytes */} vts_attr_t;/* Main struct for vts attributes * - start at i_vmg_vts_atrt_ssector */typedef struct vts_inf_s{ uint16_t i_vts_nb; /* 2 bytes *//* char[2] ??? */ uint32_t i_last_byte; /* 4 bytes */ uint32_t * pi_vts_attr_start_byte; /* i_vts_nb * 4 bytes */ vts_attr_t* p_vts_attr;} vts_inf_t;/* * Global Structure for Video Manager */typedef struct vmg_s{ manager_inf_t manager_inf; title_t title; title_inf_t title_inf; title_unit_t title_unit; parental_inf_t parental_inf; vts_inf_t vts_inf; cell_inf_t cell_inf; vobu_map_t vobu_map;} vmg_t;/***************************************************************************** * Structures for Video Title Sets (cf vts_*.ifo) ****************************************************************************//* * Video Title Sets Information Management Table */typedef struct vts_manager_s{ byte_t psz_id[13]; /* 12 bytes (DVDVIDEO-VTS) */ uint32_t i_last_sector; /* 4 bytes *//* char[12] ??? */ uint32_t i_inf_last_sector; /* 4 bytes *//* char ??? */ uint8_t i_spec_ver; /* 1 byte */ uint32_t i_cat; /* 4 bytes *//* char[90] ??? */ uint32_t i_inf_end_byte; /* 4 bytes *//* char[60] ??? */ uint32_t i_menu_vob_start_sector; /* 4 bytes */ uint32_t i_title_vob_start_sector; /* 4 bytes */ uint32_t i_title_inf_start_sector; /* 4 bytes */ uint32_t i_title_unit_start_sector; /* 4 bytes */ uint32_t i_menu_unit_start_sector; /* 4 bytes */ uint32_t i_time_inf_start_sector; /* 4 bytes */ uint32_t i_menu_cell_inf_start_sector; /* 4 bytes */ uint32_t i_menu_vobu_map_start_sector; /* 4 bytes */ uint32_t i_cell_inf_start_sector; /* 4 bytes */ uint32_t i_vobu_map_start_sector; /* 4 bytes *//* char[24] ??? */ ifo_video_t menu_video_attr; /* 2 bytes *//* char ??? */ uint8_t i_menu_audio_nb; /* 1 byte */ ifo_audio_t p_menu_audio_attr[8]; /* i_vmgm_audio_nb * 8 bytes *//* char[16] ??? */ uint8_t i_menu_spu_nb; /* 1 byte */ ifo_spu_t p_menu_spu_attr[32]; /* i_subpic_nb * 6 bytes */ /* !!! only 28 subpics ??? *//* char[2] ??? */ ifo_video_t video_attr; /* 2 bytes *//* char ??? */ uint8_t i_audio_nb; /* 1 byte */ ifo_audio_t p_audio_attr[8]; /* i_vmgm_audio_nb * 8 bytes *//* char[16] ??? */ uint8_t i_spu_nb; /* 1 byte */ ifo_spu_t p_spu_attr[32]; /* i_subpic_nb * 6 bytes */} vts_manager_t;/* * Part Of Title Search Pointer Table Information *//* Title sets structure * we have a pointer to this structure for each tts */typedef struct title_start_s{ uint16_t i_title_id; /* 2 bytes; Chapters/PGs */ uint16_t i_chapter; /* 2 bytes */} title_start_t;/* Main struct for tts * - start at "i_vts_ptt_srpt_ssector" */typedef struct vts_title_s{ uint16_t i_title_nb; /* 2 bytes *//* char[2] ??? */ uint32_t i_last_byte; /* 4 bytes */ uint32_t * pi_start_byte; title_start_t * p_title_start; /* i_ttu_nb * 4 bytes */} vts_title_t;/* * Time Map table information *//* Time Map structure */typedef struct time_map_s{ uint8_t i_time_unit; /* 1 byte *//* char ??? */ uint16_t i_entry_nb; /* 2 bytes */ uint32_t * pi_sector; /* i_entry_nb * 4 bytes */} time_map_t;/* Main structure for tmap_ti * - start at "i_tmap_ti_ssector" */typedef struct time_inf_s{ uint16_t i_nb; /* 2 bytes *//* char[2] ??? */ uint32_t i_last_byte; /* 4 bytes */ uint32_t * pi_start_byte; /* i_tmap_nb * 4 bytes */ time_map_t* p_time_map;} time_inf_t;/* * Video Title Set */typedef struct vts_s{ vlc_bool_t b_initialized; int i_pos; vts_manager_t manager_inf; vts_title_t title_inf; title_unit_t menu_unit; unit_inf_t title_unit; time_inf_t time_inf; cell_inf_t menu_cell_inf; vobu_map_t menu_vobu_map; cell_inf_t cell_inf; vobu_map_t vobu_map;} vts_t;/* * Global Ifo Structure */typedef struct ifo_s{ dvdcss_handle dvdhandle; /* File descriptor for the device */ int i_start; /* Offset to video_ts.ifo on the device */ int i_pos; /* Position of stream pointer */ vlc_bool_t b_error; /* Error Management */ vmg_t vmg; /* Structure described in video_ts */ vts_t vts; /* Vts ifo for current title set */ /* Remap buffer for unaligned reads */ uint8_t p_remap[ 2 * DVD_LB_SIZE ];} ifo_t;/***************************************************************************** * Prototypes in dvd_ifo.c *****************************************************************************/struct thread_dvd_data_s;int IfoCreate ( struct thread_dvd_data_s * );int IfoInit ( struct ifo_s * );int IfoTitleSet ( struct ifo_s *, int );void IfoDestroy ( struct ifo_s * );
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -