# HG changeset patch # User pl # Date 1020808681 0 # Node ID 89c87be7a2484bf3837546375cfd0ec0217ed6ed # Parent 5f020e2dc745830700fc3fa5ce4e279d5b1e542e patch by Didier : - subviewer 2.0 support diff -r 5f020e2dc745 -r 89c87be7a248 subreader.c --- a/subreader.c Tue May 07 21:51:47 2002 +0000 +++ b/subreader.c Tue May 07 21:58:01 2002 +0000 @@ -252,6 +252,39 @@ return current; } +subtitle *sub_read_line_subviewer2(FILE *fd,subtitle *current) { + char line[LINE_LEN+1]; + int a1,a2,a3,a4; + char *p=NULL; + int i,len; + + while (!current->text[0]) { + if (!fgets (line, LINE_LEN, fd)) return NULL; + if (line[0]!='{') + continue; + if ((len=sscanf (line, "{T %d:%d:%d:%d",&a1,&a2,&a3,&a4)) < 4) + continue; + current->start = a1*360000+a2*6000+a3*100+a4/10; + for (i=0; itext[i]=(char *)malloc (len+1); + if (!current->text[i]) return ERR; + strncpy (current->text[i], line, len); current->text[i][len]='\0'; + ++i; + } else { + break; + } + } + current->lines=i; + } + return current; +} + + subtitle *sub_read_line_vplayer(FILE *fd,subtitle *current) { char line[LINE_LEN+1]; int a1,a2,a3; @@ -491,6 +524,8 @@ {sub_uses_time=1;return SUB_SUBRIP;} if (sscanf (line, "%d:%d:%d,%d --> %d:%d:%d,%d", &i, &i, &i, &i, &i, &i, &i, &i)==8) {sub_uses_time=1;return SUB_SUBVIEWER;} + if (sscanf (line, "{T %d:%d:%d:%d",&i, &i, &i, &i)) + {sub_uses_time=1;return SUB_SUBVIEWER2;} if (strstr (line, "")) {sub_uses_time=1; return SUB_SAMI;} if (sscanf (line, "%d:%d:%d:", &i, &i, &i )==3) @@ -626,7 +661,7 @@ int n_max; subtitle *first; char *fmtname[] = { "microdvd", "subrip", "subviewer", "sami", "vplayer", - "rt", "ssa", "dunnowhat", "mpsub", "aqt" }; + "rt", "ssa", "dunnowhat", "mpsub", "aqt", "subviewer 2.0" }; subtitle * (*func[])(FILE *fd,subtitle *dest)= { sub_read_line_microdvd, @@ -638,7 +673,8 @@ sub_read_line_ssa, sub_read_line_dunnowhat, sub_read_line_mpsub, - sub_read_line_aqt + sub_read_line_aqt, + sub_read_line_subviewer2 }; if(filename==NULL) return NULL; //qnx segfault diff -r 5f020e2dc745 -r 89c87be7a248 subreader.h --- a/subreader.h Tue May 07 21:51:47 2002 +0000 +++ b/subreader.h Tue May 07 21:58:01 2002 +0000 @@ -17,6 +17,7 @@ #define SUB_DUNNOWHAT 7 // FIXME what format is it ? #define SUB_MPSUB 8 #define SUB_AQTITLE 9 +#define SUB_SUBVIEWER2 10 // One of the SUB_* constant above extern int sub_format;