annotate libass/ass.h @ 36250:7e4a8748cf9a

Fix issues with glibc on 32 bit. Some glibc versions e.g. from RedHat will cause incorrect behaviour when a certain magic symbol is not encountered. This is just abhorrent and simply unacceptable, breaking well-behaving programs to the benefit of ancient programs, but let's try to make it work anyway (and hope they won't repeat the insanity).
author reimar
date Sat, 15 Jun 2013 16:11:47 +0000
parents 49fc594fda43
children c3aaaf17c721
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20008
fa122b7c71c6 Add copyright notice and vim/emacs comments to libass and vf_ass.c.
eugeni
parents: 19652
diff changeset
1 /*
26723
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
2 * Copyright (C) 2006 Evgeniy Stepanov <eugeni.stepanov@gmail.com>
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
3 *
26738
588ce97b44f2 Speak of libass instead of MPlayer in the libass license headers.
diego
parents: 26723
diff changeset
4 * This file is part of libass.
26723
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
5 *
34011
88eebbbbd6a0 Update included libass copy to 0.9.13 release.
reimar
parents: 31875
diff changeset
6 * Permission to use, copy, modify, and distribute this software for any
88eebbbbd6a0 Update included libass copy to 0.9.13 release.
reimar
parents: 31875
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
88eebbbbd6a0 Update included libass copy to 0.9.13 release.
reimar
parents: 31875
diff changeset
8 * copyright notice and this permission notice appear in all copies.
26723
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
9 *
34011
88eebbbbd6a0 Update included libass copy to 0.9.13 release.
reimar
parents: 31875
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
88eebbbbd6a0 Update included libass copy to 0.9.13 release.
reimar
parents: 31875
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
88eebbbbd6a0 Update included libass copy to 0.9.13 release.
reimar
parents: 31875
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
88eebbbbd6a0 Update included libass copy to 0.9.13 release.
reimar
parents: 31875
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
88eebbbbd6a0 Update included libass copy to 0.9.13 release.
reimar
parents: 31875
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
88eebbbbd6a0 Update included libass copy to 0.9.13 release.
reimar
parents: 31875
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
88eebbbbd6a0 Update included libass copy to 0.9.13 release.
reimar
parents: 31875
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
26723
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
17 */
20008
fa122b7c71c6 Add copyright notice and vim/emacs comments to libass and vf_ass.c.
eugeni
parents: 19652
diff changeset
18
25897
aaebaf255b23 Consistently give all libass multiple inclusion guards a LIBASS_ prefix.
diego
parents: 25613
diff changeset
19 #ifndef LIBASS_ASS_H
aaebaf255b23 Consistently give all libass multiple inclusion guards a LIBASS_ prefix.
diego
parents: 25613
diff changeset
20 #define LIBASS_ASS_H
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
21
26138
74055622161d Add missing header #includes to fix 'make checkheaders'.
diego
parents: 25897
diff changeset
22 #include <stdio.h>
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
23 #include <stdarg.h>
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
24 #include "ass_types.h"
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
25
35262
49fc594fda43 Updated libass to 0.10.1
SubJunk
parents: 34295
diff changeset
26 #define LIBASS_VERSION 0x01010000
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
27
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
28 /*
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
29 * A linked list of images produced by an ass renderer.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
30 *
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
31 * These images have to be rendered in-order for the correct screen
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
32 * composition. The libass renderer clips these bitmaps to the frame size.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
33 * w/h can be zero, in this case the bitmap should not be rendered at all.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
34 * The last bitmap row is not guaranteed to be padded up to stride size,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
35 * e.g. in the worst case a bitmap has the size stride * (h - 1) + w.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
36 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
37 typedef struct ass_image {
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
38 int w, h; // Bitmap width/height
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
39 int stride; // Bitmap stride
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
40 unsigned char *bitmap; // 1bpp stride*h alpha buffer
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
41 // Note: the last row may not be padded to
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
42 // bitmap stride!
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
43 uint32_t color; // Bitmap color and alpha, RGBA
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
44 int dst_x, dst_y; // Bitmap placement inside the video frame
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
45
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
46 struct ass_image *next; // Next image, or NULL
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
47 } ASS_Image;
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
48
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
49 /*
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
50 * Hinting type. (see ass_set_hinting below)
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
51 *
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
52 * FreeType's native hinter is still buggy sometimes and it is recommended
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
53 * to use the light autohinter, ASS_HINTING_LIGHT, instead. For best
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
54 * compatibility with problematic fonts, disable hinting.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
55 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
56 typedef enum {
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
57 ASS_HINTING_NONE = 0,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
58 ASS_HINTING_LIGHT,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
59 ASS_HINTING_NORMAL,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
60 ASS_HINTING_NATIVE
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
61 } ASS_Hinting;
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
62
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
63 /**
34295
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
64 * \brief Text shaping levels.
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
65 *
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
66 * SIMPLE is a fast, font-agnostic shaper that can do only substitutions.
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
67 * COMPLEX is a slower shaper using OpenType for substitutions and positioning.
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
68 *
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
69 * libass uses the best shaper available by default.
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
70 */
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
71 typedef enum {
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
72 ASS_SHAPING_SIMPLE = 0,
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
73 ASS_SHAPING_COMPLEX
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
74 } ASS_ShapingLevel;
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
75
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
76 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
77 * \brief Initialize the library.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
78 * \return library handle or NULL if failed
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
79 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
80 ASS_Library *ass_library_init(void);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
81
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
82 /**
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
83 * \brief Finalize the library
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
84 * \param priv library handle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
85 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
86 void ass_library_done(ASS_Library *priv);
23134
1de2a46a0987 Add -ass-hinting option for setting font hinting method.
eugeni
parents: 21506
diff changeset
87
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
88 /**
31853
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
89 * \brief Set additional fonts directory.
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
90 * Optional directory that will be scanned for fonts recursively. The fonts
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
91 * found are used for font lookup.
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
92 * NOTE: A valid font directory is not needed to support embedded fonts.
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
93 *
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
94 * \param priv library handle
31853
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
95 * \param fonts_dir directory with additional fonts
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
96 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
97 void ass_set_fonts_dir(ASS_Library *priv, const char *fonts_dir);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
98
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
99 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
100 * \brief Whether fonts should be extracted from track data.
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
101 * \param priv library handle
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
102 * \param extract whether to extract fonts
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
103 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
104 void ass_set_extract_fonts(ASS_Library *priv, int extract);
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
105
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
106 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
107 * \brief Register style overrides with a library instance.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
108 * The overrides should have the form [Style.]Param=Value, e.g.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
109 * SomeStyle.Font=Arial
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
110 * ScaledBorderAndShadow=yes
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
111 *
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
112 * \param priv library handle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
113 * \param list NULL-terminated list of strings
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
114 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
115 void ass_set_style_overrides(ASS_Library *priv, char **list);
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
116
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
117 /**
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
118 * \brief Explicitly process style overrides for a track.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
119 * \param track track handle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
120 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
121 void ass_process_force_style(ASS_Track *track);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
122
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
123 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
124 * \brief Register a callback for debug/info messages.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
125 * If a callback is registered, it is called for every message emitted by
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
126 * libass. The callback receives a format string and a list of arguments,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
127 * to be used for the printf family of functions. Additionally, a log level
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
128 * from 0 (FATAL errors) to 7 (verbose DEBUG) is passed. Usually, level 5
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
129 * should be used by applications.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
130 * If no callback is set, all messages level < 5 are printed to stderr,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
131 * prefixed with [ass].
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
132 *
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
133 * \param priv library handle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
134 * \param msg_cb pointer to callback function
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
135 * \param data additional data, will be passed to callback
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
136 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
137 void ass_set_message_cb(ASS_Library *priv, void (*msg_cb)
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
138 (int level, const char *fmt, va_list args, void *data),
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
139 void *data);
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
140
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
141 /**
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
142 * \brief Initialize the renderer.
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
143 * \param priv library handle
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
144 * \return renderer handle or NULL if failed
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
145 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
146 ASS_Renderer *ass_renderer_init(ASS_Library *);
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
147
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
148 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
149 * \brief Finalize the renderer.
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
150 * \param priv renderer handle
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
151 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
152 void ass_renderer_done(ASS_Renderer *priv);
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
153
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
154 /**
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
155 * \brief Set the frame size in pixels, including margins.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
156 * \param priv renderer handle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
157 * \param w width
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
158 * \param h height
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
159 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
160 void ass_set_frame_size(ASS_Renderer *priv, int w, int h);
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
161
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
162 /**
34295
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
163 * \brief Set shaping level. This is merely a hint, the renderer will use
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
164 * whatever is available if the request cannot be fulfilled.
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
165 * \param level shaping level
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
166 */
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
167 void ass_set_shaper(ASS_Renderer *priv, ASS_ShapingLevel level);
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
168
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
169 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
170 * \brief Set frame margins. These values may be negative if pan-and-scan
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
171 * is used.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
172 * \param priv renderer handle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
173 * \param t top margin
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
174 * \param b bottom margin
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
175 * \param l left margin
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
176 * \param r right margin
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
177 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
178 void ass_set_margins(ASS_Renderer *priv, int t, int b, int l, int r);
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
179
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
180 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
181 * \brief Whether margins should be used for placing regular events.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
182 * \param priv renderer handle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
183 * \param use whether to use the margins
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
184 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
185 void ass_set_use_margins(ASS_Renderer *priv, int use);
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
186
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
187 /**
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
188 * \brief Set aspect ratio parameters.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
189 * \param priv renderer handle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
190 * \param dar display aspect ratio (DAR), prescaled for output PAR
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
191 * \param sar storage aspect ratio (SAR)
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
192 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
193 void ass_set_aspect_ratio(ASS_Renderer *priv, double dar, double sar);
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
194
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
195 /**
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
196 * \brief Set a fixed font scaling factor.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
197 * \param priv renderer handle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
198 * \param font_scale scaling factor, default is 1.0
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
199 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
200 void ass_set_font_scale(ASS_Renderer *priv, double font_scale);
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
201
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
202 /**
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
203 * \brief Set font hinting method.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
204 * \param priv renderer handle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
205 * \param ht hinting method
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
206 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
207 void ass_set_hinting(ASS_Renderer *priv, ASS_Hinting ht);
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
208
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
209 /**
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
210 * \brief Set line spacing. Will not be scaled with frame size.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
211 * \param priv renderer handle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
212 * \param line_spacing line spacing in pixels
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
213 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
214 void ass_set_line_spacing(ASS_Renderer *priv, double line_spacing);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
215
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
216 /**
35262
49fc594fda43 Updated libass to 0.10.1
SubJunk
parents: 34295
diff changeset
217 * \brief Set vertical line position.
49fc594fda43 Updated libass to 0.10.1
SubJunk
parents: 34295
diff changeset
218 * \param priv renderer handle
49fc594fda43 Updated libass to 0.10.1
SubJunk
parents: 34295
diff changeset
219 * \param line_position vertical line position of subtitles in percent
49fc594fda43 Updated libass to 0.10.1
SubJunk
parents: 34295
diff changeset
220 * (0-100: 0 = on the bottom (default), 100 = on top)
49fc594fda43 Updated libass to 0.10.1
SubJunk
parents: 34295
diff changeset
221 */
49fc594fda43 Updated libass to 0.10.1
SubJunk
parents: 34295
diff changeset
222 void ass_set_line_position(ASS_Renderer *priv, double line_position);
49fc594fda43 Updated libass to 0.10.1
SubJunk
parents: 34295
diff changeset
223
49fc594fda43 Updated libass to 0.10.1
SubJunk
parents: 34295
diff changeset
224 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
225 * \brief Set font lookup defaults.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
226 * \param default_font path to default font to use. Must be supplied if
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
227 * fontconfig is disabled or unavailable.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
228 * \param default_family fallback font family for fontconfig, or NULL
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
229 * \param fc whether to use fontconfig
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
230 * \param config path to fontconfig configuration file, or NULL. Only relevant
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
231 * if fontconfig is used.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
232 * \param update whether fontconfig cache should be built/updated now. Only
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
233 * relevant if fontconfig is used.
31853
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
234 *
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
235 * NOTE: font lookup must be configured before an ASS_Renderer can be used.
26582
62ac4f8062ee Remove libass dependency on global font_fontconfig variable.
eugeni
parents: 26138
diff changeset
236 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
237 void ass_set_fonts(ASS_Renderer *priv, const char *default_font,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
238 const char *default_family, int fc, const char *config,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
239 int update);
26582
62ac4f8062ee Remove libass dependency on global font_fontconfig variable.
eugeni
parents: 26138
diff changeset
240
62ac4f8062ee Remove libass dependency on global font_fontconfig variable.
eugeni
parents: 26138
diff changeset
241 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
242 * \brief Update/build font cache. This needs to be called if it was
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
243 * disabled when ass_set_fonts was set.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
244 *
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
245 * \param priv renderer handle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
246 * \return success
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
247 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
248 int ass_fonts_update(ASS_Renderer *priv);
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
249
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
250 /**
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
251 * \brief Set hard cache limits. Do not set, or set to zero, for reasonable
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
252 * defaults.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
253 *
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
254 * \param priv renderer handle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
255 * \param glyph_max maximum number of cached glyphs
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
256 * \param bitmap_max_size maximum bitmap cache size (in MB)
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
257 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
258 void ass_set_cache_limits(ASS_Renderer *priv, int glyph_max,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
259 int bitmap_max_size);
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
260
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
261 /**
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
262 * \brief Render a frame, producing a list of ASS_Image.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
263 * \param priv renderer handle
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
264 * \param track subtitle track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
265 * \param now video timestamp in milliseconds
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
266 * \param detect_change will be set to 1 if a change occured compared
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
267 * to the last invocation
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
268 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
269 ASS_Image *ass_render_frame(ASS_Renderer *priv, ASS_Track *track,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
270 long long now, int *detect_change);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
271
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
272
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
273 /*
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
274 * The following functions operate on track objects and do not need
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
275 * an ass_renderer
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
276 */
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
277
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
278 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
279 * \brief Allocate a new empty track object.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
280 * \param library handle
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
281 * \return pointer to empty track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
282 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
283 ASS_Track *ass_new_track(ASS_Library *);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
284
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
285 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
286 * \brief Deallocate track and all its child objects (styles and events).
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
287 * \param track track to deallocate
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
288 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
289 void ass_free_track(ASS_Track *track);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
290
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
291 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
292 * \brief Allocate new style.
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
293 * \param track track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
294 * \return newly allocated style id
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
295 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
296 int ass_alloc_style(ASS_Track *track);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
297
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
298 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
299 * \brief Allocate new event.
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
300 * \param track track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
301 * \return newly allocated event id
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
302 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
303 int ass_alloc_event(ASS_Track *track);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
304
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
305 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
306 * \brief Delete a style.
19474
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
307 * \param track track
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
308 * \param sid style id
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
309 * Deallocates style data. Does not modify track->n_styles.
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
310 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
311 void ass_free_style(ASS_Track *track, int sid);
19474
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
312
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
313 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
314 * \brief Delete an event.
19474
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
315 * \param track track
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
316 * \param eid event id
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
317 * Deallocates event data. Does not modify track->n_events.
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
318 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
319 void ass_free_event(ASS_Track *track, int eid);
19474
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
320
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
321 /**
27498
d895515b366d libass: add a new ass_process_data() to process demuxed subtitle packets
aurel
parents: 26738
diff changeset
322 * \brief Parse a chunk of subtitle stream data.
d895515b366d libass: add a new ass_process_data() to process demuxed subtitle packets
aurel
parents: 26738
diff changeset
323 * \param track track
d895515b366d libass: add a new ass_process_data() to process demuxed subtitle packets
aurel
parents: 26738
diff changeset
324 * \param data string to parse
d895515b366d libass: add a new ass_process_data() to process demuxed subtitle packets
aurel
parents: 26738
diff changeset
325 * \param size length of data
d895515b366d libass: add a new ass_process_data() to process demuxed subtitle packets
aurel
parents: 26738
diff changeset
326 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
327 void ass_process_data(ASS_Track *track, char *data, int size);
27498
d895515b366d libass: add a new ass_process_data() to process demuxed subtitle packets
aurel
parents: 26738
diff changeset
328
d895515b366d libass: add a new ass_process_data() to process demuxed subtitle packets
aurel
parents: 26738
diff changeset
329 /**
31853
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
330 * \brief Parse Codec Private section of the subtitle stream, in Matroska
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
331 * format. See the Matroska specification for details.
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
332 * \param track target track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
333 * \param data string to parse
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
334 * \param size length of data
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
335 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
336 void ass_process_codec_private(ASS_Track *track, char *data, int size);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
337
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
338 /**
31853
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
339 * \brief Parse a chunk of subtitle stream data. A chunk contains exactly one
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
340 * event in Matroska format. See the Matroska specification for details.
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
341 * \param track track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
342 * \param data string to parse
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
343 * \param size length of data
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
344 * \param timecode starting time of the event (milliseconds)
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
345 * \param duration duration of the event (milliseconds)
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
346 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
347 void ass_process_chunk(ASS_Track *track, char *data, int size,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
348 long long timecode, long long duration);
23424
7286d245bf33 Move code for reading a file and recoding it to utf-8 to a separate function.
eugeni
parents: 23134
diff changeset
349
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
350 /**
31227
ee7beb1a3a6e backport ass_flush_events() from upstream libass and make use of it
aurel
parents: 30200
diff changeset
351 * \brief Flush buffered events.
ee7beb1a3a6e backport ass_flush_events() from upstream libass and make use of it
aurel
parents: 30200
diff changeset
352 * \param track track
ee7beb1a3a6e backport ass_flush_events() from upstream libass and make use of it
aurel
parents: 30200
diff changeset
353 */
ee7beb1a3a6e backport ass_flush_events() from upstream libass and make use of it
aurel
parents: 30200
diff changeset
354 void ass_flush_events(ASS_Track *track);
ee7beb1a3a6e backport ass_flush_events() from upstream libass and make use of it
aurel
parents: 30200
diff changeset
355
ee7beb1a3a6e backport ass_flush_events() from upstream libass and make use of it
aurel
parents: 30200
diff changeset
356 /**
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
357 * \brief Read subtitles from file.
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
358 * \param library library handle
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
359 * \param fname file name
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
360 * \param codepage encoding (iconv format)
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
361 * \return newly allocated track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
362 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
363 ASS_Track *ass_read_file(ASS_Library *library, char *fname,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
364 char *codepage);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
365
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
366 /**
20603
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
367 * \brief Read subtitles from memory.
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
368 * \param library library handle
20603
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
369 * \param buf pointer to subtitles text
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
370 * \param bufsize size of buffer
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
371 * \param codepage encoding (iconv format)
20603
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
372 * \return newly allocated track
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27499
diff changeset
373 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
374 ASS_Track *ass_read_memory(ASS_Library *library, char *buf,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
375 size_t bufsize, char *codepage);
20603
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
376 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
377 * \brief Read styles from file into already initialized track.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
378 * \param fname file name
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
379 * \param codepage encoding (iconv format)
19652
2c016957360a Add -ass-styles option. It allows to load styles from a file and use them
eugeni
parents: 19638
diff changeset
380 * \return 0 on success
2c016957360a Add -ass-styles option. It allows to load styles from a file and use them
eugeni
parents: 19638
diff changeset
381 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
382 int ass_read_styles(ASS_Track *track, char *fname, char *codepage);
19652
2c016957360a Add -ass-styles option. It allows to load styles from a file and use them
eugeni
parents: 19638
diff changeset
383
2c016957360a Add -ass-styles option. It allows to load styles from a file and use them
eugeni
parents: 19638
diff changeset
384 /**
21455
dd49d3712e6f Rename: ass_process_font -> ass_add_font.
eugeni
parents: 20603
diff changeset
385 * \brief Add a memory font.
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
386 * \param library library handle
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
387 * \param name attachment name
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
388 * \param data binary font data
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
389 * \param data_size data size
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
390 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
391 void ass_add_font(ASS_Library *library, char *name, char *data,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
392 int data_size);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
393
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
394 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
395 * \brief Remove all fonts stored in an ass_library object.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
396 * \param library library handle
25613
f00333e3facf Copy font data to ass_library instead of referencing demuxer-owned memory.
eugeni
parents: 25535
diff changeset
397 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
398 void ass_clear_fonts(ASS_Library *library);
25613
f00333e3facf Copy font data to ass_library instead of referencing demuxer-owned memory.
eugeni
parents: 25535
diff changeset
399
f00333e3facf Copy font data to ass_library instead of referencing demuxer-owned memory.
eugeni
parents: 25535
diff changeset
400 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
401 * \brief Calculates timeshift from now to the start of some other subtitle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
402 * event, depending on movement parameter.
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
403 * \param track subtitle track
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
404 * \param now current time in milliseconds
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
405 * \param movement how many events to skip from the one currently displayed
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
406 * +2 means "the one after the next", -1 means "previous"
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
407 * \return timeshift in milliseconds
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
408 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
409 long long ass_step_sub(ASS_Track *track, long long now, int movement);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
410
25897
aaebaf255b23 Consistently give all libass multiple inclusion guards a LIBASS_ prefix.
diego
parents: 25613
diff changeset
411 #endif /* LIBASS_ASS_H */