2010-01-31 00:24:23 +01:00
|
|
|
/*
|
|
|
|
* 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.
|
|
|
|
*/
|
|
|
|
|
2007-07-03 00:34:45 +02:00
|
|
|
#ifndef MPLAYER_SUBREADER_H
|
|
|
|
#define MPLAYER_SUBREADER_H
|
2001-04-24 13:42:04 +02:00
|
|
|
|
2004-07-28 19:03:09 +02:00
|
|
|
#include <stdio.h>
|
2010-05-19 00:05:25 +02:00
|
|
|
#include <stdbool.h>
|
2004-07-28 19:03:09 +02:00
|
|
|
|
2010-01-04 20:49:42 +01:00
|
|
|
#include "config.h"
|
|
|
|
|
2002-12-05 01:03:35 +01:00
|
|
|
extern int suboverlap_enabled;
|
2003-01-28 00:41:56 +01:00
|
|
|
extern int sub_no_text_pp; // disable text post-processing
|
2003-04-09 20:04:29 +02:00
|
|
|
extern int sub_match_fuzziness;
|
2001-11-15 12:53:11 +01:00
|
|
|
|
|
|
|
// 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
|
2004-01-29 11:53:19 +01:00
|
|
|
#define SUB_PJS 7
|
2001-11-15 12:53:11 +01:00
|
|
|
#define SUB_MPSUB 8
|
|
|
|
#define SUB_AQTITLE 9
|
2002-05-07 23:58:01 +02:00
|
|
|
#define SUB_SUBVIEWER2 10
|
2002-05-13 22:41:20 +02:00
|
|
|
#define SUB_SUBRIP09 11
|
2002-10-30 20:16:58 +01:00
|
|
|
#define SUB_JACOSUB 12
|
2004-04-06 13:52:31 +02:00
|
|
|
#define SUB_MPL2 13
|
2001-11-15 12:53:11 +01:00
|
|
|
|
|
|
|
// One of the SUB_* constant above
|
|
|
|
extern int sub_format;
|
|
|
|
|
2006-01-04 13:05:15 +01:00
|
|
|
#define SUB_MAX_TEXT 12
|
2004-09-15 15:16:52 +02:00
|
|
|
#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
|
2001-03-30 05:07:45 +02:00
|
|
|
|
2010-10-30 20:32:17 +02:00
|
|
|
typedef struct subtitle {
|
2001-03-30 05:07:45 +02:00
|
|
|
|
|
|
|
int lines;
|
|
|
|
|
|
|
|
unsigned long start;
|
|
|
|
unsigned long end;
|
2009-07-07 01:26:13 +02:00
|
|
|
|
2001-03-30 05:07:45 +02:00
|
|
|
char *text[SUB_MAX_TEXT];
|
2007-01-06 20:07:58 +01:00
|
|
|
double endpts[SUB_MAX_TEXT];
|
2003-09-21 15:20:06 +02:00
|
|
|
unsigned char alignment;
|
2001-03-30 05:07:45 +02:00
|
|
|
} subtitle;
|
|
|
|
|
2010-10-30 20:32:17 +02:00
|
|
|
typedef struct sub_data {
|
2003-04-07 18:04:02 +02:00
|
|
|
subtitle *subtitles;
|
|
|
|
char *filename;
|
2009-07-07 01:26:13 +02:00
|
|
|
int sub_uses_time;
|
2003-04-07 18:04:02 +02:00
|
|
|
int sub_num; // number of subtitle structs
|
|
|
|
int sub_errs;
|
|
|
|
} sub_data;
|
|
|
|
|
2010-05-19 00:05:25 +02:00
|
|
|
struct MPOpts;
|
|
|
|
sub_data* sub_read_file (char *filename, float pts, struct MPOpts *opts);
|
2007-03-25 21:25:11 +02:00
|
|
|
subtitle* subcp_recode (subtitle *sub);
|
2004-07-28 14:40:35 +02:00
|
|
|
// enca_fd is the file enca uses to determine the codepage.
|
|
|
|
// setting to NULL disables enca.
|
2008-04-24 04:49:44 +02:00
|
|
|
struct stream;
|
|
|
|
void subcp_open (struct stream *st); /* for demux_ogg.c */
|
2003-01-03 13:26:17 +01:00
|
|
|
void subcp_close (void); /* for demux_ogg.c */
|
2008-08-07 12:36:07 +02:00
|
|
|
#ifdef CONFIG_ENCA
|
2007-12-17 02:06:17 +01:00
|
|
|
const char* guess_buffer_cp(unsigned char* buffer, int buflen, const char *preferred_language, const char *fallback);
|
2008-04-24 04:49:44 +02:00
|
|
|
const char* guess_cp(struct stream *st, const char *preferred_language, const char *fallback);
|
2004-08-02 08:46:48 +02:00
|
|
|
#endif
|
2003-04-07 18:04:02 +02:00
|
|
|
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 );
|
2009-10-06 03:28:59 +02:00
|
|
|
struct MPContext;
|
|
|
|
void find_sub(struct MPContext *mpctx, sub_data* subd,int key);
|
2003-04-07 18:04:02 +02:00
|
|
|
void step_sub(sub_data *subd, float pts, int movement);
|
2007-01-06 20:07:58 +01:00
|
|
|
void sub_add_text(subtitle *sub, const char *txt, int len, double endpts);
|
|
|
|
int sub_clear_text(subtitle *sub, double pts);
|
2007-12-31 17:15:50 +01:00
|
|
|
|
|
|
|
#endif /* MPLAYER_SUBREADER_H */
|