2
* This program is free software; you can redistribute it and/or modify
2
* This file is part of libdvdread.
4
* libdvdread is free software; you can redistribute it and/or modify
3
5
* it under the terms of the GNU General Public License as published by
4
6
* the Free Software Foundation; either version 2 of the License, or
5
7
* (at your option) any later version.
7
* This program is distributed in the hope that it will be useful,
9
* libdvdread is distributed in the hope that it will be useful,
8
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
9
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
12
* GNU General Public License for more details.
12
* You should have received a copy of the GNU General Public License
13
* along with this program; if not, write to the Free Software
14
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16
* $Id: ifo_print.c 1135 2008-09-06 21:55:51Z rathann $
14
* You should have received a copy of the GNU General Public License along
15
* with libdvdread; if not, write to the Free Software Foundation, Inc.,
16
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
224
223
printf("mpeg2ext ");
225
224
switch(attr->quantization) {
233
printf("(please send a bug report) mpeg reserved quant/drc (%d)", attr->quantization);
232
printf("(please send a bug report) mpeg reserved quant/drc (%d)", attr->quantization);
238
237
switch(attr->quantization) {
249
printf("(please send a bug report) lpcm reserved quant/drc (%d)", attr->quantization);
248
printf("(please send a bug report) lpcm reserved quant/drc (%d)", attr->quantization);
499
void ifo_print_VMGI_MAT(vmgi_mat_t *vmgi_mat) {
498
static void ifoPrint_VMGI_MAT(vmgi_mat_t *vmgi_mat) {
501
500
printf("VMG Identifier: %.12s\n", vmgi_mat->vmg_identifier);
502
501
printf("Last Sector of VMG: %08x\n", vmgi_mat->vmg_last_sector);
503
502
printf("Last Sector of VMGI: %08x\n", vmgi_mat->vmgi_last_sector);
504
503
printf("Specification version number: %01x.%01x\n",
505
vmgi_mat->specification_version >> 4,
506
vmgi_mat->specification_version & 0xf);
504
vmgi_mat->specification_version >> 4,
505
vmgi_mat->specification_version & 0xf);
507
506
/* Byte 2 of 'VMG Category' (00xx0000) is the Region Code */
508
507
printf("VMG Category: %08x (Region Code=%02x)\n", vmgi_mat->vmg_category, ((vmgi_mat->vmg_category >> 16) & 0xff) ^0xff);
509
508
printf("VMG Number of Volumes: %i\n", vmgi_mat->vmg_nr_of_volumes);
515
514
printf("%08x\n", (uint32_t)vmgi_mat->vmg_pos_code);
516
515
printf("End byte of VMGI_MAT: %08x\n", vmgi_mat->vmgi_last_byte);
517
516
printf("Start byte of First Play PGC (FP PGC): %08x\n",
518
vmgi_mat->first_play_pgc);
517
vmgi_mat->first_play_pgc);
519
518
printf("Start sector of VMGM_VOBS: %08x\n", vmgi_mat->vmgm_vobs);
520
519
printf("Start sector of TT_SRPT: %08x\n", vmgi_mat->tt_srpt);
521
520
printf("Start sector of VMGM_PGCI_UT: %08x\n", vmgi_mat->vmgm_pgci_ut);
524
523
printf("Start sector of TXTDT_MG: %08x\n", vmgi_mat->txtdt_mgi);
525
524
printf("Start sector of VMGM_C_ADT: %08x\n", vmgi_mat->vmgm_c_adt);
526
525
printf("Start sector of VMGM_VOBU_ADMAP: %08x\n",
527
vmgi_mat->vmgm_vobu_admap);
526
vmgi_mat->vmgm_vobu_admap);
528
527
printf("Video attributes of VMGM_VOBS: ");
529
528
ifo_print_video_attributes(5, &vmgi_mat->vmgm_video_attr);
531
530
printf("VMGM Number of Audio attributes: %i\n",
532
vmgi_mat->nr_of_vmgm_audio_streams);
531
vmgi_mat->nr_of_vmgm_audio_streams);
533
532
if(vmgi_mat->nr_of_vmgm_audio_streams > 0) {
534
533
printf("\tstream %i status: ", 1);
535
534
ifo_print_audio_attributes(5, &vmgi_mat->vmgm_audio_attr);
538
537
printf("VMGM Number of Sub-picture attributes: %i\n",
539
vmgi_mat->nr_of_vmgm_subp_streams);
538
vmgi_mat->nr_of_vmgm_subp_streams);
540
539
if(vmgi_mat->nr_of_vmgm_subp_streams > 0) {
541
540
printf("\tstream %2i status: ", 1);
542
541
ifo_print_subp_attributes(5, &vmgi_mat->vmgm_subp_attr);
548
void ifo_print_VTSI_MAT(vtsi_mat_t *vtsi_mat) {
547
static void ifoPrint_VTSI_MAT(vtsi_mat_t *vtsi_mat) {
551
550
printf("VTS Identifier: %.12s\n", vtsi_mat->vts_identifier);
552
551
printf("Last Sector of VTS: %08x\n", vtsi_mat->vts_last_sector);
553
552
printf("Last Sector of VTSI: %08x\n", vtsi_mat->vtsi_last_sector);
554
553
printf("Specification version number: %01x.%01x\n",
555
vtsi_mat->specification_version>>4,
556
vtsi_mat->specification_version&0xf);
554
vtsi_mat->specification_version>>4,
555
vtsi_mat->specification_version&0xf);
557
556
printf("VTS Category: %08x\n", vtsi_mat->vts_category);
558
557
printf("End byte of VTSI_MAT: %08x\n", vtsi_mat->vtsi_last_byte);
559
558
printf("Start sector of VTSM_VOBS: %08x\n", vtsi_mat->vtsm_vobs);
667
666
switch(cell_playback[i].block_mode) {
671
s = "the first"; break;
670
s = "the first"; break;
678
677
printf("%s cell in the block ", s);
680
679
switch(cell_playback[i].block_type) {
682
printf("not part of the block ");
681
printf("not part of the block ");
685
printf("angle block ");
684
printf("angle block ");
689
printf("(send bug repport) ");
688
printf("(send bug report) ");
693
692
if(cell_playback[i].seamless_play)
710
709
printf("cell command %d", cell_playback[i].cell_cmd_nr);
712
711
printf("\n\tStart sector: %08x\tFirst ILVU end sector: %08x\n",
713
cell_playback[i].first_sector,
714
cell_playback[i].first_ilvu_end_sector);
712
cell_playback[i].first_sector,
713
cell_playback[i].first_ilvu_end_sector);
715
714
printf("\tEnd sector: %08x\tLast VOBU start sector: %08x\n",
716
cell_playback[i].last_sector,
717
cell_playback[i].last_vobu_start_sector);
715
cell_playback[i].last_sector,
716
cell_playback[i].last_vobu_start_sector);
721
static void ifo_print_CELL_POSITION(cell_position_t *cell_position, int nr) {
720
static void ifoPrint_CELL_POSITION(cell_position_t *cell_position, int nr) {
724
723
if(cell_position == NULL) {
749
748
/* If no programs/no time then does this mean anything? */
750
749
printf("Prohibited user operations: ");
751
ifo_print_USER_OPS(&pgc->prohibited_ops);
750
ifoPrint_USER_OPS(&pgc->prohibited_ops);
753
for(i = 0; i < 8; i++) {
754
if(pgc->audio_control[i] & 0x8000) { /* The 'is present' bit */
755
printf("Audio stream %i control: %04x\n",
756
i, pgc->audio_control[i]);
752
for(i = 0; i < 8; i++) {
753
if(pgc->audio_control[i] & 0x8000) { /* The 'is present' bit */
754
printf("Audio stream %i control: %04x\n",
755
i, pgc->audio_control[i]);
760
759
for(i = 0; i < 32; i++) {
761
760
if(pgc->subp_control[i] & 0x80000000) { /* The 'is present' bit */
762
761
printf("Subpicture stream %2i control: %08x: 4:3=%d, Wide=%d, Letterbox=%d, Pan-Scan=%d\n",
763
i, pgc->subp_control[i],
764
(pgc->subp_control[i] >>24) & 0x1f,
765
(pgc->subp_control[i] >>16) & 0x1f,
766
(pgc->subp_control[i] >>8) & 0x1f,
767
(pgc->subp_control[i] ) & 0x1f);
762
i, pgc->subp_control[i],
763
(pgc->subp_control[i] >>24) & 0x1f,
764
(pgc->subp_control[i] >>16) & 0x1f,
765
(pgc->subp_control[i] >>8) & 0x1f,
766
(pgc->subp_control[i] ) & 0x1f);
785
/* Memmory offsets to div. tables. */
786
ifo_print_PGC_COMMAND_TBL(pgc->command_tbl);
787
ifo_print_PGC_PROGRAM_MAP(pgc->program_map, pgc->nr_of_programs);
788
ifo_print_CELL_PLAYBACK(pgc->cell_playback, pgc->nr_of_cells);
789
ifo_print_CELL_POSITION(pgc->cell_position, pgc->nr_of_cells);
784
/* Memory offsets to div. tables. */
785
ifoPrint_PGC_COMMAND_TBL(pgc->command_tbl);
786
ifoPrint_PGC_PROGRAM_MAP(pgc->program_map, pgc->nr_of_programs);
787
ifoPrint_CELL_PLAYBACK(pgc->cell_playback, pgc->nr_of_cells);
788
ifoPrint_CELL_POSITION(pgc->cell_position, pgc->nr_of_cells);
793
void ifo_print_TT_SRPT(tt_srpt_t *tt_srpt) {
792
static void ifoPrint_TT_SRPT(tt_srpt_t *tt_srpt) {
796
795
printf("Number of TitleTrack search pointers: %i\n",
797
tt_srpt->nr_of_srpts);
796
tt_srpt->nr_of_srpts);
798
797
for(i=0;i<tt_srpt->nr_of_srpts;i++) {
799
798
printf("Title Track index %i\n", i + 1);
800
799
printf("\tTitle set number (VTS): %i",
801
tt_srpt->title[i].title_set_nr);
800
tt_srpt->title[i].title_set_nr);
802
801
printf("\tVTS_TTN: %i\n", tt_srpt->title[i].vts_ttn);
803
802
printf("\tNumber of PTTs: %i\n", tt_srpt->title[i].nr_of_ptts);
804
803
printf("\tNumber of angles: %i\n",
805
tt_srpt->title[i].nr_of_angles);
804
tt_srpt->title[i].nr_of_angles);
807
806
printf("\tTitle playback type: (%02x)\n",
808
*(uint8_t *)&(tt_srpt->title[i].pb_ty));
807
*(uint8_t *)&(tt_srpt->title[i].pb_ty));
809
808
printf("\t\t%s\n",
810
tt_srpt->title[i].pb_ty.multi_or_random_pgc_title ? "Random or Shuffle" : "Sequencial");
809
tt_srpt->title[i].pb_ty.multi_or_random_pgc_title ? "Random or Shuffle" : "Sequential");
811
810
if (tt_srpt->title[i].pb_ty.jlc_exists_in_cell_cmd) printf("\t\tJump/Link/Call exists in cell cmd\n");
812
811
if (tt_srpt->title[i].pb_ty.jlc_exists_in_prepost_cmd) printf("\t\tJump/Link/Call exists in pre/post cmd\n");
813
812
if (tt_srpt->title[i].pb_ty.jlc_exists_in_button_cmd) printf("\t\tJump/Link/Call exists in button cmd\n");
816
815
printf("\t\tChapter search or play:%d\n", tt_srpt->title[i].pb_ty.chapter_search_or_play);
818
817
printf("\tParental ID field: %04x\n",
819
tt_srpt->title[i].parental_id);
818
tt_srpt->title[i].parental_id);
820
819
printf("\tTitle set starting sector %08x\n",
821
tt_srpt->title[i].title_set_sector);
820
tt_srpt->title[i].title_set_sector);
826
void ifo_print_VTS_PTT_SRPT(vts_ptt_srpt_t *vts_ptt_srpt) {
825
static void ifoPrint_VTS_PTT_SRPT(vts_ptt_srpt_t *vts_ptt_srpt) {
828
827
printf(" nr_of_srpts %i last byte %i\n",
829
vts_ptt_srpt->nr_of_srpts,
830
vts_ptt_srpt->last_byte);
828
vts_ptt_srpt->nr_of_srpts,
829
vts_ptt_srpt->last_byte);
831
830
for(i=0;i<vts_ptt_srpt->nr_of_srpts;i++) {
832
831
for(j=0;j<vts_ptt_srpt->title[i].nr_of_ptts;j++) {
833
832
printf("VTS_PTT_SRPT - Title %3i part %3i: PGC: %3i PG: %3i\n",
835
vts_ptt_srpt->title[i].ptt[j].pgcn,
836
vts_ptt_srpt->title[i].ptt[j].pgn );
834
vts_ptt_srpt->title[i].ptt[j].pgcn,
835
vts_ptt_srpt->title[i].ptt[j].pgn );
854
853
for(i = 0; i < ptl_mait->nr_of_countries; i++) {
855
854
printf("Country code: %c%c\n",
856
ptl_mait->countries[i].country_code >> 8,
857
ptl_mait->countries[i].country_code & 0xff);
855
ptl_mait->countries[i].country_code >> 8,
856
ptl_mait->countries[i].country_code & 0xff);
859
858
printf("Start byte: %04x %i\n",
860
859
ptl_mait->countries[i].pf_ptl_mai_start_byte,
866
865
If it is for the menu it probably the first entry. */
867
866
for(j=0;j<8;j++) {
868
867
hexdump( (uint8_t *)ptl_mait->countries - PTL_MAIT_COUNTRY_SIZE
869
+ ptl_mait->countries[i].pf_ptl_mai_start_byte
870
+ j*(ptl_mait->nr_of_vtss+1)*2, (ptl_mait->nr_of_vtss+1)*2);
868
+ ptl_mait->countries[i].pf_ptl_mai_start_byte
869
+ j*(ptl_mait->nr_of_vtss+1)*2, (ptl_mait->nr_of_vtss+1)*2);
876
void ifo_print_VTS_TMAPT(vts_tmapt_t *vts_tmapt) {
875
static void ifoPrint_VTS_TMAPT(vts_tmapt_t *vts_tmapt) {
877
876
unsigned int timeunit;
906
905
for(i = 0; i < entries; i++) {
907
906
printf("VOB ID: %3i, Cell ID: %3i ",
908
c_adt->cell_adr_table[i].vob_id, c_adt->cell_adr_table[i].cell_id);
907
c_adt->cell_adr_table[i].vob_id, c_adt->cell_adr_table[i].cell_id);
909
908
printf("Sector (first): 0x%08x (last): 0x%08x\n",
910
c_adt->cell_adr_table[i].start_sector,
911
c_adt->cell_adr_table[i].last_sector);
909
c_adt->cell_adr_table[i].start_sector,
910
c_adt->cell_adr_table[i].last_sector);
916
void ifo_print_VOBU_ADMAP(vobu_admap_t *vobu_admap) {
915
static void ifoPrint_VOBU_ADMAP(vobu_admap_t *vobu_admap) {
919
918
entries = (vobu_admap->last_byte + 1 - VOBU_ADMAP_SIZE)/4;
920
919
for(i = 0; i < entries; i++) {
921
920
printf("VOBU %5i First sector: 0x%08x\n", i + 1,
922
vobu_admap->vobu_start_sectors[i]);
921
vobu_admap->vobu_start_sectors[i]);
926
const char *ifo_print_menu_name(int type) {
925
static const char *ifo_print_menu_name(int type) {
927
926
const char *menu_name;
961
960
printf("\nProgram (PGC): %3i\n", i + 1);
963
962
printf("PGC Category: Entry PGC %d, Menu Type=0x%02x:%s (Entry id 0x%02x), ",
964
pgcit->pgci_srp[i].entry_id >> 7,
965
pgcit->pgci_srp[i].entry_id & 0xf,
966
ifo_print_menu_name(pgcit->pgci_srp[i].entry_id & 0xf),
967
pgcit->pgci_srp[i].entry_id);
963
pgcit->pgci_srp[i].entry_id >> 7,
964
pgcit->pgci_srp[i].entry_id & 0xf,
965
ifo_print_menu_name(pgcit->pgci_srp[i].entry_id & 0xf),
966
pgcit->pgci_srp[i].entry_id);
969
968
printf("PGC Category: %s VTS_TTN:0x%02x (Entry id 0x%02x), ",
970
pgcit->pgci_srp[i].entry_id >> 7 ? "At Start of" : "During",
971
pgcit->pgci_srp[i].entry_id & 0xf,
972
pgcit->pgci_srp[i].entry_id);
969
pgcit->pgci_srp[i].entry_id >> 7 ? "At Start of" : "During",
970
pgcit->pgci_srp[i].entry_id & 0xf,
971
pgcit->pgci_srp[i].entry_id);
974
973
printf("Parental ID mask 0x%04x\n", pgcit->pgci_srp[i].ptl_id_mask);
975
ifo_print_PGC(pgcit->pgci_srp[i].pgc);
974
ifoPrint_PGC(pgcit->pgci_srp[i].pgc);
980
void ifo_print_PGCI_UT(pgci_ut_t *pgci_ut) {
979
static void ifoPrint_PGCI_UT(pgci_ut_t *pgci_ut) {
983
982
printf("Number of Menu Language Units (PGCI_LU): %3i\n", pgci_ut->nr_of_lus);
984
983
for(i = 0; i < pgci_ut->nr_of_lus; i++) {
985
984
printf("\nMenu Language Unit %d\n", i+1);
986
985
printf("\nMenu Language Code: %c%c\n",
987
pgci_ut->lu[i].lang_code >> 8,
988
pgci_ut->lu[i].lang_code & 0xff);
986
pgci_ut->lu[i].lang_code >> 8,
987
pgci_ut->lu[i].lang_code & 0xff);
990
989
menu = pgci_ut->lu[i].exists;
991
990
printf("Menu Existence: %02x: ", menu);
1031
1030
ifo_print_video_attributes(5, &vts_attributes->vtsm_vobs_attr);
1033
1032
printf("Number of Audio streams: %i\n",
1034
vts_attributes->nr_of_vtsm_audio_streams);
1033
vts_attributes->nr_of_vtsm_audio_streams);
1035
1034
if(vts_attributes->nr_of_vtsm_audio_streams > 0) {
1036
1035
printf("\tstream %i attributes: ", 1);
1037
1036
ifo_print_audio_attributes(5, &vts_attributes->vtsm_audio_attr);
1040
1039
printf("Number of Subpicture streams: %i\n",
1041
vts_attributes->nr_of_vtsm_subp_streams);
1040
vts_attributes->nr_of_vtsm_subp_streams);
1042
1041
if(vts_attributes->nr_of_vtsm_subp_streams > 0) {
1043
1042
printf("\tstream %2i attributes: ", 1);
1044
1043
ifo_print_subp_attributes(5, &vts_attributes->vtsm_subp_attr);
1049
1048
ifo_print_video_attributes(5, &vts_attributes->vtstt_vobs_video_attr);
1051
1050
printf("Number of Audio streams: %i\n",
1052
vts_attributes->nr_of_vtstt_audio_streams);
1051
vts_attributes->nr_of_vtstt_audio_streams);
1053
1052
for(i = 0; i < vts_attributes->nr_of_vtstt_audio_streams; i++) {
1054
1053
printf("\tstream %i attributes: ", i);
1055
1054
ifo_print_audio_attributes(5, &vts_attributes->vtstt_audio_attr[i]);
1059
1058
printf("Number of Subpicture streams: %i\n",
1060
vts_attributes->nr_of_vtstt_subp_streams);
1059
vts_attributes->nr_of_vtstt_subp_streams);
1061
1060
for(i = 0; i < vts_attributes->nr_of_vtstt_subp_streams; i++) {
1062
1061
printf("\tstream %2i attributes: ", i);
1063
1062
ifo_print_subp_attributes(5, &vts_attributes->vtstt_subp_attr[i]);
1069
void ifo_print_VTS_ATRT(vts_atrt_t *vts_atrt) {
1068
static void ifoPrint_VTS_ATRT(vts_atrt_t *vts_atrt) {
1072
1071
printf("Number of Video Title Sets: %3i\n", vts_atrt->nr_of_vtss);
1073
1072
for(i = 0; i < vts_atrt->nr_of_vtss; i++) {
1074
1073
printf("\nVideo Title Set %i\n", i + 1);
1075
ifo_print_VTS_ATTRIBUTES(&vts_atrt->vts[i]);
1074
ifoPrint_VTS_ATTRIBUTES(&vts_atrt->vts[i]);
1090
1089
if(ifohandle->vmgi_mat) {
1092
1091
printf("VMG top level\n-------------\n");
1093
ifo_print_VMGI_MAT(ifohandle->vmgi_mat);
1092
ifoPrint_VMGI_MAT(ifohandle->vmgi_mat);
1095
1094
printf("\nFirst Play PGC\n--------------\n");
1096
1095
if(ifohandle->first_play_pgc)
1097
ifo_print_PGC(ifohandle->first_play_pgc);
1096
ifoPrint_PGC(ifohandle->first_play_pgc);
1099
1098
printf("No First Play PGC present\n");
1101
1100
printf("\nTitle Track search pointer table\n");
1102
1101
printf( "------------------------------------------------\n");
1103
ifo_print_TT_SRPT(ifohandle->tt_srpt);
1102
ifoPrint_TT_SRPT(ifohandle->tt_srpt);
1105
1104
printf("\nMenu PGCI Unit table\n");
1106
1105
printf( "--------------------\n");
1107
1106
if(ifohandle->pgci_ut) {
1108
ifo_print_PGCI_UT(ifohandle->pgci_ut);
1107
ifoPrint_PGCI_UT(ifohandle->pgci_ut);
1110
1109
printf("No PGCI Unit table present\n");
1113
printf("\nParental Manegment Information table\n");
1112
printf("\nParental Management Information table\n");
1114
1113
printf( "------------------------------------\n");
1115
1114
if(ifohandle->ptl_mait) {
1116
ifo_print_PTL_MAIT(ifohandle->ptl_mait);
1115
ifoPrint_PTL_MAIT(ifohandle->ptl_mait);
1118
1117
printf("No Parental Management Information present\n");
1121
1120
printf("\nVideo Title Set Attribute Table\n");
1122
1121
printf( "-------------------------------\n");
1123
ifo_print_VTS_ATRT(ifohandle->vts_atrt);
1122
ifoPrint_VTS_ATRT(ifohandle->vts_atrt);
1125
1124
printf("\nText Data Manager Information\n");
1126
1125
printf( "-----------------------------\n");
1130
1129
printf("No Text Data Manager Information present\n");
1133
printf("\nMenu Cell Adress table\n");
1132
printf("\nMenu Cell Address table\n");
1134
1133
printf( "-----------------\n");
1135
1134
if(ifohandle->menu_c_adt) {
1136
ifo_print_C_ADT(ifohandle->menu_c_adt);
1135
ifoPrint_C_ADT(ifohandle->menu_c_adt);
1138
printf("No Menu Cell Adress table present\n");
1137
printf("No Menu Cell Address table present\n");
1141
1140
printf("\nVideo Manager Menu VOBU address map\n");
1142
1141
printf( "-----------------\n");
1143
1142
if(ifohandle->menu_vobu_admap) {
1144
ifo_print_VOBU_ADMAP(ifohandle->menu_vobu_admap);
1143
ifoPrint_VOBU_ADMAP(ifohandle->menu_vobu_admap);
1146
1145
printf("No Menu VOBU address map present\n");
1151
1150
if(ifohandle->vtsi_mat) {
1153
1152
printf("VTS top level\n-------------\n");
1154
ifo_print_VTSI_MAT(ifohandle->vtsi_mat);
1153
ifoPrint_VTSI_MAT(ifohandle->vtsi_mat);
1156
1155
printf("\nPart of Title Track search pointer table\n");
1157
1156
printf( "----------------------------------------------\n");
1158
ifo_print_VTS_PTT_SRPT(ifohandle->vts_ptt_srpt);
1157
ifoPrint_VTS_PTT_SRPT(ifohandle->vts_ptt_srpt);
1160
1159
printf("\nPGCI Unit table\n");
1161
1160
printf( "--------------------\n");
1162
ifo_print_PGCIT(ifohandle->vts_pgcit, 0);
1161
ifoPrint_PGCIT(ifohandle->vts_pgcit, 0);
1164
1163
printf("\nMenu PGCI Unit table\n");
1165
1164
printf( "--------------------\n");
1166
1165
if(ifohandle->pgci_ut) {
1167
ifo_print_PGCI_UT(ifohandle->pgci_ut);
1166
ifoPrint_PGCI_UT(ifohandle->pgci_ut);
1169
1168
printf("No Menu PGCI Unit table present\n");
1172
1171
printf("\nVTS Time Map table\n");
1173
1172
printf( "-----------------\n");
1174
1173
if(ifohandle->vts_tmapt) {
1175
ifo_print_VTS_TMAPT(ifohandle->vts_tmapt);
1174
ifoPrint_VTS_TMAPT(ifohandle->vts_tmapt);
1177
1176
printf("No VTS Time Map table present\n");
1180
printf("\nMenu Cell Adress table\n");
1179
printf("\nMenu Cell Address table\n");
1181
1180
printf( "-----------------\n");
1182
1181
if(ifohandle->menu_c_adt) {
1183
ifo_print_C_ADT(ifohandle->menu_c_adt);
1182
ifoPrint_C_ADT(ifohandle->menu_c_adt);
1185
printf("No Cell Adress table present\n");
1184
printf("No Cell Address table present\n");
1188
1187
printf("\nVideo Title Set Menu VOBU address map\n");
1189
1188
printf( "-----------------\n");
1190
1189
if(ifohandle->menu_vobu_admap) {
1191
ifo_print_VOBU_ADMAP(ifohandle->menu_vobu_admap);
1190
ifoPrint_VOBU_ADMAP(ifohandle->menu_vobu_admap);
1193
1192
printf("No Menu VOBU address map present\n");
1196
1195
printf("\nCell Adress table\n");
1197
1196
printf( "-----------------\n");
1198
ifo_print_C_ADT(ifohandle->vts_c_adt);
1197
ifoPrint_C_ADT(ifohandle->vts_c_adt);
1200
1199
printf("\nVideo Title Set VOBU address map\n");
1201
1200
printf( "-----------------\n");
1202
ifo_print_VOBU_ADMAP(ifohandle->vts_vobu_admap);
1201
ifoPrint_VOBU_ADMAP(ifohandle->vts_vobu_admap);
1205
1204
ifoClose(ifohandle);
1210
* Revision 1.3 2004/10/22 11:36:19 jcdutton
1211
* Stop seg fault when using ifo_dump.
1213
* Revision 1.2 2004/09/27 12:24:01 jcdutton
1214
* Add extra info to printout when using ifo_dump.
1216
* Revision 1.1 2004/01/11 21:43:13 mroi
1217
* big build system changes
1218
* * cleaned up all Makefiles and added a Makefile.common
1219
* * added relchk script
1220
* * moved libdvdread files to a dvdread subdir
1221
* * moved DVD VM to a vm subdir
1222
* * removed unused code in read_cache.c
1224
* Revision 1.4 2004/01/01 15:13:13 jcdutton
1225
* Put ifo_print.c and .h back in.
1227
* Revision 1.7 2003/04/28 15:17:17 jcdutton
1228
* Update ifodump to work with new libdvdnav cvs, instead of needing libdvdread.
1230
* Revision 1.6 2003/04/05 22:49:04 jcdutton
1231
* Update with more info from the latest libdvdread.
1233
* Revision 1.5 2003/04/05 13:03:49 jcdutton
1236
* Revision 1.4 2003/04/01 08:01:03 jcdutton
1237
* Add VTS Time map display. Requires libdvdread 0.9.4. The same version that comes with xine.
1239
* Revision 1.3 2003/03/14 15:49:18 mroi
1240
* adjust to new libdvdread version
1242
* Revision 1.2 2002/08/30 05:12:33 jcdutton
1243
* Minor update now that I know what PGC Entry IDs are for.
1245
* Revision 1.1.1.1 2002/08/28 09:48:35 jcdutton
1246
* Initial import into CVS.