summaryrefslogtreecommitdiffstats
path: root/sub/sd_ass.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-03-15 22:17:51 +0100
committerwm4 <wm4@nowhere>2014-03-15 22:17:51 +0100
commit86689f7bf23dd05b5e6b9e42e43379d52e27c338 (patch)
tree05040ae3532ec9718e320b69a11d97264935f83b /sub/sd_ass.c
parentf6b4f60264000ab16459639063cdfae64c3db942 (diff)
downloadmpv-86689f7bf23dd05b5e6b9e42e43379d52e27c338.tar.bz2
mpv-86689f7bf23dd05b5e6b9e42e43379d52e27c338.tar.xz
demux_libass: change how external ASS subtitles are loaded
Instead of parsing the ASS file in demux_libass.c and trying to pass the ASS_Track to the subtitle renderer, just read all file data in demux_libass.c, and let the subtitle renderer pass the file contents to ass_process_codec_private(). (This happens to parse full files too.) Makes the code simpler, though it also relies harder on the (messy) probe logic in demux_libass.c.
Diffstat (limited to 'sub/sd_ass.c')
-rw-r--r--sub/sd_ass.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/sub/sd_ass.c b/sub/sd_ass.c
index e4428516b9..4ae7121bad 100644
--- a/sub/sd_ass.c
+++ b/sub/sd_ass.c
@@ -68,13 +68,9 @@ static int init(struct sd *sd)
ctx->is_converted = sd->converted_from != NULL;
- if (sd->ass_track) {
- ctx->ass_track = sd->ass_track;
- } else {
- ctx->ass_track = ass_new_track(sd->ass_library);
- if (!ctx->is_converted)
- ctx->ass_track->track_type = TRACK_TYPE_ASS;
- }
+ ctx->ass_track = ass_new_track(sd->ass_library);
+ if (!ctx->is_converted)
+ ctx->ass_track->track_type = TRACK_TYPE_ASS;
if (sd->extradata) {
ass_process_codec_private(ctx->ass_track, sd->extradata,
@@ -310,8 +306,7 @@ static void uninit(struct sd *sd)
{
struct sd_ass_priv *ctx = sd->priv;
- if (sd->ass_track != ctx->ass_track)
- ass_free_track(ctx->ass_track);
+ ass_free_track(ctx->ass_track);
talloc_free(ctx);
}