📄 ifo_dump.c
字号:
/* Ogle - A video player * Copyright (C) 2000, 2001 Bj鰎n Englund, H錵an Hjort * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <inttypes.h>#include <dvdread/ifo_types.h>#include <dvdread/ifo_read.h>#include <dvdread/ifo_print.h>static char *program_name;static void print_ifo(char *path, int title);void usage(void){ fprintf(stderr, "Usage: %s <dvd path> <title number>\n", program_name);}int main(int argc, char *argv[]){ program_name = argv[0]; if(argc != 3) { usage(); return 1; } print_ifo(argv[1], atoi(argv[2])); exit(0);}static void print_ifo(char *path, int title) { dvd_reader_t *dvd; ifo_handle_t *h; dvd = DVDOpen(path); if(!dvd) { fprintf(stderr, "Can't open disc %s!\n", path); return; } if((h = ifoOpen(dvd, title)) == NULL) return; if(h->vmgi_mat != NULL) { printf("VMG top level\n-------------\n"); ifoPrint_VMGI_MAT(h->vmgi_mat); printf("\nFirst Play PGC\n--------------\n"); ifoPrint_PGC(h->first_play_pgc); printf("\nTitle Track search pointer table\n"); printf( "------------------------------------------------\n"); ifoPrint_TT_SRPT(h->tt_srpt); printf("\nMenu PGCI Unit table\n"); printf( "--------------------\n"); if(h->vmgi_mat->vmgm_pgci_ut != 0) { ifoPrint_PGCI_UT(h->pgci_ut); } else printf("No Menu PGCI Unit table present\n"); printf("\nParental Manegment Information table\n"); printf( "------------------------------------\n"); if(h->vmgi_mat->ptl_mait != 0) { ifoPrint_PTL_MAIT(h->ptl_mait); } else printf("No Parental Management Information present\n"); printf("\nVideo Title Set Attribute Table\n"); printf( "-------------------------------\n"); ifoPrint_VTS_ATRT(h->vts_atrt); printf("\nText Data Manager Information\n"); printf( "-----------------------------\n"); if(h->vmgi_mat->txtdt_mgi != 0) { //ifoPrint_TXTDT_MGI(h->txtdt_mgi); printf("Can't print Text Data Manager Information yet\n"); } else printf("No Text Data Manager Information present\n"); if(1) { printf("\nCell Address table\n"); printf( "-----------------\n"); if(h->vmgi_mat->vmgm_c_adt != 0) { ifoPrint_C_ADT(h->menu_c_adt); } else printf("No Cell Address table present\n"); printf("\nVideo Title set Menu VOBU address map\n"); printf( "-----------------\n"); if(h->vmgi_mat->vmgm_vobu_admap != 0) { ifoPrint_VOBU_ADMAP(h->menu_vobu_admap); } else printf("No Menu VOBU address map present\n"); } } if(h->vtsi_mat != NULL) { printf("VTS top level\n-------------\n"); ifoPrint_VTSI_MAT(h->vtsi_mat); printf("\nPart of title search pointer table information\n"); printf( "----------------------------------------------\n"); ifoPrint_VTS_PTT_SRPT(h->vts_ptt_srpt); printf("\nPGCI Unit table\n"); printf( "--------------------\n"); ifoPrint_PGCIT(h->vts_pgcit); printf("\nMenu PGCI Unit table\n"); printf( "--------------------\n"); if(h->vtsi_mat->vtsm_pgci_ut != 0) { ifoPrint_PGCI_UT(h->pgci_ut); } else printf("No Menu PGCI Unit table present\n"); if(1) { printf("\nTime Map table\n"); printf( "-----------------\n"); if(h->vtsi_mat->vts_tmapt != 0) { ifoPrint_VTS_TMAPT(h->vts_tmapt); } else printf("No Time Map table present\n"); printf("\nMenu Cell Address table\n"); printf( "-----------------\n"); if(h->vtsi_mat->vtsm_c_adt != 0) { ifoPrint_C_ADT(h->menu_c_adt); } else printf("No Cell Address table present\n"); printf("\nVideo Title Set Menu VOBU address map\n"); printf( "-----------------\n"); if(h->vtsi_mat->vtsm_vobu_admap != 0) { ifoPrint_VOBU_ADMAP(h->menu_vobu_admap); } else printf("No Menu VOBU address map present\n"); printf("\nCell Address table\n"); printf( "-----------------\n"); ifoPrint_C_ADT(h->vts_c_adt); printf("\nVideo Title Set VOBU address map\n"); printf( "-----------------\n"); ifoPrint_VOBU_ADMAP(h->vts_vobu_admap); } } /* Vob */ }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -