23
23
"ogmtools v" VERSION "\n"
24
24
"Usage: dvdxchap [options] DVD-SOURCE\n\n"
26
" -t, --title num Use title 'num'. Default is 1.\n"
27
" -v, --verbose Increase verbosity\n"
28
" -V, --version Show version information\n"
29
" -h, --help Show this help\n");
26
" -t, --title num Use title 'num'. Default is 1.\n"
27
" -c, --chapter start[-end] Chapter to start at (to end at). Default 1.\n"
28
" -v, --verbose Increase verbosity\n"
29
" -V, --version Show version information\n"
30
" -h, --help Show this help\n");
32
void display_chapters(char *source, int title, int verbose) {
33
void display_chapters(char *source, int title, int start, int end, int verbose) {
42
long hour, minute, second, ms, overall_time, cur_time;
43
long hour, minute, second, ms, overall_time, start_time, cur_time;
44
45
dvd = DVDOpen(source);
74
76
fprintf(stderr, "(%s) Can't open VTS info.\n", __FILE__);
83
if ((end <= start) || (end > tt_srpt->title[title].nr_of_ptts)) {
84
fprintf(stderr, "(%s) Invalid end chapter.\n", __FILE__);
79
91
ttn = tt_srpt->title[title].vts_ttn;
80
92
vts_ptt_srpt = vts->vts_ptt_srpt;
93
start_time = overall_time = 0;
82
94
for (i = 0; i < tt_srpt->title[title].nr_of_ptts - 1; i++) {
83
95
pgc_id = vts_ptt_srpt->title[ttn - 1].ptt[i].pgcn;
84
96
pgn = vts_ptt_srpt->title[ttn - 1].ptt[i].pgn;
104
116
cur_time += (hour * 60 * 60 * 1000 + minute * 60 * 1000 + second * 1000 +
107
fprintf(stdout, "CHAPTER%02d=%02ld:%02ld:%02ld.%03ld\n", i + 1,
108
overall_time / 60 / 60 / 1000,
109
(overall_time / 60 / 1000) % 60,
110
(overall_time / 1000) % 60,
111
overall_time % 1000);
112
fprintf(stdout, "CHAPTER%02dNAME=Chapter %02d\n", i + 1, i + 1);
120
start_time = overall_time;
121
if (i >= start && (i < end || end <= 0))
123
fprintf(stdout, "CHAPTER%02d=%02ld:%02ld:%02ld.%03ld\n", i + 1 - start,
124
(overall_time - start_time) / 60 / 60 / 1000,
125
((overall_time - start_time) / 60 / 1000) % 60,
126
((overall_time - start_time) / 1000) % 60,
127
(overall_time - start_time) % 1000);
128
fprintf(stdout, "CHAPTER%02dNAME=Chapter %02d\n", i + 1 - start,
113
131
overall_time += cur_time;
115
fprintf(stdout, "CHAPTER%02d=%02ld:%02ld:%02ld.%03ld\n", i + 1,
116
overall_time / 60 / 60 / 1000,
117
(overall_time / 60 / 1000) % 60,
118
(overall_time / 1000) % 60,
119
overall_time % 1000);
120
fprintf(stdout, "CHAPTER%02dNAME=Chapter %02d\n", i + 1, i + 1);
133
if (end <= 0 || i == end)
135
fprintf(stdout, "CHAPTER%02d=%02ld:%02ld:%02ld.%03ld\n", i + 1 - start,
136
(overall_time - start_time) / 60 / 60 / 1000,
137
((overall_time - start_time) / 60 / 1000) % 60,
138
((overall_time - start_time) / 1000) % 60,
139
(overall_time - start_time) % 1000);
140
fprintf(stdout, "CHAPTER%02dNAME=Chapter %02d\n", i + 1 - start, i + 1 - start);
180
} else if (!strcmp(argv[i], "-c") || !strcmp(argv[i], "--chapter")) {
181
if ((i + 1) >= argc) {
182
fprintf(stderr, "(%s) Error: -c lacks a chapter number.\n", __FILE__);
185
if (sscanf(argv[i + 1], "%d-%d", &start, &end) < 1) {
186
fprintf(stderr, "(%s) Error: '%s' is not a valid chapter range.\n",
187
__FILE__, argv[i + 1]);
194
if ((start > end) && (end > 0)) {
159
204
if (source != NULL) {
160
205
fprintf(stderr, "(%s) Error: more than one source given.\n", __FILE__);
167
212
fprintf(stderr, "(%s) Error: No source given.\n", __FILE__);
171
display_chapters(source, title, verbose);
216
display_chapters(source, title, start, end, verbose);