⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ifo_dump.c

📁 基于linux的DVD播放器程序
💻 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 + -