FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ass.h
Go to the documentation of this file.
1 /*
2  * SSA/ASS common functions
3  * Copyright (c) 2010 Aurelien Jacobs <aurel@gnuage.org>
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21 
22 #ifndef AVCODEC_ASS_H
23 #define AVCODEC_ASS_H
24 
25 #include "avcodec.h"
26 #include "libavutil/bprint.h"
27 
28 /**
29  * @name Default values for ASS style
30  * @{
31  */
32 #define ASS_DEFAULT_FONT "Arial"
33 #define ASS_DEFAULT_FONT_SIZE 16
34 #define ASS_DEFAULT_COLOR 0xffffff
35 #define ASS_DEFAULT_BACK_COLOR 0
36 #define ASS_DEFAULT_BOLD 0
37 #define ASS_DEFAULT_ITALIC 0
38 #define ASS_DEFAULT_UNDERLINE 0
39 #define ASS_DEFAULT_ALIGNMENT 2
40 /** @} */
41 
42 /**
43  * Generate a suitable AVCodecContext.subtitle_header for SUBTITLE_ASS.
44  *
45  * @param avctx pointer to the AVCodecContext
46  * @param font name of the default font face to use
47  * @param font_size default font size to use
48  * @param color default text color to use (ABGR)
49  * @param back_color default background color to use (ABGR)
50  * @param bold 1 for bold text, 0 for normal text
51  * @param italic 1 for italic text, 0 for normal text
52  * @param underline 1 for underline text, 0 for normal text
53  * @param alignment position of the text (left, center, top...), defined after
54  * the layout of the numpad (1-3 sub, 4-6 mid, 7-9 top)
55  * @return >= 0 on success otherwise an error code <0
56  */
58  const char *font, int font_size,
59  int color, int back_color,
60  int bold, int italic, int underline,
61  int alignment);
62 
63 /**
64  * Generate a suitable AVCodecContext.subtitle_header for SUBTITLE_ASS
65  * with default style.
66  *
67  * @param avctx pointer to the AVCodecContext
68  * @return >= 0 on success otherwise an error code <0
69  */
71 
72 /**
73  * Add an ASS dialog line to an AVSubtitle as a new AVSubtitleRect.
74  *
75  * @param sub pointer to the AVSubtitle
76  * @param dialog ASS dialog to add to sub
77  * @param ts_start start timestamp for this dialog (in 1/100 second unit)
78  * @param duration duration for this dialog (in 1/100 second unit), can be -1
79  * to last until the end of the presentation
80  * @param raw when set to 2, it indicates that dialog contains an ASS
81  * dialog line as muxed in Matroska
82  * when set to 1, it indicates that dialog contains a whole SSA
83  * dialog line which should be copied as is.
84  * when set to 0, it indicates that dialog contains only the Text
85  * part of the ASS dialog line, the rest of the line
86  * will be generated.
87  * @return number of characters read from dialog. It can be less than the whole
88  * length of dialog, if dialog contains several lines of text.
89  * A negative value indicates an error.
90  */
91 int ff_ass_add_rect(AVSubtitle *sub, const char *dialog,
92  int ts_start, int duration, int raw);
93 
94 /**
95  * Same as ff_ass_add_rect_bprint, but taking an AVBPrint buffer instead of a
96  * string, and assuming raw=0.
97  */
98 int ff_ass_add_rect_bprint(AVSubtitle *sub, AVBPrint *buf,
99  int ts_start, int duration);
100 
101 /**
102  * Add an ASS dialog line to an AVBPrint buffer.
103  *
104  * @param buf pointer to an initialized AVBPrint buffer
105  * @param dialog ASS dialog to add to sub
106  * @param ts_start start timestamp for this dialog (in 1/100 second unit)
107  * @param duration duration for this dialog (in 1/100 second unit), can be -1
108  * to last until the end of the presentation
109  * @param raw when set to 2, it indicates that dialog contains an ASS
110  * dialog line as muxed in Matroska
111  * when set to 1, it indicates that dialog contains a whole SSA
112  * dialog line which should be copied as is.
113  * when set to 0, it indicates that dialog contains only the Text
114  * part of the ASS dialog line, the rest of the line
115  * will be generated.
116  * @return number of characters read from dialog. It can be less than the whole
117  * length of dialog, if dialog contains several lines of text.
118  * A negative value indicates an error.
119  */
120 int ff_ass_bprint_dialog(AVBPrint *buf, const char *dialog,
121  int ts_start, int duration, int raw);
122 
123 /**
124  * Escape a text subtitle using ASS syntax into an AVBPrint buffer.
125  * Newline characters will be escaped to \N.
126  *
127  * @param buf pointer to an initialized AVBPrint buffer
128  * @param p source text
129  * @param size size of the source text
130  * @param linebreaks additional newline chars, which will be escaped to \N
131  * @param keep_ass_markup braces and backslash will not be escaped if set
132  */
133 void ff_ass_bprint_text_event(AVBPrint *buf, const char *p, int size,
134  const char *linebreaks, int keep_ass_markup);
135 #endif /* AVCODEC_ASS_H */