CVS: main subreader.c,1.46,1.47
Update of /cvsroot/mplayer/main In directory mplayer:/var/tmp.root/cvs-serv11108 Modified Files: subreader.c Log Message: added adjust_subs_time function which corrects bad sub->end time after reading subs so it is sub format independent Index: subreader.c =================================================================== RCS file: /cvsroot/mplayer/main/subreader.c,v retrieving revision 1.46 retrieving revision 1.47 diff -u -r1.46 -r1.47 --- subreader.c 8 Jan 2002 11:03:43 -0000 1.46 +++ subreader.c 8 Jan 2002 12:45:38 -0000 1.47 @@ -171,8 +171,6 @@ char *p, *next; int i; -static subtitle *prevsub = NULL; - memset(current, 0, sizeof(subtitle)); do { @@ -194,14 +192,6 @@ } current->lines= ++i; - if (!current->end) - current->end = current->start + 150; /* approx 6 sec */ - - if (prevsub && (prevsub->end >= current->start)) - prevsub->end = current->start - 1; /* correct previous end time */ - - prevsub = current; - return current; } @@ -609,6 +599,24 @@ #endif +static void adjust_subs_time(subtitle* sub, unsigned long subtime){ + int i = sub_num; + subtitle* nextsub; + + for (;;){ + if (sub->end <= sub->start) + sub->end = sub->start + subtime; + if (!--i) return; + nextsub = sub + 1; + if (sub->end >= nextsub->start){ + sub->end = nextsub->start - 1; + if (sub->end - sub->start > subtime) + sub->end = sub->start + subtime; + } + sub = nextsub; + } +} + subtitle* sub_read_file (char *filename) { FILE *fd; int n_max; @@ -674,6 +682,11 @@ return NULL; } +// if sub->end time is 0 set it to sub_>start + ~6 sec but not +// after next sub->start time +// correct also if sub->end time is below sub->start time +// maybe default subtime (150fms) should be a program option AST + adjust_subs_time(first, 150); return first; }
participants (1)
-
Adam Tla/lka