[FFmpeg-devel] [PATCH] SubRip decoder
Aurelien Jacobs
aurel
Tue Dec 7 21:47:28 CET 2010
On Sat, Dec 04, 2010 at 03:58:58PM +0100, Aurelien Jacobs wrote:
> On Sun, Nov 28, 2010 at 05:53:04PM -0500, Alexander Strange wrote:
> >
> > On Nov 28, 2010, at 5:31 PM, Aurelien Jacobs wrote:
> >
> > > Hi,
> > >
> > > $subject
> > >
> > > This SubRip decoder supports all the SubRip features that I know about.
> > > It especially support everything tested by the sample files from
> > > http://ale5000.altervista.org/subtitles.htm
> >
> > What generates files with moving display coordinates?
>
> Emacs/vim/... ?
>
> > None of those players support them, and neither does vsfilter:
> >
> > http://google.com/codesearch/p?hl=en#_g4u1OIsR_M/trunk/src/subtitles/STS.cpp&q=package:vsfilter%20subrip&l=476
> >
> > Until the day comes when WebSRT is relevant, we might as well be parser compatible with vsfilter and ignore them.
>
> Well, if someone happens to write them in a file, I guess it's not just
> for fun. So why should we ignore them instead of trying to render them ?
> Anyway, if you insist, I can comment this part.
>
> > > + snprintf(header, sizeof(header),
> > > + "[Script Info]\r\n"
> > > + "ScriptType: v4.00+\r\n"
> > > + "\r\n"
> > > + "[V4+ Styles]\r\n"
> >
> > Watch out for the weird default PlayRes* values.
>
> The default is 384x288.
> Do you think I should choose another default value ?
>
> > > + * Copyright (c) 2010 Aurelien Jacobs <aurel at gnuage.org>
> >
> > Double space.
>
> Yes. So what ?
>
> $ git grep "Copyright.* "|wc -l
> 85
>
> It seems it is just a copy/paste from the template in COPYING.LGPLv2.1.
>
> > > + case '{':
> > > + an += sscanf(in, "{\\an%*1u}%c", &c) == 1;
> > > + if ((an != 1 && sscanf(in, "{\\%*[^}]}%n%c", &len, &c) > 0) ||
> > > + sscanf(in, "{%*1[CcFfoPSsYy]:%*[^}]}%n%c", &len, &c) > 0) {
> > > + in += len - 1;
> > > + } else
> > > + *out++ = *in;
> > > + break;
> >
> >
> > What does this do? I hate reading handwritten parsers...
>
> Comment added.
>
> > > + int i, j, unkown = 0;
> >
> >
> > 'unknown'
>
> Thanks, fixed.
>
> > > +static const char *read_ts(const char *buf, int *ts_start, int *ts_end,
> > > + int *x1, int *y1, int *x2, int *y2)
> > > +{
> > > + int i, hs, ms, ss, he, me, se;
> > > +
> > > + for (i=0; i<2; i++) {
> >
> >
> > What is the loop for?
>
> It allows supporting standard srt as well as the variant which don't
> have a line containing event number just before the timestamp line.
>
> > Please add some testcases.
>
> Added a fate test.
Ping ?
Aurel
More information about the ffmpeg-devel
mailing list