Mercurial > mplayer.hg
annotate dvdread/ifo_print.c @ 27442:afa2cc0166be
Sync libdvdcss with upstream version r212.
author | diego |
---|---|
date | Thu, 21 Aug 2008 13:40:16 +0000 |
parents | 870e5564d0f7 |
children |
rev | line source |
---|---|
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
1 /* -*- c-basic-offset: 2; indent-tabs-mode: nil -*- */ |
7029 | 2 /* |
15874 | 3 * Copyright (C) 2000, 2001, 2002, 2003 |
4 * Björn Englund <d4bjorn@dtek.chalmers.se>, | |
5 * Håkan Hjort <d95hjort@dtek.chalmers.se> | |
14938
25df9508f9a8
Mark modified files as such to comply more closely with GPL ¡ø2a.
diego
parents:
7033
diff
changeset
|
6 * |
20785 | 7 * Modified for use with MPlayer, changes contained in libdvdread_changes.diff. |
8 * detailed changelog at http://svn.mplayerhq.hu/mplayer/trunk/ | |
9 * $Id$ | |
10 * | |
7029 | 11 * This program is free software; you can redistribute it and/or modify |
12 * it under the terms of the GNU General Public License as published by | |
13 * the Free Software Foundation; either version 2 of the License, or | |
14 * (at your option) any later version. | |
15 * | |
16 * This program is distributed in the hope that it will be useful, | |
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 * GNU General Public License for more details. | |
20 * | |
21 * You should have received a copy of the GNU General Public License | |
22 * along with this program; if not, write to the Free Software | |
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
24 */ | |
25 | |
15874 | 26 #include "config.h" |
27 | |
7029 | 28 #include <stdio.h> |
29 #include <stdlib.h> | |
30 #include <unistd.h> | |
31 #include <string.h> | |
32 #include <ctype.h> | |
33 | |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
34 #if defined(HAVE_INTTYPES_H) |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
35 #include <inttypes.h> |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
36 #elif defined(HAVE_STDINT_H) |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
37 #include <stdint.h> |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
38 #endif |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
39 |
7029 | 40 #include "ifo_types.h" |
41 #include "ifo_read.h" | |
42 #include "ifo_print.h" | |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
43 #include "cmd_print.h" |
15874 | 44 #include "dvdread_internal.h" |
7029 | 45 |
46 /* Put this in some other file / package? It's used in nav_print too. */ | |
15874 | 47 static void ifoPrint_time(dvd_time_t *dtime) { |
7029 | 48 const char *rate; |
15874 | 49 CHECK_VALUE((dtime->hour>>4) < 0xa && (dtime->hour&0xf) < 0xa); |
50 CHECK_VALUE((dtime->minute>>4) < 0x7 && (dtime->minute&0xf) < 0xa); | |
51 CHECK_VALUE((dtime->second>>4) < 0x7 && (dtime->second&0xf) < 0xa); | |
52 CHECK_VALUE((dtime->frame_u&0xf) < 0xa); | |
7029 | 53 |
54 printf("%02x:%02x:%02x.%02x", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
55 dtime->hour, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
56 dtime->minute, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
57 dtime->second, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
58 dtime->frame_u & 0x3f); |
7029 | 59 switch((dtime->frame_u & 0xc0) >> 6) { |
60 case 1: | |
61 rate = "25.00"; | |
62 break; | |
63 case 3: | |
64 rate = "29.97"; | |
65 break; | |
66 default: | |
67 if(dtime->hour == 0 && dtime->minute == 0 | |
68 && dtime->second == 0 && dtime->frame_u == 0) | |
69 rate = "no"; | |
70 else | |
71 rate = "(please send a bug report)"; | |
72 break; | |
73 } | |
74 printf(" @ %s fps", rate); | |
75 } | |
76 | |
15874 | 77 static void ifoPrint_video_attributes(video_attr_t *attr) { |
7029 | 78 |
79 /* The following test is shorter but not correct ISO C, | |
80 memcmp(attr,my_friendly_zeros, sizeof(video_attr_t)) */ | |
81 if(attr->mpeg_version == 0 | |
82 && attr->video_format == 0 | |
83 && attr->display_aspect_ratio == 0 | |
84 && attr->permitted_df == 0 | |
85 && attr->unknown1 == 0 | |
86 && attr->line21_cc_1 == 0 | |
87 && attr->line21_cc_2 == 0 | |
15874 | 88 && attr->bit_rate == 0 |
7029 | 89 && attr->video_format == 0 |
90 && attr->letterboxed == 0 | |
91 && attr->film_mode == 0) { | |
92 printf("-- Unspecified --"); | |
93 return; | |
94 } | |
95 | |
96 switch(attr->mpeg_version) { | |
97 case 0: | |
98 printf("mpeg1 "); | |
99 break; | |
100 case 1: | |
101 printf("mpeg2 "); | |
102 break; | |
103 default: | |
104 printf("(please send a bug report) "); | |
105 } | |
106 | |
107 switch(attr->video_format) { | |
108 case 0: | |
109 printf("ntsc "); | |
110 break; | |
111 case 1: | |
112 printf("pal "); | |
113 break; | |
114 default: | |
115 printf("(please send a bug report) "); | |
116 } | |
117 | |
118 switch(attr->display_aspect_ratio) { | |
119 case 0: | |
120 printf("4:3 "); | |
121 break; | |
122 case 3: | |
123 printf("16:9 "); | |
124 break; | |
125 default: | |
126 printf("(please send a bug report) "); | |
127 } | |
128 | |
129 // Wide is allways allowed..!!! | |
130 switch(attr->permitted_df) { | |
131 case 0: | |
132 printf("pan&scan+letterboxed "); | |
133 break; | |
134 case 1: | |
135 printf("only pan&scan "); //?? | |
136 break; | |
137 case 2: | |
138 printf("only letterboxed "); | |
139 break; | |
140 case 3: | |
141 // not specified | |
142 break; | |
143 default: | |
144 printf("(please send a bug report)"); | |
145 } | |
146 | |
147 printf("U%x ", attr->unknown1); | |
15874 | 148 CHECK_VALUE(!attr->unknown1); |
7029 | 149 |
150 if(attr->line21_cc_1 || attr->line21_cc_2) { | |
151 printf("NTSC CC "); | |
152 if(attr->line21_cc_1) | |
153 printf("1 "); | |
154 if(attr->line21_cc_2) | |
155 printf("2 "); | |
156 } | |
15874 | 157 |
158 switch(attr->bit_rate) { | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
159 case 0: |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
160 printf("Variable Bit Rate "); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
161 break; |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
162 case 1: |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
163 printf("Constant Bit Rate "); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
164 break; |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
165 default: |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
166 printf("(please send a bug report)"); |
15874 | 167 } |
7029 | 168 |
169 { | |
170 int height = 480; | |
171 if(attr->video_format != 0) | |
172 height = 576; | |
173 switch(attr->picture_size) { | |
174 case 0: | |
175 printf("720x%d ", height); | |
176 break; | |
177 case 1: | |
178 printf("704x%d ", height); | |
179 break; | |
180 case 2: | |
181 printf("352x%d ", height); | |
182 break; | |
183 case 3: | |
184 printf("352x%d ", height/2); | |
185 break; | |
186 default: | |
187 printf("(please send a bug report) "); | |
188 } | |
189 } | |
190 | |
191 if(attr->letterboxed) { | |
192 printf("source letterboxed "); | |
193 } | |
194 | |
195 if(attr->film_mode) { | |
196 printf("film"); | |
197 } else { | |
198 printf("video"); //camera | |
199 } | |
200 } | |
201 | |
15874 | 202 static void ifoPrint_audio_attributes(audio_attr_t *attr) { |
7029 | 203 |
204 if(attr->audio_format == 0 | |
205 && attr->multichannel_extension == 0 | |
206 && attr->lang_type == 0 | |
207 && attr->application_mode == 0 | |
208 && attr->quantization == 0 | |
209 && attr->sample_frequency == 0 | |
210 && attr->channels == 0 | |
15874 | 211 && attr->lang_code == 0 |
7029 | 212 && attr->lang_extension == 0 |
15874 | 213 && attr->code_extension == 0 |
214 && attr->unknown3 == 0 | |
7029 | 215 && attr->unknown1 == 0) { |
216 printf("-- Unspecified --"); | |
217 return; | |
218 } | |
219 | |
220 switch(attr->audio_format) { | |
221 case 0: | |
222 printf("ac3 "); | |
223 break; | |
224 case 1: | |
225 printf("(please send a bug report) "); | |
226 break; | |
227 case 2: | |
228 printf("mpeg1 "); | |
229 break; | |
230 case 3: | |
231 printf("mpeg2ext "); | |
232 break; | |
233 case 4: | |
234 printf("lpcm "); | |
235 break; | |
236 case 5: | |
237 printf("(please send a bug report) "); | |
238 break; | |
239 case 6: | |
240 printf("dts "); | |
241 break; | |
242 default: | |
243 printf("(please send a bug report) "); | |
244 } | |
245 | |
246 if(attr->multichannel_extension) | |
247 printf("multichannel_extension "); | |
248 | |
249 switch(attr->lang_type) { | |
250 case 0: | |
251 // not specified | |
15874 | 252 CHECK_VALUE(attr->lang_code == 0 || attr->lang_code == 0xffff); |
7029 | 253 break; |
254 case 1: | |
15874 | 255 printf("%c%c (%c) ", attr->lang_code>>8, attr->lang_code & 0xff, |
256 attr->lang_extension ? attr->lang_extension : ' '); | |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
257 if(attr->lang_extension) { |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
258 printf("(please send a bug report) lang_extension != 0"); |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
259 } |
7029 | 260 break; |
261 default: | |
262 printf("(please send a bug report) "); | |
263 } | |
264 | |
265 switch(attr->application_mode) { | |
266 case 0: | |
267 // not specified | |
268 break; | |
269 case 1: | |
270 printf("karaoke mode "); | |
271 break; | |
272 case 2: | |
273 printf("surround sound mode "); | |
274 break; | |
275 default: | |
276 printf("(please send a bug report) "); | |
277 } | |
278 | |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
279 switch(attr->audio_format) { |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
280 case 0: //ac3 |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
281 if(attr->quantization != 3) { |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
282 printf("(please send a bug report) ac3 quant/drc not 3 (%d)", |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
283 attr->quantization); |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
284 } |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
285 break; |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
286 case 2: //mpeg 1 or mpeg 2 without extension stream |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
287 case 3: //mpeg 2 with extension stream |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
288 switch(attr->quantization) { |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
289 case 0: //no drc |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
290 printf("no drc "); |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
291 break; |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
292 case 1: |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
293 printf("drc "); |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
294 break; |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
295 default: |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
296 printf("(please send a bug report) mpeg reserved quant/drc (%d)", |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
297 attr->quantization); |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
298 break; |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
299 } |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
300 break; |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
301 case 4: |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
302 switch(attr->quantization) { |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
303 case 0: |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
304 printf("16bit "); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
305 break; |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
306 case 1: |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
307 printf("20bit "); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
308 break; |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
309 case 2: |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
310 printf("24bit "); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
311 break; |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
312 case 3: |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
313 printf("(please send a bug report) lpcm reserved quant/drc (%d)", |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
314 attr->quantization); |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
315 break; |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
316 } |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
317 break; |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
318 case 6: //dts |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
319 if(attr->quantization != 3) { |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
320 printf("(please send a bug report) dts quant/drc not 3 (%d)", |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
321 attr->quantization); |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
322 } |
7029 | 323 break; |
324 default: | |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
325 break; |
7029 | 326 } |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
327 |
7029 | 328 switch(attr->sample_frequency) { |
329 case 0: | |
330 printf("48kHz "); | |
331 break; | |
332 case 1: | |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
333 printf("96kHz "); |
7029 | 334 break; |
335 default: | |
336 printf("sample_frequency %i (please send a bug report) ", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
337 attr->sample_frequency); |
7029 | 338 } |
339 | |
340 printf("%dCh ", attr->channels + 1); | |
341 | |
15874 | 342 switch(attr->code_extension) { |
7029 | 343 case 0: |
344 printf("Not specified "); | |
345 break; | |
346 case 1: // Normal audio | |
347 printf("Normal Caption "); | |
348 break; | |
349 case 2: // visually imparied | |
350 printf("Audio for visually impaired "); | |
351 break; | |
352 case 3: // Directors 1 | |
353 printf("Director's comments 1 "); | |
354 break; | |
355 case 4: // Directors 2 | |
356 printf("Director's comments 2 "); | |
357 break; | |
358 //case 4: // Music score ? | |
359 default: | |
360 printf("(please send a bug report) "); | |
361 } | |
362 | |
15874 | 363 printf("%d ", attr->unknown3); |
364 if(attr->application_mode == 1) { | |
365 printf("ca=%d ", attr->app_info.karaoke.channel_assignment); | |
366 printf("%d ", attr->app_info.karaoke.version); | |
367 if(attr->app_info.karaoke.mc_intro) | |
368 printf("mc intro "); | |
369 printf("%s ", attr->app_info.karaoke.mode ? "duet" : "solo"); | |
370 printf("%d ", attr->app_info.karaoke.unknown4); | |
371 } | |
372 if(attr->application_mode == 2) { | |
373 if(attr->app_info.surround.dolby_encoded) { | |
374 printf("dolby surround "); | |
375 } | |
376 printf("%d ", attr->app_info.surround.unknown5); | |
377 printf("%d ", attr->app_info.surround.unknown6); | |
378 } | |
7029 | 379 } |
380 | |
15874 | 381 static void ifoPrint_subp_attributes(subp_attr_t *attr) { |
7029 | 382 |
383 if(attr->type == 0 | |
15874 | 384 && attr->code_mode == 0 |
7029 | 385 && attr->lang_code == 0 |
15874 | 386 && attr->lang_extension == 0 |
7029 | 387 && attr->zero1 == 0 |
388 && attr->zero2 == 0 | |
15874 | 389 && attr->code_extension == 0) { |
7029 | 390 printf("-- Unspecified --"); |
391 return; | |
392 } | |
393 | |
15874 | 394 switch(attr->code_mode) { |
395 case 0: | |
396 printf("Coding Mode RLE "); | |
397 break; | |
398 case 1: | |
399 printf("Coding Mode Extended "); | |
400 break; | |
401 default: | |
402 printf("(please send a bug report) "); | |
403 } | |
404 | |
405 if(attr->type == 1) { | |
406 if(isalpha((int)(attr->lang_code >> 8)) | |
407 && isalpha((int)(attr->lang_code & 0xff))) { | |
408 printf("%c%c ", attr->lang_code >> 8, attr->lang_code & 0xff); | |
409 } else { | |
410 printf("%02x%02x ", attr->lang_code >> 8, attr->lang_code & 0xff); | |
411 } | |
7029 | 412 } else { |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
413 printf("lang not specified "); |
7029 | 414 } |
415 | |
416 printf("%d ", attr->zero1); | |
417 printf("%d ", attr->zero2); | |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
418 printf("%d ", attr->lang_extension); |
15874 | 419 |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
420 switch(attr->code_extension) { |
7029 | 421 case 0: |
422 printf("Not specified "); | |
423 break; | |
424 case 1: | |
425 printf("Caption with normal size character "); | |
426 break; | |
427 case 2: | |
428 printf("Caption with bigger size character "); | |
429 break; | |
430 case 3: | |
431 printf("Caption for children "); | |
432 break; | |
433 case 4: | |
434 printf("reserved "); | |
435 break; | |
436 case 5: | |
437 printf("Closed Caption with normal size character "); | |
438 break; | |
439 case 6: | |
440 printf("Closed Caption with bigger size character "); | |
441 break; | |
442 case 7: | |
443 printf("Closed Caption for children "); | |
444 break; | |
445 case 8: | |
446 printf("reserved "); | |
447 break; | |
448 case 9: | |
449 printf("Forced Caption"); | |
450 break; | |
451 case 10: | |
452 printf("reserved "); | |
453 break; | |
454 case 11: | |
455 printf("reserved "); | |
456 break; | |
457 case 12: | |
458 printf("reserved "); | |
459 break; | |
460 case 13: | |
461 printf("Director's comments with normal size character "); | |
462 break; | |
463 case 14: | |
464 printf("Director's comments with bigger size character "); | |
465 break; | |
466 case 15: | |
467 printf("Director's comments for children "); | |
468 break; | |
469 default: | |
470 printf("(please send a bug report) "); | |
471 } | |
472 | |
473 } | |
474 | |
475 | |
476 static void ifoPrint_USER_OPS(user_ops_t *user_ops) { | |
477 uint32_t uops; | |
478 unsigned char *ptr = (unsigned char *)user_ops; | |
479 | |
480 uops = (*ptr++ << 24); | |
481 uops |= (*ptr++ << 16); | |
482 uops |= (*ptr++ << 8); | |
483 uops |= (*ptr++); | |
484 | |
485 if(uops == 0) { | |
486 printf("None\n"); | |
487 } else if(uops == 0x01ffffff) { | |
488 printf("All\n"); | |
489 } else { | |
490 if(user_ops->title_or_time_play) | |
491 printf("Title or Time Play, "); | |
492 if(user_ops->chapter_search_or_play) | |
493 printf("Chapter Search or Play, "); | |
494 if(user_ops->title_play) | |
495 printf("Title Play, "); | |
496 if(user_ops->stop) | |
497 printf("Stop, "); | |
498 if(user_ops->go_up) | |
499 printf("Go Up, "); | |
500 if(user_ops->time_or_chapter_search) | |
501 printf("Time or Chapter Search, "); | |
502 if(user_ops->prev_or_top_pg_search) | |
503 printf("Prev or Top PG Search, "); | |
504 if(user_ops->next_pg_search) | |
505 printf("Next PG Search, "); | |
506 if(user_ops->forward_scan) | |
507 printf("Forward Scan, "); | |
508 if(user_ops->backward_scan) | |
509 printf("Backward Scan, "); | |
510 if(user_ops->title_menu_call) | |
511 printf("Title Menu Call, "); | |
512 if(user_ops->root_menu_call) | |
513 printf("Root Menu Call, "); | |
514 if(user_ops->subpic_menu_call) | |
515 printf("SubPic Menu Call, "); | |
516 if(user_ops->audio_menu_call) | |
517 printf("Audio Menu Call, "); | |
518 if(user_ops->angle_menu_call) | |
519 printf("Angle Menu Call, "); | |
520 if(user_ops->chapter_menu_call) | |
521 printf("Chapter Menu Call, "); | |
522 if(user_ops->resume) | |
523 printf("Resume, "); | |
524 if(user_ops->button_select_or_activate) | |
525 printf("Button Select or Activate, "); | |
526 if(user_ops->still_off) | |
527 printf("Still Off, "); | |
528 if(user_ops->pause_on) | |
529 printf("Pause On, "); | |
530 if(user_ops->audio_stream_change) | |
531 printf("Audio Stream Change, "); | |
532 if(user_ops->subpic_stream_change) | |
533 printf("SubPic Stream Change, "); | |
534 if(user_ops->angle_change) | |
535 printf("Angle Change, "); | |
536 if(user_ops->karaoke_audio_pres_mode_change) | |
537 printf("Karaoke Audio Pres Mode Change, "); | |
538 if(user_ops->video_pres_mode_change) | |
539 printf("Video Pres Mode Change, "); | |
540 printf("\n"); | |
541 } | |
542 } | |
543 | |
544 | |
545 void ifoPrint_VMGI_MAT(vmgi_mat_t *vmgi_mat) { | |
546 | |
547 printf("VMG Identifier: %.12s\n", vmgi_mat->vmg_identifier); | |
548 printf("Last Sector of VMG: %08x\n", vmgi_mat->vmg_last_sector); | |
549 printf("Last Sector of VMGI: %08x\n", vmgi_mat->vmgi_last_sector); | |
550 printf("Specification version number: %01x.%01x\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
551 vmgi_mat->specification_version >> 4, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
552 vmgi_mat->specification_version & 0xf); |
7029 | 553 /* Byte 2 of 'VMG Category' (00xx0000) is the Region Code */ |
554 printf("VMG Category: %08x\n", vmgi_mat->vmg_category); | |
555 printf("VMG Number of Volumes: %i\n", vmgi_mat->vmg_nr_of_volumes); | |
556 printf("VMG This Volume: %i\n", vmgi_mat->vmg_this_volume_nr); | |
557 printf("Disc side %i\n", vmgi_mat->disc_side); | |
558 printf("VMG Number of Title Sets %i\n", vmgi_mat->vmg_nr_of_title_sets); | |
559 printf("Provider ID: %.32s\n", vmgi_mat->provider_identifier); | |
560 printf("VMG POS Code: %08x", (uint32_t)(vmgi_mat->vmg_pos_code >> 32)); | |
561 printf("%08x\n", (uint32_t)vmgi_mat->vmg_pos_code); | |
562 printf("End byte of VMGI_MAT: %08x\n", vmgi_mat->vmgi_last_byte); | |
563 printf("Start byte of First Play PGC FP PGC: %08x\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
564 vmgi_mat->first_play_pgc); |
7029 | 565 printf("Start sector of VMGM_VOBS: %08x\n", vmgi_mat->vmgm_vobs); |
566 printf("Start sector of TT_SRPT: %08x\n", vmgi_mat->tt_srpt); | |
567 printf("Start sector of VMGM_PGCI_UT: %08x\n", vmgi_mat->vmgm_pgci_ut); | |
568 printf("Start sector of PTL_MAIT: %08x\n", vmgi_mat->ptl_mait); | |
569 printf("Start sector of VTS_ATRT: %08x\n", vmgi_mat->vts_atrt); | |
570 printf("Start sector of TXTDT_MG: %08x\n", vmgi_mat->txtdt_mgi); | |
571 printf("Start sector of VMGM_C_ADT: %08x\n", vmgi_mat->vmgm_c_adt); | |
572 printf("Start sector of VMGM_VOBU_ADMAP: %08x\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
573 vmgi_mat->vmgm_vobu_admap); |
7029 | 574 printf("Video attributes of VMGM_VOBS: "); |
15874 | 575 ifoPrint_video_attributes(&vmgi_mat->vmgm_video_attr); |
7029 | 576 printf("\n"); |
577 printf("VMGM Number of Audio attributes: %i\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
578 vmgi_mat->nr_of_vmgm_audio_streams); |
7029 | 579 if(vmgi_mat->nr_of_vmgm_audio_streams > 0) { |
580 printf("\tstream %i status: ", 1); | |
15874 | 581 ifoPrint_audio_attributes(&vmgi_mat->vmgm_audio_attr); |
7029 | 582 printf("\n"); |
583 } | |
584 printf("VMGM Number of Sub-picture attributes: %i\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
585 vmgi_mat->nr_of_vmgm_subp_streams); |
7029 | 586 if(vmgi_mat->nr_of_vmgm_subp_streams > 0) { |
587 printf("\tstream %2i status: ", 1); | |
15874 | 588 ifoPrint_subp_attributes(&vmgi_mat->vmgm_subp_attr); |
7029 | 589 printf("\n"); |
590 } | |
591 } | |
592 | |
593 | |
594 void ifoPrint_VTSI_MAT(vtsi_mat_t *vtsi_mat) { | |
595 int i; | |
596 | |
597 printf("VTS Identifier: %.12s\n", vtsi_mat->vts_identifier); | |
598 printf("Last Sector of VTS: %08x\n", vtsi_mat->vts_last_sector); | |
599 printf("Last Sector of VTSI: %08x\n", vtsi_mat->vtsi_last_sector); | |
600 printf("Specification version number: %01x.%01x\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
601 vtsi_mat->specification_version>>4, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
602 vtsi_mat->specification_version&0xf); |
7029 | 603 printf("VTS Category: %08x\n", vtsi_mat->vts_category); |
604 printf("End byte of VTSI_MAT: %08x\n", vtsi_mat->vtsi_last_byte); | |
605 printf("Start sector of VTSM_VOBS: %08x\n", vtsi_mat->vtsm_vobs); | |
606 printf("Start sector of VTSTT_VOBS: %08x\n", vtsi_mat->vtstt_vobs); | |
607 printf("Start sector of VTS_PTT_SRPT: %08x\n", vtsi_mat->vts_ptt_srpt); | |
608 printf("Start sector of VTS_PGCIT: %08x\n", vtsi_mat->vts_pgcit); | |
609 printf("Start sector of VTSM_PGCI_UT: %08x\n", vtsi_mat->vtsm_pgci_ut); | |
610 printf("Start sector of VTS_TMAPT: %08x\n", vtsi_mat->vts_tmapt); | |
611 printf("Start sector of VTSM_C_ADT: %08x\n", vtsi_mat->vtsm_c_adt); | |
612 printf("Start sector of VTSM_VOBU_ADMAP: %08x\n",vtsi_mat->vtsm_vobu_admap); | |
613 printf("Start sector of VTS_C_ADT: %08x\n", vtsi_mat->vts_c_adt); | |
614 printf("Start sector of VTS_VOBU_ADMAP: %08x\n", vtsi_mat->vts_vobu_admap); | |
615 | |
616 printf("Video attributes of VTSM_VOBS: "); | |
15874 | 617 ifoPrint_video_attributes(&vtsi_mat->vtsm_video_attr); |
7029 | 618 printf("\n"); |
619 | |
620 printf("VTSM Number of Audio attributes: %i\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
621 vtsi_mat->nr_of_vtsm_audio_streams); |
7029 | 622 if(vtsi_mat->nr_of_vtsm_audio_streams > 0) { |
623 printf("\tstream %i status: ", 1); | |
15874 | 624 ifoPrint_audio_attributes(&vtsi_mat->vtsm_audio_attr); |
7029 | 625 printf("\n"); |
626 } | |
627 | |
628 printf("VTSM Number of Sub-picture attributes: %i\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
629 vtsi_mat->nr_of_vtsm_subp_streams); |
7029 | 630 if(vtsi_mat->nr_of_vtsm_subp_streams > 0) { |
631 printf("\tstream %2i status: ", 1); | |
15874 | 632 ifoPrint_subp_attributes(&vtsi_mat->vtsm_subp_attr); |
7029 | 633 printf("\n"); |
634 } | |
635 | |
636 printf("Video attributes of VTS_VOBS: "); | |
15874 | 637 ifoPrint_video_attributes(&vtsi_mat->vts_video_attr); |
7029 | 638 printf("\n"); |
639 | |
640 printf("VTS Number of Audio attributes: %i\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
641 vtsi_mat->nr_of_vts_audio_streams); |
7029 | 642 for(i = 0; i < vtsi_mat->nr_of_vts_audio_streams; i++) { |
643 printf("\tstream %i status: ", i); | |
15874 | 644 ifoPrint_audio_attributes(&vtsi_mat->vts_audio_attr[i]); |
7029 | 645 printf("\n"); |
646 } | |
647 | |
648 printf("VTS Number of Subpicture attributes: %i\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
649 vtsi_mat->nr_of_vts_subp_streams); |
7029 | 650 for(i = 0; i < vtsi_mat->nr_of_vts_subp_streams; i++) { |
651 printf("\tstream %2i status: ", i); | |
15874 | 652 ifoPrint_subp_attributes(&vtsi_mat->vts_subp_attr[i]); |
7029 | 653 printf("\n"); |
654 } | |
15874 | 655 |
656 /* FIXME: Add printing of MultiChannel Extension */ | |
7029 | 657 } |
658 | |
659 | |
660 static void ifoPrint_PGC_COMMAND_TBL(pgc_command_tbl_t *cmd_tbl) { | |
661 int i; | |
662 | |
663 if(cmd_tbl == NULL) { | |
664 printf("No Command table present\n"); | |
665 return; | |
666 } | |
667 | |
668 printf("Number of Pre commands: %i\n", cmd_tbl->nr_of_pre); | |
669 for(i = 0; i < cmd_tbl->nr_of_pre; i++) { | |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
670 cmdPrint_CMD(i, &cmd_tbl->pre_cmds[i]); |
7029 | 671 } |
672 | |
673 printf("Number of Post commands: %i\n", cmd_tbl->nr_of_post); | |
674 for(i = 0; i < cmd_tbl->nr_of_post; i++) { | |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
675 cmdPrint_CMD(i, &cmd_tbl->post_cmds[i]); |
7029 | 676 } |
677 | |
678 printf("Number of Cell commands: %i\n", cmd_tbl->nr_of_cell); | |
679 for(i = 0; i < cmd_tbl->nr_of_cell; i++) { | |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
680 cmdPrint_CMD(i, &cmd_tbl->cell_cmds[i]); |
7029 | 681 } |
682 } | |
683 | |
684 | |
685 static void ifoPrint_PGC_PROGRAM_MAP(pgc_program_map_t *program_map, int nr) { | |
686 int i; | |
687 | |
688 if(program_map == NULL) { | |
689 printf("No Program map present\n"); | |
690 return; | |
691 } | |
692 | |
693 for(i = 0; i < nr; i++) { | |
694 printf("Program %3i Entry Cell: %3i\n", i + 1, program_map[i]); | |
695 } | |
696 } | |
697 | |
698 | |
699 static void ifoPrint_CELL_PLAYBACK(cell_playback_t *cell_playback, int nr) { | |
700 int i; | |
701 | |
702 if(cell_playback == NULL) { | |
703 printf("No Cell Playback info present\n"); | |
704 return; | |
705 } | |
706 | |
707 for(i=0;i<nr;i++) { | |
708 printf("Cell: %3i ", i + 1); | |
709 | |
15874 | 710 ifoPrint_time(&cell_playback[i].playback_time); |
7029 | 711 printf("\t"); |
712 | |
713 if(cell_playback[i].block_mode || cell_playback[i].block_type) { | |
714 const char *s; | |
715 switch(cell_playback[i].block_mode) { | |
716 case 0: | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
717 s = "not a"; break; |
7029 | 718 case 1: |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
719 s = "the first"; break; |
7029 | 720 case 2: |
721 default: | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
722 s = ""; break; |
7029 | 723 case 3: |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
724 s = "last"; break; |
7029 | 725 } |
726 printf("%s cell in the block ", s); | |
727 | |
728 switch(cell_playback[i].block_type) { | |
729 case 0: | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
730 printf("not part of the block "); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
731 break; |
7029 | 732 case 1: |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
733 printf("angle block "); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
734 break; |
7029 | 735 case 2: |
736 case 3: | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
737 printf("(send bug repport) "); |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
738 break; |
7029 | 739 } |
740 } | |
741 if(cell_playback[i].seamless_play) | |
742 printf("presented seamlessly "); | |
743 if(cell_playback[i].interleaved) | |
744 printf("cell is interleaved "); | |
745 if(cell_playback[i].stc_discontinuity) | |
746 printf("STC_discontinuty "); | |
747 if(cell_playback[i].seamless_angle) | |
748 printf("only seamless angle "); | |
749 if(cell_playback[i].restricted) | |
750 printf("restricted cell "); | |
751 | |
752 if(cell_playback[i].still_time) | |
753 printf("still time %d ", cell_playback[i].still_time); | |
754 if(cell_playback[i].cell_cmd_nr) | |
755 printf("cell command %d", cell_playback[i].cell_cmd_nr); | |
756 | |
757 printf("\n\tStart sector: %08x\tFirst ILVU end sector: %08x\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
758 cell_playback[i].first_sector, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
759 cell_playback[i].first_ilvu_end_sector); |
7029 | 760 printf("\tEnd sector: %08x\tLast VOBU start sector: %08x\n", |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
761 cell_playback[i].last_sector, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
762 cell_playback[i].last_vobu_start_sector); |
7029 | 763 } |
764 } | |
765 | |
766 static void ifoPrint_CELL_POSITION(cell_position_t *cell_position, int nr) { | |
767 int i; | |
768 | |
769 if(cell_position == NULL) { | |
770 printf("No Cell Position info present\n"); | |
771 return; | |
772 } | |
773 | |
774 for(i=0;i<nr;i++) { | |
775 printf("Cell: %3i has VOB ID: %3i, Cell ID: %3i\n", i + 1, | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
776 cell_position[i].vob_id_nr, cell_position[i].cell_nr); |
7029 | 777 } |
778 } | |
779 | |
780 | |
781 void ifoPrint_PGC(pgc_t *pgc) { | |
782 int i; | |
783 | |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
784 if(pgc == NULL) { |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
785 printf("Error: No PGC present\n"); |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
786 return; |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
787 } |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
788 |
7029 | 789 printf("Number of Programs: %i\n", pgc->nr_of_programs); |
790 printf("Number of Cells: %i\n", pgc->nr_of_cells); | |
791 /* Check that time is 0:0:0:0 also if nr_of_programs==0 */ | |
792 printf("Playback time: "); | |
15874 | 793 ifoPrint_time(&pgc->playback_time); printf("\n"); |
7029 | 794 |
795 /* If no programs/no time then does this mean anything? */ | |
796 printf("Prohibited user operations: "); | |
797 ifoPrint_USER_OPS(&pgc->prohibited_ops); | |
798 | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
799 for(i = 0; i < 8; i++) { |
25122
870e5564d0f7
replaced audio_mapping_t and sub_mapping_t with uint16_t and uint32_t
nicodvb
parents:
24050
diff
changeset
|
800 if(pgc->audio_control[i] & 0x8000) { /* The 'is present' bit */ |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
801 printf("Audio stream %i control: %04x\n", |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
802 i, pgc->audio_control[i]); |
7029 | 803 } |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
804 } |
7029 | 805 |
806 for(i = 0; i < 32; i++) { | |
25122
870e5564d0f7
replaced audio_mapping_t and sub_mapping_t with uint16_t and uint32_t
nicodvb
parents:
24050
diff
changeset
|
807 if(pgc->subp_control[i] & 0x80000000) { /* The 'is present' bit */ |
7029 | 808 printf("Subpicture stream %2i control: %08x\n", |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
809 i, pgc->subp_control[i]); |
7029 | 810 } |
811 } | |
812 | |
813 printf("Next PGC number: %i\n", pgc->next_pgc_nr); | |
814 printf("Prev PGC number: %i\n", pgc->prev_pgc_nr); | |
815 printf("GoUp PGC number: %i\n", pgc->goup_pgc_nr); | |
816 if(pgc->nr_of_programs != 0) { | |
817 printf("Still time: %i seconds (255=inf)\n", pgc->still_time); | |
15874 | 818 if(pgc->pg_playback_mode == 0) |
819 printf("PG Playback mode: Sequential\n"); | |
820 else if(!(pgc->pg_playback_mode & 0x80)) | |
821 printf("PG Playback mode: Random %i\n", pgc->pg_playback_mode); | |
822 else | |
823 printf("PG Playback mode: Shuffle %i\n", pgc->pg_playback_mode & 0x7f ); | |
7029 | 824 } |
825 | |
826 if(pgc->nr_of_programs != 0) { | |
827 for(i = 0; i < 16; i++) { | |
828 printf("Color %2i: %08x\n", i, pgc->palette[i]); | |
829 } | |
830 } | |
831 | |
832 /* Memmory offsets to div. tables. */ | |
833 ifoPrint_PGC_COMMAND_TBL(pgc->command_tbl); | |
834 ifoPrint_PGC_PROGRAM_MAP(pgc->program_map, pgc->nr_of_programs); | |
835 ifoPrint_CELL_PLAYBACK(pgc->cell_playback, pgc->nr_of_cells); | |
836 ifoPrint_CELL_POSITION(pgc->cell_position, pgc->nr_of_cells); | |
837 } | |
838 | |
839 | |
840 void ifoPrint_TT_SRPT(tt_srpt_t *tt_srpt) { | |
841 int i; | |
842 | |
843 printf("Number of TitleTrack search pointers: %i\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
844 tt_srpt->nr_of_srpts); |
7029 | 845 for(i=0;i<tt_srpt->nr_of_srpts;i++) { |
846 printf("Title Track index %i\n", i + 1); | |
847 printf("\tTitle set number (VTS): %i", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
848 tt_srpt->title[i].title_set_nr); |
7029 | 849 printf("\tVTS_TTN: %i\n", tt_srpt->title[i].vts_ttn); |
850 printf("\tNumber of PTTs: %i\n", tt_srpt->title[i].nr_of_ptts); | |
851 printf("\tNumber of angles: %i\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
852 tt_srpt->title[i].nr_of_angles); |
15874 | 853 printf("\tTitle playback type: %s%s%s%s%s%s%s\n", |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
854 tt_srpt->title[i].pb_ty.multi_or_random_pgc_title ? |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
855 " One Random PGC Title or Multi PGC Title" : |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
856 " One Sequential PGC Title", |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
857 tt_srpt->title[i].pb_ty.jlc_exists_in_cell_cmd ? |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
858 "" : ", No Link/Jump/Call exists in Cell command", |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
859 tt_srpt->title[i].pb_ty.jlc_exists_in_prepost_cmd ? |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
860 "" : ", No Link/Jump/Call exists in Pre- and/or Post-command", |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
861 tt_srpt->title[i].pb_ty.jlc_exists_in_button_cmd ? |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
862 "" : ", No Link/Jump/Call exists in Button command", |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
863 tt_srpt->title[i].pb_ty.jlc_exists_in_tt_dom ? |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
864 "" : ", No Link/Jump/Call exists in TT_DOM", |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
865 tt_srpt->title[i].pb_ty.chapter_search_or_play ? |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
866 ", UOP1 (TT_Play and PTT_Search) prohibited" : "", |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
867 tt_srpt->title[i].pb_ty.title_or_time_play ? |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
868 ", UOP0 (Time_Play and Time_Search) prohibited" : "" |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
869 ); |
7029 | 870 printf("\tParental ID field: %04x\n", |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
871 tt_srpt->title[i].parental_id); |
7029 | 872 printf("\tTitle set starting sector %08x\n", |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
873 tt_srpt->title[i].title_set_sector); |
7029 | 874 } |
875 } | |
876 | |
877 | |
878 void ifoPrint_VTS_PTT_SRPT(vts_ptt_srpt_t *vts_ptt_srpt) { | |
879 int i, j; | |
880 printf(" nr_of_srpts %i last byte %i\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
881 vts_ptt_srpt->nr_of_srpts, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
882 vts_ptt_srpt->last_byte); |
7029 | 883 for(i=0;i<vts_ptt_srpt->nr_of_srpts;i++) { |
15874 | 884 printf("\nVTS_PTT number %d has a offset %d relative to VTS_PTT_SRPT\n", |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
885 i + 1, vts_ptt_srpt->ttu_offset[i]); |
7029 | 886 for(j=0;j<vts_ptt_srpt->title[i].nr_of_ptts;j++) { |
887 printf("VTS_PTT_SRPT - Title %3i part %3i: PGC: %3i PG: %3i\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
888 i + 1, j + 1, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
889 vts_ptt_srpt->title[i].ptt[j].pgcn, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
890 vts_ptt_srpt->title[i].ptt[j].pgn ); |
7029 | 891 } |
892 } | |
893 } | |
894 | |
895 | |
896 void ifoPrint_PTL_MAIT(ptl_mait_t *ptl_mait) { | |
15874 | 897 int i, level, vts; |
7029 | 898 |
899 printf("Number of Countries: %i\n", ptl_mait->nr_of_countries); | |
900 printf("Number of VTSs: %i\n", ptl_mait->nr_of_vtss); | |
15874 | 901 printf("Last byte: %i\n", ptl_mait->last_byte); |
7029 | 902 |
903 for(i = 0; i < ptl_mait->nr_of_countries; i++) { | |
15874 | 904 |
905 printf("Start byte: %i\n", ptl_mait->countries[i].pf_ptl_mai_start_byte); | |
906 printf("Parental Masks for country: %c%c\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
907 ptl_mait->countries[i].country_code >> 8, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
908 ptl_mait->countries[i].country_code & 0xff); |
15874 | 909 |
910 for(vts = 0; vts <= ptl_mait->nr_of_vtss; vts++) { | |
911 if( vts == 0 ) { | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
912 printf("VMG "); |
15874 | 913 } else { |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
914 printf("VTS %2d ", vts); |
15874 | 915 } |
916 for(level = 0; level < 8; level++) { | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
917 printf("%d: %04x ", level, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
918 ptl_mait->countries[i].pf_ptl_mai[vts][level] ); |
15874 | 919 } |
7029 | 920 printf("\n"); |
921 } | |
922 } | |
923 } | |
924 | |
15874 | 925 void ifoPrint_VTS_TMAPT(vts_tmapt_t *vts_tmapt) { |
926 unsigned int timeunit; | |
927 int i, j; | |
928 | |
929 printf("Number of VTS_TMAPS: %i\n", vts_tmapt->nr_of_tmaps); | |
930 printf("Last byte: %i\n", vts_tmapt->last_byte); | |
931 | |
932 for(i = 0; i < vts_tmapt->nr_of_tmaps; i++) { | |
933 printf("TMAP %i\n", i + 1); | |
934 printf(" offset %d relative to VTS_TMAPTI\n", vts_tmapt->tmap_offset[i]); | |
935 printf(" Time unit (seconds): %i\n", vts_tmapt->tmap[i].tmu); | |
936 printf(" Number of entries: %i\n", vts_tmapt->tmap[i].nr_of_entries); | |
937 timeunit = vts_tmapt->tmap[i].tmu; | |
938 for(j = 0; j < vts_tmapt->tmap[i].nr_of_entries; j++) { | |
939 unsigned int ac_time = timeunit * (j + 1); | |
940 printf("Time: %2i:%02i:%02i VOBU Sector: 0x%08x %s\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
941 ac_time / (60 * 60), (ac_time / 60) % 60, ac_time % 60, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
942 vts_tmapt->tmap[i].map_ent[j] & 0x7fffffff, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
943 (vts_tmapt->tmap[i].map_ent[j] >> 31) ? "discontinuity" : ""); |
15874 | 944 } |
945 } | |
946 } | |
7029 | 947 |
948 void ifoPrint_C_ADT(c_adt_t *c_adt) { | |
949 int i, entries; | |
950 | |
951 printf("Number of VOBs in this VOBS: %i\n", c_adt->nr_of_vobs); | |
952 //entries = c_adt->nr_of_vobs; | |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
953 entries = (c_adt->last_byte + 1 - C_ADT_SIZE)/sizeof(cell_adr_t); |
7029 | 954 |
955 for(i = 0; i < entries; i++) { | |
956 printf("VOB ID: %3i, Cell ID: %3i ", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
957 c_adt->cell_adr_table[i].vob_id, c_adt->cell_adr_table[i].cell_id); |
7029 | 958 printf("Sector (first): 0x%08x (last): 0x%08x\n", |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
959 c_adt->cell_adr_table[i].start_sector, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
960 c_adt->cell_adr_table[i].last_sector); |
7029 | 961 } |
962 } | |
963 | |
964 | |
965 void ifoPrint_VOBU_ADMAP(vobu_admap_t *vobu_admap) { | |
966 int i, entries; | |
967 | |
968 entries = (vobu_admap->last_byte + 1 - VOBU_ADMAP_SIZE)/4; | |
969 for(i = 0; i < entries; i++) { | |
970 printf("VOBU %5i First sector: 0x%08x\n", i + 1, | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
971 vobu_admap->vobu_start_sectors[i]); |
7029 | 972 } |
973 } | |
974 | |
975 | |
976 void ifoPrint_PGCIT(pgcit_t *pgcit) { | |
977 int i; | |
978 | |
979 for(i = 0; i < pgcit->nr_of_pgci_srp; i++) { | |
980 printf("\nProgram (PGC): %3i\t", i + 1); | |
981 printf("PGC Category: Entry id 0x%02x, ", pgcit->pgci_srp[i].entry_id); | |
982 printf("Parental ID mask 0x%04x\n", pgcit->pgci_srp[i].ptl_id_mask); | |
983 ifoPrint_PGC(pgcit->pgci_srp[i].pgc); | |
984 } | |
985 } | |
986 | |
987 | |
988 void ifoPrint_PGCI_UT(pgci_ut_t *pgci_ut) { | |
989 int i; | |
990 | |
991 printf("Number of Menu Language Units (PGCI_LU): %3i\n", pgci_ut->nr_of_lus); | |
992 for(i = 0; i < pgci_ut->nr_of_lus; i++) { | |
15874 | 993 printf("\nMenu Language Code: %c%c (%c)\n", |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
994 pgci_ut->lu[i].lang_code >> 8, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
995 pgci_ut->lu[i].lang_code & 0xff, |
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
996 pgci_ut->lu[i].lang_extension ? pgci_ut->lu[i].lang_extension :' '); |
7029 | 997 printf("Menu Existence: %02x\n", pgci_ut->lu[i].exists); |
998 ifoPrint_PGCIT(pgci_ut->lu[i].pgcit); | |
999 } | |
1000 } | |
1001 | |
1002 | |
1003 static void ifoPrint_VTS_ATTRIBUTES(vts_attributes_t *vts_attributes) { | |
1004 int i; | |
1005 | |
1006 printf("VTS_CAT Application type: %08x\n", vts_attributes->vts_cat); | |
1007 | |
1008 printf("Video attributes of VTSM_VOBS: "); | |
15874 | 1009 ifoPrint_video_attributes(&vts_attributes->vtsm_vobs_attr); |
7029 | 1010 printf("\n"); |
1011 printf("Number of Audio streams: %i\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
1012 vts_attributes->nr_of_vtsm_audio_streams); |
7029 | 1013 if(vts_attributes->nr_of_vtsm_audio_streams > 0) { |
1014 printf("\tstream %i attributes: ", 1); | |
15874 | 1015 ifoPrint_audio_attributes(&vts_attributes->vtsm_audio_attr); |
7029 | 1016 printf("\n"); |
1017 } | |
1018 printf("Number of Subpicture streams: %i\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
1019 vts_attributes->nr_of_vtsm_subp_streams); |
7029 | 1020 if(vts_attributes->nr_of_vtsm_subp_streams > 0) { |
1021 printf("\tstream %2i attributes: ", 1); | |
15874 | 1022 ifoPrint_subp_attributes(&vts_attributes->vtsm_subp_attr); |
7029 | 1023 printf("\n"); |
1024 } | |
1025 | |
1026 printf("Video attributes of VTSTT_VOBS: "); | |
15874 | 1027 ifoPrint_video_attributes(&vts_attributes->vtstt_vobs_video_attr); |
7029 | 1028 printf("\n"); |
1029 printf("Number of Audio streams: %i\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
1030 vts_attributes->nr_of_vtstt_audio_streams); |
7029 | 1031 for(i = 0; i < vts_attributes->nr_of_vtstt_audio_streams; i++) { |
1032 printf("\tstream %i attributes: ", i); | |
15874 | 1033 ifoPrint_audio_attributes(&vts_attributes->vtstt_audio_attr[i]); |
7029 | 1034 printf("\n"); |
1035 } | |
1036 | |
1037 printf("Number of Subpicture streams: %i\n", | |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
1038 vts_attributes->nr_of_vtstt_subp_streams); |
7029 | 1039 for(i = 0; i < vts_attributes->nr_of_vtstt_subp_streams; i++) { |
1040 printf("\tstream %2i attributes: ", i); | |
15874 | 1041 ifoPrint_subp_attributes(&vts_attributes->vtstt_subp_attr[i]); |
7029 | 1042 printf("\n"); |
1043 } | |
1044 } | |
1045 | |
1046 | |
1047 void ifoPrint_VTS_ATRT(vts_atrt_t *vts_atrt) { | |
1048 int i; | |
1049 | |
1050 printf("Number of Video Title Sets: %3i\n", vts_atrt->nr_of_vtss); | |
1051 for(i = 0; i < vts_atrt->nr_of_vtss; i++) { | |
1052 printf("\nVideo Title Set %i\n", i + 1); | |
15874 | 1053 printf(" offset %d relative to VMG_VTS_ATRT\n", |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
1054 vts_atrt->vts_atrt_offsets[i]); |
7029 | 1055 ifoPrint_VTS_ATTRIBUTES(&vts_atrt->vts[i]); |
1056 } | |
1057 } | |
1058 | |
1059 | |
1060 void ifoPrint(dvd_reader_t *dvd, int title) { | |
1061 ifo_handle_t *ifohandle; | |
1062 | |
1063 ifohandle = ifoOpen(dvd, title); | |
1064 if(!ifohandle) { | |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
1065 if(dvdread_verbose(dvd) >= 0) { |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
1066 fprintf(stderr, "Can't open info file for title %d\n", title); |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
1067 } |
7029 | 1068 return; |
1069 } | |
1070 | |
1071 | |
1072 if(ifohandle->vmgi_mat) { | |
1073 | |
1074 printf("VMG top level\n-------------\n"); | |
1075 ifoPrint_VMGI_MAT(ifohandle->vmgi_mat); | |
1076 | |
1077 printf("\nFirst Play PGC\n--------------\n"); | |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
1078 if(ifohandle->first_play_pgc) { |
24050
1542693b2a30
Sync libdvdread with version 0.9.5 (cosmetic changes).
diego
parents:
24047
diff
changeset
|
1079 ifoPrint_PGC(ifohandle->first_play_pgc); |
24047
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
1080 } else { |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
1081 printf("No First Play PGC present\n"); |
de28f9e8cb00
Sync libdvdread with version 0.9.5 (functional changes).
diego
parents:
20981
diff
changeset
|
1082 } |
7029 | 1083 |
1084 printf("\nTitle Track search pointer table\n"); | |
1085 printf( "------------------------------------------------\n"); | |
1086 ifoPrint_TT_SRPT(ifohandle->tt_srpt); | |
1087 | |
1088 printf("\nMenu PGCI Unit table\n"); | |
1089 printf( "--------------------\n"); | |
1090 if(ifohandle->pgci_ut) { | |
1091 ifoPrint_PGCI_UT(ifohandle->pgci_ut); | |
1092 } else { | |
1093 printf("No PGCI Unit table present\n"); | |
1094 } | |
1095 | |
1096 printf("\nParental Manegment Information table\n"); | |
1097 printf( "------------------------------------\n"); | |
1098 if(ifohandle->ptl_mait) { | |
1099 ifoPrint_PTL_MAIT(ifohandle->ptl_mait); | |
1100 } else { | |
1101 printf("No Parental Management Information present\n"); | |
1102 } | |
1103 | |
1104 printf("\nVideo Title Set Attribute Table\n"); | |
1105 printf( "-------------------------------\n"); | |
1106 ifoPrint_VTS_ATRT(ifohandle->vts_atrt); | |
1107 | |
1108 printf("\nText Data Manager Information\n"); | |
1109 printf( "-----------------------------\n"); | |
1110 if(ifohandle->txtdt_mgi) { | |
1111 //ifoPrint_TXTDT_MGI(&(vmgi->txtdt_mgi)); | |
1112 } else { | |
1113 printf("No Text Data Manager Information present\n"); | |
1114 } | |
1115 | |
1116 printf("\nMenu Cell Adress table\n"); | |
1117 printf( "-----------------\n"); | |
1118 if(ifohandle->menu_c_adt) { | |
1119 ifoPrint_C_ADT(ifohandle->menu_c_adt); | |
1120 } else { | |
1121 printf("No Menu Cell Adress table present\n"); | |
1122 } | |
1123 | |
1124 printf("\nVideo Manager Menu VOBU address map\n"); | |
1125 printf( "-----------------\n"); | |
1126 if(ifohandle->menu_vobu_admap) { | |
1127 ifoPrint_VOBU_ADMAP(ifohandle->menu_vobu_admap); | |
1128 } else { | |
1129 printf("No Menu VOBU address map present\n"); | |
1130 } | |
1131 } | |
1132 | |
1133 | |
1134 if(ifohandle->vtsi_mat) { | |
1135 | |
1136 printf("VTS top level\n-------------\n"); | |
1137 ifoPrint_VTSI_MAT(ifohandle->vtsi_mat); | |
1138 | |
1139 printf("\nPart of Title Track search pointer table\n"); | |
1140 printf( "----------------------------------------------\n"); | |
1141 ifoPrint_VTS_PTT_SRPT(ifohandle->vts_ptt_srpt); | |
1142 | |
1143 printf("\nPGCI Unit table\n"); | |
1144 printf( "--------------------\n"); | |
1145 ifoPrint_PGCIT(ifohandle->vts_pgcit); | |
1146 | |
1147 printf("\nMenu PGCI Unit table\n"); | |
1148 printf( "--------------------\n"); | |
1149 if(ifohandle->pgci_ut) { | |
1150 ifoPrint_PGCI_UT(ifohandle->pgci_ut); | |
1151 } else { | |
1152 printf("No Menu PGCI Unit table present\n"); | |
1153 } | |
15874 | 1154 |
1155 printf("\nTime Search table\n"); | |
1156 printf( "-----------------\n"); | |
1157 if(ifohandle->vts_tmapt) { | |
1158 ifoPrint_VTS_TMAPT(ifohandle->vts_tmapt); | |
1159 } else { | |
1160 printf("No Time Search table present\n"); | |
1161 } | |
7029 | 1162 |
1163 printf("\nMenu Cell Adress table\n"); | |
1164 printf( "-----------------\n"); | |
1165 if(ifohandle->menu_c_adt) { | |
1166 ifoPrint_C_ADT(ifohandle->menu_c_adt); | |
1167 } else { | |
1168 printf("No Cell Adress table present\n"); | |
1169 } | |
1170 | |
1171 printf("\nVideo Title Set Menu VOBU address map\n"); | |
1172 printf( "-----------------\n"); | |
1173 if(ifohandle->menu_vobu_admap) { | |
1174 ifoPrint_VOBU_ADMAP(ifohandle->menu_vobu_admap); | |
1175 } else { | |
1176 printf("No Menu VOBU address map present\n"); | |
1177 } | |
1178 | |
1179 printf("\nCell Adress table\n"); | |
1180 printf( "-----------------\n"); | |
1181 ifoPrint_C_ADT(ifohandle->vts_c_adt); | |
1182 | |
1183 printf("\nVideo Title Set VOBU address map\n"); | |
1184 printf( "-----------------\n"); | |
1185 ifoPrint_VOBU_ADMAP(ifohandle->vts_vobu_admap); | |
1186 } | |
1187 | |
1188 ifoClose(ifohandle); | |
1189 } | |
1190 |