Mercurial > mplayer.hg
changeset 6012:89c87be7a248
patch by Didier <did-c-debian@ifrance.com>:
- subviewer 2.0 support
author | pl |
---|---|
date | Tue, 07 May 2002 21:58:01 +0000 |
parents | 5f020e2dc745 |
children | 7f6e02a16ac4 |
files | subreader.c subreader.h |
diffstat | 2 files changed, 39 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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; i<SUB_MAX_TEXT;) { + if (!fgets (line, LINE_LEN, fd)) break; + if (line[0]=='}') break; + len=0; + for (p=line; *p!='\n' && *p!='\r' && *p; ++p,++len); + if (len) { + current->text[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, "<SAMI>")) {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