diff options
Diffstat (limited to 'sub/sd_ass.c')
-rw-r--r-- | sub/sd_ass.c | 22 |
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; } |