diff options
author | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2011-01-26 20:42:15 +0200 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2011-01-26 20:42:15 +0200 |
commit | f50f34245efa1012855a693558680bcfb7c348e5 (patch) | |
tree | 76e8fc186a96fdc1106b5c634d5937e514a06037 /sub/subreader.h | |
parent | ec55a188e4d0232acd50fcabc0a3db3be2b9538e (diff) | |
parent | c9026cb3210205b07e2e068467a18ee40f9259a3 (diff) | |
download | mpv-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/subreader.h')
-rw-r--r-- | sub/subreader.h | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/sub/subreader.h b/sub/subreader.h new file mode 100644 index 0000000000..9c7465d71a --- /dev/null +++ b/sub/subreader.h @@ -0,0 +1,114 @@ +/* + * 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. + */ + +#ifndef MPLAYER_SUBREADER_H +#define MPLAYER_SUBREADER_H + +#include <stdio.h> +#include <stdbool.h> + +#include "config.h" + +extern int suboverlap_enabled; +extern int sub_no_text_pp; // disable text post-processing +extern int sub_match_fuzziness; + +// subtitle formats +#define SUB_INVALID -1 +#define SUB_MICRODVD 0 +#define SUB_SUBRIP 1 +#define SUB_SUBVIEWER 2 +#define SUB_SAMI 3 +#define SUB_VPLAYER 4 +#define SUB_RT 5 +#define SUB_SSA 6 +#define SUB_PJS 7 +#define SUB_MPSUB 8 +#define SUB_AQTITLE 9 +#define SUB_SUBVIEWER2 10 +#define SUB_SUBRIP09 11 +#define SUB_JACOSUB 12 +#define SUB_MPL2 13 + +// One of the SUB_* constant above +extern int sub_format; + +#define MAX_SUBTITLE_FILES 128 + +#define SUB_MAX_TEXT 12 +#define SUB_ALIGNMENT_BOTTOMLEFT 1 +#define SUB_ALIGNMENT_BOTTOMCENTER 2 +#define SUB_ALIGNMENT_BOTTOMRIGHT 3 +#define SUB_ALIGNMENT_MIDDLELEFT 4 +#define SUB_ALIGNMENT_MIDDLECENTER 5 +#define SUB_ALIGNMENT_MIDDLERIGHT 6 +#define SUB_ALIGNMENT_TOPLEFT 7 +#define SUB_ALIGNMENT_TOPCENTER 8 +#define SUB_ALIGNMENT_TOPRIGHT 9 + +typedef struct subtitle { + + int lines; + + unsigned long start; + unsigned long end; + + char *text[SUB_MAX_TEXT]; + double endpts[SUB_MAX_TEXT]; + unsigned char alignment; +} subtitle; + +typedef struct sub_data { + subtitle *subtitles; + char *filename; + int sub_uses_time; + int sub_num; // number of subtitle structs + int sub_errs; +} sub_data; + +extern char *fribidi_charset; +extern int flip_hebrew; +extern int fribidi_flip_commas; + +struct MPOpts; +sub_data* sub_read_file (char *filename, float pts, struct MPOpts *opts); +subtitle* subcp_recode (subtitle *sub); +// enca_fd is the file enca uses to determine the codepage. +// setting to NULL disables enca. +struct stream; +void subcp_open (struct stream *st); /* for demux_ogg.c */ +void subcp_close (void); /* for demux_ogg.c */ +#ifdef CONFIG_ENCA +const char* guess_buffer_cp(unsigned char* buffer, int buflen, const char *preferred_language, const char *fallback); +const char* guess_cp(struct stream *st, const char *preferred_language, const char *fallback); +#endif +char ** sub_filenames(const char *path, char *fname); +void list_sub_file(sub_data* subd); +void dump_srt(sub_data* subd, float fps); +void dump_mpsub(sub_data* subd, float fps); +void dump_microdvd(sub_data* subd, float fps); +void dump_jacosub(sub_data* subd, float fps); +void dump_sami(sub_data* subd, float fps); +void sub_free( sub_data * subd ); +struct MPContext; +void find_sub(struct MPContext *mpctx, sub_data* subd,int key); +void step_sub(sub_data *subd, float pts, int movement); +void sub_add_text(subtitle *sub, const char *txt, int len, double endpts); +int sub_clear_text(subtitle *sub, double pts); + +#endif /* MPLAYER_SUBREADER_H */ |