diff options
author | wm4 <wm4@nowhere> | 2013-12-15 13:43:26 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-12-15 13:44:39 +0100 |
commit | 319405830996b2bc73e9cdf437e389f2045adafe (patch) | |
tree | 70095e57e72d584d2a1b97dcf64d423e7a019e9a /mpvcore/player | |
parent | 4ca740ccf9314f77078e08f1923d86b060643aa5 (diff) | |
download | mpv-319405830996b2bc73e9cdf437e389f2045adafe.tar.bz2 mpv-319405830996b2bc73e9cdf437e389f2045adafe.tar.xz |
player: don't store subtitle renderer in osd_state
This doesn't have much value. It can't be accessed by anything else than
the actual subtitle renderer (sd_ass.c). sd_ass.c could create the
renderer itself, except that we apparently want to save memory (and some
font loading time) when using ordered chapters or multiple subtitle
tracks.
Diffstat (limited to 'mpvcore/player')
-rw-r--r-- | mpvcore/player/loadfile.c | 16 | ||||
-rw-r--r-- | mpvcore/player/main.c | 2 | ||||
-rw-r--r-- | mpvcore/player/mp_core.h | 5 | ||||
-rw-r--r-- | mpvcore/player/sub.c | 3 |
4 files changed, 14 insertions, 12 deletions
diff --git a/mpvcore/player/loadfile.c b/mpvcore/player/loadfile.c index 33d10ed610..b4e8921089 100644 --- a/mpvcore/player/loadfile.c +++ b/mpvcore/player/loadfile.c @@ -91,9 +91,9 @@ void uninit_player(struct MPContext *mpctx, unsigned int mask) if (mask & INITIALIZED_LIBASS) { mpctx->initialized_flags &= ~INITIALIZED_LIBASS; #if HAVE_LIBASS - if (mpctx->osd->ass_renderer) - ass_renderer_done(mpctx->osd->ass_renderer); - mpctx->osd->ass_renderer = NULL; + if (mpctx->ass_renderer) + ass_renderer_done(mpctx->ass_renderer); + mpctx->ass_renderer = NULL; ass_clear_fonts(mpctx->ass_library); #endif } @@ -847,13 +847,11 @@ static void init_sub_renderer(struct MPContext *mpctx) { #if HAVE_LIBASS assert(!(mpctx->initialized_flags & INITIALIZED_LIBASS)); - assert(!mpctx->osd->ass_renderer); + assert(!mpctx->ass_renderer); - mpctx->osd->ass_renderer = ass_renderer_init(mpctx->osd->ass_library); - if (mpctx->osd->ass_renderer) { - mp_ass_configure_fonts(mpctx->osd->ass_renderer, - mpctx->opts->sub_text_style); - } + mpctx->ass_renderer = ass_renderer_init(mpctx->ass_library); + if (mpctx->ass_renderer) + mp_ass_configure_fonts(mpctx->ass_renderer, mpctx->opts->sub_text_style); mpctx->initialized_flags |= INITIALIZED_LIBASS; #endif } diff --git a/mpvcore/player/main.c b/mpvcore/player/main.c index 59eadfd676..d95546f923 100644 --- a/mpvcore/player/main.c +++ b/mpvcore/player/main.c @@ -397,7 +397,7 @@ static int mpv_main(int argc, char *argv[]) MP_WARN(mpctx, "There will be no OSD and no text subtitles.\n"); #endif - mpctx->osd = osd_create(opts, mpctx->ass_library); + mpctx->osd = osd_create(opts); if (opts->force_vo) { opts->fixed_vo = 1; diff --git a/mpvcore/player/mp_core.h b/mpvcore/player/mp_core.h index 9827387e2c..21ce0ba3cb 100644 --- a/mpvcore/player/mp_core.h +++ b/mpvcore/player/mp_core.h @@ -308,6 +308,11 @@ typedef struct MPContext { int last_chapter_seek; double last_chapter_pts; + /* Subtitle renderer. This is separate, because we want to keep fonts + * loaded across ordered chapters, instead of reloading and rescanning + * them on each transition. (Both of these objects contain this state.) + */ + struct ass_renderer *ass_renderer; struct ass_library *ass_library; int last_dvb_step; diff --git a/mpvcore/player/sub.c b/mpvcore/player/sub.c index d3ce466121..f514d3345b 100644 --- a/mpvcore/player/sub.c +++ b/mpvcore/player/sub.c @@ -211,8 +211,7 @@ void reinit_subs(struct MPContext *mpctx) set_dvdsub_fake_extradata(dec_sub, track->demuxer->stream, w, h); sub_set_video_res(dec_sub, w, h); sub_set_video_fps(dec_sub, fps); - sub_set_ass_renderer(dec_sub, mpctx->osd->ass_library, - mpctx->osd->ass_renderer); + sub_set_ass_renderer(dec_sub, mpctx->ass_library, mpctx->ass_renderer); sub_init_from_sh(dec_sub, sh); // Don't do this if the file has video/audio streams. Don't do it even |