summaryrefslogtreecommitdiffstats
path: root/sub
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-12-26 18:32:27 +0100
committerwm4 <wm4@nowhere>2015-12-26 18:32:27 +0100
commitce8524cb479f3b3339c6d2b3e0f5a45051145204 (patch)
treef82095783f5762c3229f6d7b71a029b794bf1efa /sub
parent504286b00689ad2c436bdd230b5a63cd66ba8cd6 (diff)
downloadmpv-ce8524cb479f3b3339c6d2b3e0f5a45051145204.tar.bz2
mpv-ce8524cb479f3b3339c6d2b3e0f5a45051145204.tar.xz
sub: cache subtitle state per track instead of per demuxer stream
Since commit 6d9cb893, subtitle state doesn't survive timeline switches (ordered chapters etc.). So there is no point in caching the state per sh_stream anymore (which would be required to deal with multiple segments). Move the cache to struct track. (Whether it's worth caching the subtitle state just for the situation when subtitle tracks get reselected is questionable. But for now, it's nice to have the subtitles immediately show up when reselecting a subtitle.)
Diffstat (limited to 'sub')
-rw-r--r--sub/dec_sub.h1
-rw-r--r--sub/sd_ass.c16
2 files changed, 4 insertions, 13 deletions
diff --git a/sub/dec_sub.h b/sub/dec_sub.h
index 53b42e484e..40a882c9f0 100644
--- a/sub/dec_sub.h
+++ b/sub/dec_sub.h
@@ -22,7 +22,6 @@ enum sd_ctrl {
SD_CTRL_SET_VIDEO_PARAMS,
SD_CTRL_GET_RESOLUTION,
SD_CTRL_SET_TOP,
- SD_CTRL_CLEAR,
};
struct dec_sub *sub_create(struct mpv_global *global);
diff --git a/sub/sd_ass.c b/sub/sd_ass.c
index 88aebe8c6a..16275207b7 100644
--- a/sub/sd_ass.c
+++ b/sub/sd_ass.c
@@ -510,18 +510,13 @@ 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)
- clear(sd);
+ if (sd->opts->sub_clear_on_seek) {
+ ass_flush_events(ctx->ass_track);
+ ctx->num_seen_packets = 0;
+ }
if (ctx->converter)
lavc_conv_reset(ctx->converter);
}
@@ -554,9 +549,6 @@ 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;
}