Re: [FFmpeg-devel] [PATCH 1/3] avcodec/webvttdec: Deal with WebVTT escapes

2015-10-12 Thread Clément Bœsch
On Sun, Oct 11, 2015 at 05:11:01PM +0100, Ricardo Constantino wrote:
> Bare ampersand characters are still accepted, even though out-of-spec.
> Also fixes adjacent tags not being parsed.
> 
> Fixes trac #4915
> 
> Signed-off-by: Ricardo Constantino 
> ---
>  libavcodec/webvttdec.c | 11 ++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/libavcodec/webvttdec.c b/libavcodec/webvttdec.c
> index 1284a17..fb1a422 100644
> --- a/libavcodec/webvttdec.c
> +++ b/libavcodec/webvttdec.c
> @@ -37,11 +37,14 @@ static const struct {
>  {"", "{\\b1}"}, {"", "{\\b0}"},
>  {"", "{\\u1}"}, {"", "{\\u0}"},
>  {"{", "\\{"}, {"}", "\\}"}, // escape to avoid ASS markup conflicts
> +{">", ">"}, {"<", "<"},
> +{"‎", ""}, {"‏", ""}, // FIXME: properly honor bidi marks
> +{"&", "&"}, {" ", "\\h"},
>  };
>  
>  static int webvtt_event_to_ass(AVBPrint *buf, const char *p)
>  {
> -int i, skip = 0;
> +int i, again, skip = 0;
>  
>  while (*p) {
>  
> @@ -51,12 +54,18 @@ static int webvtt_event_to_ass(AVBPrint *buf, const char 
> *p)
>  if (!strncmp(p, from, len)) {
>  av_bprintf(buf, "%s", webvtt_tag_replace[i].to);
>  p += len;
> +again = 1;
>  break;
>  }
>  }
>  if (!*p)
>  break;
>  
> +if (again) {
> +again = 0;
> +skip = 0;
> +continue;
> +}
>  if (*p == '<')
>  skip = 1;
>  else if (*p == '>')

Applied, thanks

-- 
Clément B.


signature.asc
Description: PGP signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 1/3] avcodec/webvttdec: Deal with WebVTT escapes

2015-10-11 Thread Ricardo Constantino
Bare ampersand characters are still accepted, even though out-of-spec.
Also fixes adjacent tags not being parsed.

Fixes trac #4915

Signed-off-by: Ricardo Constantino 
---
 libavcodec/webvttdec.c | 11 ++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/libavcodec/webvttdec.c b/libavcodec/webvttdec.c
index 1284a17..fb1a422 100644
--- a/libavcodec/webvttdec.c
+++ b/libavcodec/webvttdec.c
@@ -37,11 +37,14 @@ static const struct {
 {"", "{\\b1}"}, {"", "{\\b0}"},
 {"", "{\\u1}"}, {"", "{\\u0}"},
 {"{", "\\{"}, {"}", "\\}"}, // escape to avoid ASS markup conflicts
+{">", ">"}, {"<", "<"},
+{"‎", ""}, {"‏", ""}, // FIXME: properly honor bidi marks
+{"&", "&"}, {" ", "\\h"},
 };
 
 static int webvtt_event_to_ass(AVBPrint *buf, const char *p)
 {
-int i, skip = 0;
+int i, again, skip = 0;
 
 while (*p) {
 
@@ -51,12 +54,18 @@ static int webvtt_event_to_ass(AVBPrint *buf, const char *p)
 if (!strncmp(p, from, len)) {
 av_bprintf(buf, "%s", webvtt_tag_replace[i].to);
 p += len;
+again = 1;
 break;
 }
 }
 if (!*p)
 break;
 
+if (again) {
+again = 0;
+skip = 0;
+continue;
+}
 if (*p == '<')
 skip = 1;
 else if (*p == '>')
-- 
2.6.0

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 1/3] avcodec/webvttdec: Deal with WebVTT escapes

2015-10-09 Thread Ricardo Constantino
Bare ampersand characters are still accepted, even though out-of-spec.
Also fixes adjacent tags not being parsed.

Fixes trac #4915

Signed-off-by: Ricardo Constantino 
---
 libavcodec/webvttdec.c | 13 +++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/libavcodec/webvttdec.c b/libavcodec/webvttdec.c
index 1284a17..3b98e98 100644
--- a/libavcodec/webvttdec.c
+++ b/libavcodec/webvttdec.c
@@ -37,11 +37,14 @@ static const struct {
 {"", "{\\b1}"}, {"", "{\\b0}"},
 {"", "{\\u1}"}, {"", "{\\u0}"},
 {"{", "\\{"}, {"}", "\\}"}, // escape to avoid ASS markup conflicts
+{">", ">"}, {"<", "<"},
+{"‎", ""}, {"‏", ""}, // FIXME: properly honor bidi marks
+{"&", "&"}, {" ", " "},
 };
 
 static int webvtt_event_to_ass(AVBPrint *buf, const char *p)
 {
-int i, skip = 0;
+int i, again, skip = 0;
 
 while (*p) {
 
@@ -51,13 +54,19 @@ static int webvtt_event_to_ass(AVBPrint *buf, const char *p)
 if (!strncmp(p, from, len)) {
 av_bprintf(buf, "%s", webvtt_tag_replace[i].to);
 p += len;
+again = 1;
 break;
 }
 }
 if (!*p)
 break;
 
-if (*p == '<')
+if (again) {
+again = 0;
+skip = 0;
+continue;
+}
+else if (*p == '<')
 skip = 1;
 else if (*p == '>')
 skip = 0;
-- 
2.6.0

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel