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
This commit is contained in:
parent
8ef46f4a0c
commit
6e411d9cc7
@ -66,8 +66,24 @@ static void microdvd_set_tag(struct microdvd_tag *tags, struct microdvd_tag tag)
|
|||||||
// italic, bold, underline, strike-through
|
// italic, bold, underline, strike-through
|
||||||
#define MICRODVD_STYLES "ibus"
|
#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)
|
static char *microdvd_load_tags(struct microdvd_tag *tags, char *s)
|
||||||
{
|
{
|
||||||
|
s = check_for_italic_slash_marker(tags, s);
|
||||||
|
|
||||||
while (*s == '{') {
|
while (*s == '{') {
|
||||||
char *start = s;
|
char *start = s;
|
||||||
char tag_char = *(s + 1);
|
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);
|
microdvd_set_tag(tags, tag);
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
return s;
|
return check_for_italic_slash_marker(tags, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void microdvd_open_tags(AVBPrint *new_line, struct microdvd_tag *tags)
|
static void microdvd_open_tags(AVBPrint *new_line, struct microdvd_tag *tags)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user