summaryrefslogtreecommitdiffstats
path: root/sub/dec_sub.c
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2011-01-26 20:42:15 +0200
committerUoti Urpala <uau@glyph.nonexistent.invalid>2011-01-26 20:42:15 +0200
commitf50f34245efa1012855a693558680bcfb7c348e5 (patch)
tree76e8fc186a96fdc1106b5c634d5937e514a06037 /sub/dec_sub.c
parentec55a188e4d0232acd50fcabc0a3db3be2b9538e (diff)
parentc9026cb3210205b07e2e068467a18ee40f9259a3 (diff)
downloadmpv-f50f34245efa1012855a693558680bcfb7c348e5.tar.bz2
mpv-f50f34245efa1012855a693558680bcfb7c348e5.tar.xz
Merge branch 'sub'
* sub: sub/OSD: move some related files to sub/ subtitles: options: enable -ass by default subtitles: change default libass rendering style demux_mkv, chapters: change millisecond arithmetic to ns cleanup: rename ass_* functions to mp_ass_* subs: use correct font aspect ratio for libass + converted subs cleanup: some random minor code simplification and cleanup vf_vo: fix EOSD change detection bug sd_ass: remove subreader use, support plaintext markup subtitles: style support for common SubRip tags and MicroDVD core: ordered chapters: fix bad subtitle parameter subs/demux: don't try to enable sub track when creating it subtitles/demux: store duration instead of endpts in demux packets subtitles: add framework for subtitle decoders options: add special -leak-report option subtitles: remove code trying to handle text subs with libavcodec cleanup: move MP_NOPTS_VALUE definition to mpcommon.h subtitles: move global ass_track to struct osd_state core: move most mpcommon.c contents to mplayer.c core: move global "subdata" and "vo_sub_last" to mpctx subtitles: remove sub_last_pts hack options: move -noconfig to option struct, simplify
Diffstat (limited to 'sub/dec_sub.c')
-rw-r--r--sub/dec_sub.c72
1 files changed, 72 insertions, 0 deletions
diff --git a/sub/dec_sub.c b/sub/dec_sub.c
new file mode 100644
index 0000000000..6a6d1d77e5
--- /dev/null
+++ b/sub/dec_sub.c
@@ -0,0 +1,72 @@
+/*
+ * This file is part of MPlayer.
+ *
+ * MPlayer is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * MPlayer is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with MPlayer; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <stdlib.h>
+#include <stdbool.h>
+#include <assert.h>
+
+#include "config.h"
+#include "libmpdemux/stheader.h"
+#include "sd.h"
+#include "dec_sub.h"
+#include "options.h"
+
+extern const struct sd_functions sd_ass;
+
+void sub_init(struct sh_sub *sh, struct osd_state *osd)
+{
+ struct MPOpts *opts = sh->opts;
+
+#ifdef CONFIG_ASS
+ if (opts->ass_enabled && is_text_sub(sh->type))
+ sh->sd_driver = &sd_ass;
+#endif
+ if (sh->sd_driver) {
+ sh->sd_driver->init(sh, osd);
+ sh->initialized = true;
+ sh->active = true;
+ }
+}
+
+void sub_decode(struct sh_sub *sh, struct osd_state *osd, void *data,
+ int data_len, double pts, double duration)
+{
+ if (sh->active && sh->sd_driver->decode)
+ sh->sd_driver->decode(sh, osd, data, data_len, pts, duration);
+}
+
+void sub_reset(struct sh_sub *sh, struct osd_state *osd)
+{
+ if (sh->active && sh->sd_driver->reset)
+ sh->sd_driver->reset(sh, osd);
+}
+
+void sub_switchoff(struct sh_sub *sh, struct osd_state *osd)
+{
+ if (sh->active && sh->sd_driver->switch_off)
+ sh->sd_driver->switch_off(sh, osd);
+ sh->active = false;
+}
+
+void sub_uninit(struct sh_sub *sh)
+{
+ assert (!sh->active);
+ if (sh->initialized && sh->sd_driver->uninit)
+ sh->sd_driver->uninit(sh);
+ sh->initialized = false;
+}