[FFmpeg-cvslog] avcodec/microdvddec: support non persistent italic marker '/'

Clément Bœsch git at videolan.org
Sun Nov 23 13:14:10 CET 2014


ffmpeg | branch: master | Clément Bœsch <u at pkh.me> | Sun Nov 23 12:56:02 2014 +0100| [6e411d9cc7ecf266c2ee463f0addb596cbf470a8] | committer: Clément Bœsch

avcodec/microdvddec: support non persistent italic marker '/'

Inspired from a patch by Michal Wazgird <mplayer at cyryl.net>

See https://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2014-November/072772.html

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6e411d9cc7ecf266c2ee463f0addb596cbf470a8
---

 libavcodec/microdvddec.c |   18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/libavcodec/microdvddec.c b/libavcodec/microdvddec.c
index b225ab9..96034a0 100644
--- a/libavcodec/microdvddec.c
+++ b/libavcodec/microdvddec.c
@@ -66,8 +66,24 @@ static void microdvd_set_tag(struct microdvd_tag *tags, struct microdvd_tag tag)
 // italic, bold, underline, strike-through
 #define MICRODVD_STYLES "ibus"
 
+/* some samples have lines that start with a / indicating non persistent italic
+ * marker */
+static char *check_for_italic_slash_marker(struct microdvd_tag *tags, char *s)
+{
+    if (*s == '/') {
+        struct microdvd_tag tag = tags[indexof(MICRODVD_TAGS, 'y')];
+        tag.key = 'y';
+        tag.data1 |= 1 << 0 /* 'i' position in MICRODVD_STYLES */;
+        microdvd_set_tag(tags, tag);
+        s++;
+    }
+    return s;
+}
+
 static char *microdvd_load_tags(struct microdvd_tag *tags, char *s)
 {
+    s = check_for_italic_slash_marker(tags, s);
+
     while (*s == '{') {
         char *start = s;
         char tag_char = *(s + 1);
@@ -178,7 +194,7 @@ static char *microdvd_load_tags(struct microdvd_tag *tags, char *s)
         microdvd_set_tag(tags, tag);
         s++;
     }
-    return s;
+    return check_for_italic_slash_marker(tags, s);
 }
 
 static void microdvd_open_tags(AVBPrint *new_line, struct microdvd_tag *tags)



More information about the ffmpeg-cvslog mailing list