comparison sub/subreader.h @ 32454:69d3be4d52a2

Create a new directory, "sub", for subtitles and OSD related code. Move subreader.[ch] into it.
author cigaes
date Wed, 27 Oct 2010 16:28:50 +0000
parents
children 7b135236a44a
comparison
equal deleted inserted replaced
32453:e789ea19fa5a 32454:69d3be4d52a2
1 /*
2 * This file is part of MPlayer.
3 *
4 * MPlayer is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * MPlayer is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 */
18
19 #ifndef MPLAYER_SUBREADER_H
20 #define MPLAYER_SUBREADER_H
21
22 #include <stdio.h>
23
24 #include "config.h"
25
26 extern int suboverlap_enabled;
27 extern int sub_no_text_pp; // disable text post-processing
28 extern int sub_match_fuzziness;
29 extern int sub_format;
30 extern char *sub_cp;
31
32 // subtitle formats
33 #define SUB_INVALID -1
34 #define SUB_MICRODVD 0
35 #define SUB_SUBRIP 1
36 #define SUB_SUBVIEWER 2
37 #define SUB_SAMI 3
38 #define SUB_VPLAYER 4
39 #define SUB_RT 5
40 #define SUB_SSA 6
41 #define SUB_PJS 7
42 #define SUB_MPSUB 8
43 #define SUB_AQTITLE 9
44 #define SUB_SUBVIEWER2 10
45 #define SUB_SUBRIP09 11
46 #define SUB_JACOSUB 12
47 #define SUB_MPL2 13
48
49 #define MAX_SUBTITLE_FILES 128
50
51 #define SUB_MAX_TEXT 12
52 #define SUB_ALIGNMENT_BOTTOMLEFT 1
53 #define SUB_ALIGNMENT_BOTTOMCENTER 2
54 #define SUB_ALIGNMENT_BOTTOMRIGHT 3
55 #define SUB_ALIGNMENT_MIDDLELEFT 4
56 #define SUB_ALIGNMENT_MIDDLECENTER 5
57 #define SUB_ALIGNMENT_MIDDLERIGHT 6
58 #define SUB_ALIGNMENT_TOPLEFT 7
59 #define SUB_ALIGNMENT_TOPCENTER 8
60 #define SUB_ALIGNMENT_TOPRIGHT 9
61
62 typedef struct {
63
64 int lines;
65
66 unsigned long start;
67 unsigned long end;
68
69 char *text[SUB_MAX_TEXT];
70 double endpts[SUB_MAX_TEXT];
71 unsigned char alignment;
72 } subtitle;
73
74 typedef struct {
75 subtitle *subtitles;
76 char *filename;
77 int sub_uses_time;
78 int sub_num; // number of subtitle structs
79 int sub_errs;
80 } sub_data;
81
82 extern char *fribidi_charset;
83 extern int flip_hebrew;
84 extern int fribidi_flip_commas;
85
86 sub_data* sub_read_file (char *filename, float pts);
87 subtitle* subcp_recode (subtitle *sub);
88 // enca_fd is the file enca uses to determine the codepage.
89 // setting to NULL disables enca.
90 struct stream;
91 void subcp_open (struct stream *st); /* for demux_ogg.c */
92 void subcp_close (void); /* for demux_ogg.c */
93 #ifdef CONFIG_ENCA
94 const char* guess_buffer_cp(unsigned char* buffer, int buflen, const char *preferred_language, const char *fallback);
95 const char* guess_cp(struct stream *st, const char *preferred_language, const char *fallback);
96 #endif
97 char ** sub_filenames(const char *path, char *fname);
98 void list_sub_file(sub_data* subd);
99 void dump_srt(sub_data* subd, float fps);
100 void dump_mpsub(sub_data* subd, float fps);
101 void dump_microdvd(sub_data* subd, float fps);
102 void dump_jacosub(sub_data* subd, float fps);
103 void dump_sami(sub_data* subd, float fps);
104 void sub_free( sub_data * subd );
105 void find_sub(sub_data* subd,int key);
106 void step_sub(sub_data *subd, float pts, int movement);
107 void sub_add_text(subtitle *sub, const char *txt, int len, double endpts, int strip_markup);
108 int sub_clear_text(subtitle *sub, double pts);
109
110 #endif /* MPLAYER_SUBREADER_H */