summaryrefslogtreecommitdiffstats
path: root/sub/sd_ass.c
diff options
context:
space:
mode:
Diffstat (limited to 'sub/sd_ass.c')
-rw-r--r--sub/sd_ass.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/sub/sd_ass.c b/sub/sd_ass.c
index 34a49c1501..31c66a6087 100644
--- a/sub/sd_ass.c
+++ b/sub/sd_ass.c
@@ -75,7 +75,7 @@ static void mp_ass_add_default_styles(ASS_Track *track, struct MPOpts *opts)
track->default_style = sid;
ASS_Style *style = track->styles + sid;
style->Name = strdup("Default");
- mp_ass_set_style(style, track->PlayResY, opts->sub_text_style);
+ mp_ass_set_style(style, track->PlayResY, opts->sub_style);
}
if (opts->ass_style_override)
@@ -138,7 +138,7 @@ static void enable_output(struct sd *sd, bool enable)
} else {
ctx->ass_renderer = ass_renderer_init(ctx->ass_library);
- mp_ass_configure_fonts(ctx->ass_renderer, sd->opts->sub_text_style,
+ mp_ass_configure_fonts(ctx->ass_renderer, sd->opts->sub_style,
sd->global, sd->log);
}
}
@@ -329,14 +329,18 @@ static void configure_ass(struct sd *sd, struct mp_osd_res *dim,
set_force_flags |= ASS_OVERRIDE_BIT_STYLE | ASS_OVERRIDE_BIT_FONT_SIZE;
if (opts->ass_style_override == 4)
set_force_flags |= ASS_OVERRIDE_BIT_FONT_SIZE;
+#if LIBASS_VERSION >= 0x01201001
+ if (converted)
+ set_force_flags |= ASS_OVERRIDE_BIT_ALIGNMENT;
+#endif
ass_set_selective_style_override_enabled(priv, set_force_flags);
ASS_Style style = {0};
- mp_ass_set_style(&style, 288, opts->sub_text_style);
+ mp_ass_set_style(&style, 288, opts->sub_style);
ass_set_selective_style_override(priv, &style);
free(style.FontName);
if (converted && track->default_style < track->n_styles) {
mp_ass_set_style(track->styles + track->default_style,
- track->PlayResY, opts->sub_text_style);
+ track->PlayResY, opts->sub_style);
}
ass_set_font_scale(priv, set_font_scale);
ass_set_hinting(priv, set_hinting);
@@ -594,6 +598,10 @@ static void fill_plaintext(struct sd *sd, double pts)
return;
bstr dst = {0};
+
+ if (ctx->on_top)
+ bstr_xappend(NULL, &dst, bstr0("{\\a6}"));
+
while (*text) {
if (*text == '{')
bstr_xappend(NULL, &dst, bstr0("\\"));
@@ -614,9 +622,6 @@ static void fill_plaintext(struct sd *sd, double pts)
event->Style = track->default_style;
event->Text = strdup(dst.start);
- if (track->default_style < track->n_styles)
- track->styles[track->default_style].Alignment = ctx->on_top ? 6 : 2;
-
talloc_free(dst.start);
}
@@ -667,6 +672,9 @@ static int control(struct sd *sd, enum sd_ctrl cmd, void *arg)
ctx->video_fps = *(double *)arg;
update_subtitle_speed(sd);
return CONTROL_OK;
+ case SD_CTRL_UPDATE_SPEED:
+ update_subtitle_speed(sd);
+ return CONTROL_OK;
default:
return CONTROL_UNKNOWN;
}