[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