summaryrefslogtreecommitdiffstats
path: root/sub/sd_ass.c
diff options
context:
space:
mode:
authorkarelrooted <karelrooted@gmail.com>2023-12-11 17:43:36 +0800
committerDudemanguy <random342@airmail.cc>2023-12-13 21:18:57 +0000
commit3250f6e4473b6c0ba1be03af3c80f3141b485721 (patch)
treec82c7957cfa5abee23ef144da56ed3c553d2cf07 /sub/sd_ass.c
parentb690531f3047f9eac85450457e04f67e2e2aa69b (diff)
downloadmpv-3250f6e4473b6c0ba1be03af3c80f3141b485721.tar.bz2
mpv-3250f6e4473b6c0ba1be03af3c80f3141b485721.tar.xz
options: add --secondary-sub-pos
The default value is 0 (on the top of the screen)
Diffstat (limited to 'sub/sd_ass.c')
-rw-r--r--sub/sd_ass.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/sub/sd_ass.c b/sub/sd_ass.c
index 6742f6f658..4c1ccd05bc 100644
--- a/sub/sd_ass.c
+++ b/sub/sd_ass.c
@@ -379,7 +379,7 @@ static void decode(struct sd *sd, struct demux_packet *packet)
}
static void configure_ass(struct sd *sd, struct mp_osd_res *dim,
- bool converted, ASS_Track *track)
+ bool converted, ASS_Track *track, int order)
{
struct mp_subtitle_opts *opts = sd->opts;
struct sd_ass_priv *ctx = sd->priv;
@@ -407,7 +407,7 @@ static void configure_ass(struct sd *sd, struct mp_osd_res *dim,
set_use_margins = opts->ass_use_margins;
}
if (converted || opts->ass_style_override) {
- set_sub_pos = 100.0f - opts->sub_pos;
+ set_sub_pos = 100.0f - (order == 1 ? opts->sec_sub_pos : opts->sub_pos);
set_line_spacing = opts->ass_line_spacing;
set_hinting = opts->ass_hinting;
set_font_scale = opts->sub_scale;
@@ -557,12 +557,12 @@ static long long find_timestamp(struct sd *sd, double pts)
#undef END
static struct sub_bitmaps *get_bitmaps(struct sd *sd, struct mp_osd_res dim,
- int format, double pts)
+ int format, double pts, int order)
{
struct sd_ass_priv *ctx = sd->priv;
struct mp_subtitle_opts *opts = sd->opts;
bool no_ass = !opts->ass_enabled || ctx->on_top ||
- opts->ass_style_override == 5;
+ opts->ass_style_override == 5 || order == 1;
bool converted = ctx->is_converted || no_ass;
ASS_Track *track = no_ass ? ctx->shadow_track : ctx->ass_track;
ASS_Renderer *renderer = ctx->ass_renderer;
@@ -591,7 +591,7 @@ static struct sub_bitmaps *get_bitmaps(struct sd *sd, struct mp_osd_res dim,
scale *= par;
}
if (!ctx->ass_configured || !osd_res_equals(old_osd, ctx->osd)) {
- configure_ass(sd, &dim, converted, track);
+ configure_ass(sd, &dim, converted, track, order);
ctx->ass_configured = true;
}
ass_set_pixel_aspect(renderer, scale);
@@ -852,9 +852,6 @@ static int control(struct sd *sd, enum sd_ctrl cmd, void *arg)
case SD_CTRL_SET_VIDEO_PARAMS:
ctx->video_params = *(struct mp_image_params *)arg;
return CONTROL_OK;
- case SD_CTRL_SET_TOP:
- ctx->on_top = *(bool *)arg;
- return CONTROL_OK;
case SD_CTRL_UPDATE_OPTS: {
int flags = (uintptr_t)arg;
if (flags & UPDATE_SUB_FILT) {