Browse Source

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

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

See https://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2014-November/072772.html
tags/n2.5
Clément Bœsch 11 years ago
parent
commit
6e411d9cc7
1 changed files with 17 additions and 1 deletions
  1. +17
    -1
      libavcodec/microdvddec.c

+ 17
- 1
libavcodec/microdvddec.c View File

@@ -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)


Loading…
Cancel
Save