annotate libass/ass.h @ 34929:c410ef9752a0

Initialize a few more AVFrame fields to avoid FFmpeg errors. However this really needs to be done via FFmpeg somehow to avoid issues each time new fields are added, either by exposing ff_init_buffer_info as public API or by calling get_buffer etc. through wrappers that take care of the initialization.
author reimar
date Sat, 14 Jul 2012 11:37:22 +0000
parents 6e7f60f6f9d4
children 49fc594fda43
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
34295
6e7f60f6f9d4 Update libass to 0.10 release.
reimar
parents: 34011
diff changeset
26 #define LIBASS_VERSION 0x01000000
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 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
217 * \brief Set font lookup defaults.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
218 * \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
219 * fontconfig is disabled or unavailable.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
220 * \param default_family fallback font family for fontconfig, or NULL
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
221 * \param fc whether to use fontconfig
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
222 * \param config path to fontconfig configuration file, or NULL. Only relevant
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
223 * if fontconfig is used.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
224 * \param update whether fontconfig cache should be built/updated now. Only
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
225 * relevant if fontconfig is used.
31853
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
226 *
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
227 * 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
228 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
229 void ass_set_fonts(ASS_Renderer *priv, const char *default_font,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
230 const char *default_family, int fc, const char *config,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
231 int update);
26582
62ac4f8062ee Remove libass dependency on global font_fontconfig variable.
eugeni
parents: 26138
diff changeset
232
62ac4f8062ee Remove libass dependency on global font_fontconfig variable.
eugeni
parents: 26138
diff changeset
233 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
234 * \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
235 * disabled when ass_set_fonts was set.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
236 *
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
237 * \param priv renderer handle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
238 * \return success
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
239 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
240 int ass_fonts_update(ASS_Renderer *priv);
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
241
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
242 /**
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
243 * \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
244 * defaults.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
245 *
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
246 * \param priv renderer handle
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
247 * \param glyph_max maximum number of cached glyphs
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
248 * \param bitmap_max_size maximum bitmap cache size (in MB)
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 void ass_set_cache_limits(ASS_Renderer *priv, int glyph_max,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
251 int bitmap_max_size);
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
252
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 * \brief Render a frame, producing a list of ASS_Image.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
255 * \param priv renderer handle
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
256 * \param track subtitle track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
257 * \param now video timestamp in milliseconds
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
258 * \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
259 * to the last invocation
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
260 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
261 ASS_Image *ass_render_frame(ASS_Renderer *priv, ASS_Track *track,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
262 long long now, int *detect_change);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
263
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
264
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
265 /*
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
266 * The following functions operate on track objects and do not need
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
267 * an ass_renderer
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
268 */
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
269
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
270 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
271 * \brief Allocate a new empty track object.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
272 * \param library handle
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
273 * \return pointer to empty track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
274 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
275 ASS_Track *ass_new_track(ASS_Library *);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
276
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
277 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
278 * \brief Deallocate track and all its child objects (styles and events).
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
279 * \param track track to deallocate
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
280 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
281 void ass_free_track(ASS_Track *track);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
282
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
283 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
284 * \brief Allocate new style.
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
285 * \param track track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
286 * \return newly allocated style id
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
287 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
288 int ass_alloc_style(ASS_Track *track);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
289
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
290 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
291 * \brief Allocate new event.
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
292 * \param track track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
293 * \return newly allocated event id
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
294 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
295 int ass_alloc_event(ASS_Track *track);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
296
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
297 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
298 * \brief Delete a style.
19474
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
299 * \param track track
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
300 * \param sid style id
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
301 * Deallocates style data. Does not modify track->n_styles.
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
302 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
303 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
304
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
305 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
306 * \brief Delete an event.
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 eid event id
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
309 * Deallocates event data. Does not modify track->n_events.
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_event(ASS_Track *track, int eid);
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 /**
27498
d895515b366d libass: add a new ass_process_data() to process demuxed subtitle packets
aurel
parents: 26738
diff changeset
314 * \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
315 * \param track track
d895515b366d libass: add a new ass_process_data() to process demuxed subtitle packets
aurel
parents: 26738
diff changeset
316 * \param data string to parse
d895515b366d libass: add a new ass_process_data() to process demuxed subtitle packets
aurel
parents: 26738
diff changeset
317 * \param size length of data
d895515b366d libass: add a new ass_process_data() to process demuxed subtitle packets
aurel
parents: 26738
diff changeset
318 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
319 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
320
d895515b366d libass: add a new ass_process_data() to process demuxed subtitle packets
aurel
parents: 26738
diff changeset
321 /**
31853
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
322 * \brief Parse Codec Private section of the subtitle stream, in Matroska
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
323 * format. See the Matroska specification for details.
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
324 * \param track target track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
325 * \param data string to parse
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
326 * \param size length of data
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
327 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
328 void ass_process_codec_private(ASS_Track *track, char *data, int size);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
329
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
330 /**
31853
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
331 * \brief Parse a chunk of subtitle stream data. A chunk contains exactly one
e64df5862cea Import libass 0.9.10
greg
parents: 31242
diff changeset
332 * event in Matroska format. See the Matroska specification for details.
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
333 * \param track track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
334 * \param data string to parse
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
335 * \param size length of data
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
336 * \param timecode starting time of the event (milliseconds)
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
337 * \param duration duration of the event (milliseconds)
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
338 */
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
339 void ass_process_chunk(ASS_Track *track, char *data, int size,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
340 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
341
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
342 /**
31227
ee7beb1a3a6e backport ass_flush_events() from upstream libass and make use of it
aurel
parents: 30200
diff changeset
343 * \brief Flush buffered events.
ee7beb1a3a6e backport ass_flush_events() from upstream libass and make use of it
aurel
parents: 30200
diff changeset
344 * \param track track
ee7beb1a3a6e backport ass_flush_events() from upstream libass and make use of it
aurel
parents: 30200
diff changeset
345 */
ee7beb1a3a6e backport ass_flush_events() from upstream libass and make use of it
aurel
parents: 30200
diff changeset
346 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
347
ee7beb1a3a6e backport ass_flush_events() from upstream libass and make use of it
aurel
parents: 30200
diff changeset
348 /**
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
349 * \brief Read subtitles from file.
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
350 * \param library library handle
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
351 * \param fname file name
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
352 * \param codepage encoding (iconv format)
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
353 * \return newly allocated track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
354 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
355 ASS_Track *ass_read_file(ASS_Library *library, char *fname,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
356 char *codepage);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
357
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
358 /**
20603
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
359 * \brief Read subtitles from memory.
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
360 * \param library library handle
20603
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
361 * \param buf pointer to subtitles text
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
362 * \param bufsize size of buffer
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
363 * \param codepage encoding (iconv format)
20603
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
364 * \return newly allocated track
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27499
diff changeset
365 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
366 ASS_Track *ass_read_memory(ASS_Library *library, char *buf,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
367 size_t bufsize, char *codepage);
20603
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
368 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
369 * \brief Read styles from file into already initialized track.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
370 * \param fname file name
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
371 * \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
372 * \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
373 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
374 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
375
2c016957360a Add -ass-styles option. It allows to load styles from a file and use them
eugeni
parents: 19638
diff changeset
376 /**
21455
dd49d3712e6f Rename: ass_process_font -> ass_add_font.
eugeni
parents: 20603
diff changeset
377 * \brief Add a memory font.
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
378 * \param library library handle
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
379 * \param name attachment name
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
380 * \param data binary font data
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
381 * \param data_size data size
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
382 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
383 void ass_add_font(ASS_Library *library, char *name, char *data,
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
384 int data_size);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
385
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
386 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
387 * \brief Remove all fonts stored in an ass_library object.
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
388 * \param library library handle
25613
f00333e3facf Copy font data to ass_library instead of referencing demuxer-owned memory.
eugeni
parents: 25535
diff changeset
389 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
390 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
391
f00333e3facf Copy font data to ass_library instead of referencing demuxer-owned memory.
eugeni
parents: 25535
diff changeset
392 /**
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
393 * \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
394 * event, depending on movement parameter.
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
395 * \param track subtitle track
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
396 * \param now current time in milliseconds
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
397 * \param movement how many events to skip from the one currently displayed
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
398 * +2 means "the one after the next", -1 means "previous"
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
399 * \return timeshift in milliseconds
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
400 */
30200
48d020c5ceca Update internal libass copy to commit 8db4a5
greg
parents: 30066
diff changeset
401 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
402
25897
aaebaf255b23 Consistently give all libass multiple inclusion guards a LIBASS_ prefix.
diego
parents: 25613
diff changeset
403 #endif /* LIBASS_ASS_H */