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.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/sub/sd_ass.c b/sub/sd_ass.c
index 16275207b7..88aebe8c6a 100644
--- a/sub/sd_ass.c
+++ b/sub/sd_ass.c
@@ -510,13 +510,18 @@ static void fill_plaintext(struct sd *sd, double pts)
track->styles[track->default_style].Alignment = ctx->on_top ? 6 : 2;
}
+static void clear(struct sd *sd)
+{
+ struct sd_ass_priv *ctx = sd->priv;
+ ass_flush_events(ctx->ass_track);
+ ctx->num_seen_packets = 0;
+}
+
static void reset(struct sd *sd)
{
struct sd_ass_priv *ctx = sd->priv;
- if (sd->opts->sub_clear_on_seek) {
- ass_flush_events(ctx->ass_track);
- ctx->num_seen_packets = 0;
- }
+ if (sd->opts->sub_clear_on_seek)
+ clear(sd);
if (ctx->converter)
lavc_conv_reset(ctx->converter);
}
@@ -549,6 +554,9 @@ static int control(struct sd *sd, enum sd_ctrl cmd, void *arg)
case SD_CTRL_SET_TOP:
ctx->on_top = *(bool *)arg;
return CONTROL_OK;
+ case SD_CTRL_CLEAR:
+ clear(sd);
+ return CONTROL_OK;
default:
return CONTROL_UNKNOWN;
}