annotate libass/ass.h @ 27427:a54c51af6595

demux_lavf: fix mp_seek behavior in case of seeking error When trying to seek past the end of file, the ByteIOContext expect that the stream is left in the same state as it was before the tentative seek. stream_seek() does not meet this expectation. It changes current position when seeking past the end of file. Thus, it is necessary to reset the stream to its previous state after a seek failure.
author aurel
date Wed, 13 Aug 2008 00:01:31 +0000
parents 588ce97b44f2
children d895515b366d
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 // -*- c-basic-offset: 8; indent-tabs-mode: t -*-
fa122b7c71c6 Add copyright notice and vim/emacs comments to libass and vf_ass.c.
eugeni
parents: 19652
diff changeset
2 // vim:ts=8:sw=8:noet:ai:
fa122b7c71c6 Add copyright notice and vim/emacs comments to libass and vf_ass.c.
eugeni
parents: 19652
diff changeset
3 /*
26723
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
4 * Copyright (C) 2006 Evgeniy Stepanov <eugeni.stepanov@gmail.com>
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
5 *
26738
588ce97b44f2 Speak of libass instead of MPlayer in the libass license headers.
diego
parents: 26723
diff changeset
6 * This file is part of libass.
26723
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
7 *
26738
588ce97b44f2 Speak of libass instead of MPlayer in the libass license headers.
diego
parents: 26723
diff changeset
8 * libass is free software; you can redistribute it and/or modify
26723
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
9 * it under the terms of the GNU General Public License as published by
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
11 * (at your option) any later version.
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
12 *
26738
588ce97b44f2 Speak of libass instead of MPlayer in the libass license headers.
diego
parents: 26723
diff changeset
13 * libass is distributed in the hope that it will be useful,
26723
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
16 * GNU General Public License for more details.
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
17 *
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
18 * You should have received a copy of the GNU General Public License along
26738
588ce97b44f2 Speak of libass instead of MPlayer in the libass license headers.
diego
parents: 26723
diff changeset
19 * with libass; if not, write to the Free Software Foundation, Inc.,
26723
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
0f892cd714b2 Use standard license header.
diego
parents: 26582
diff changeset
21 */
20008
fa122b7c71c6 Add copyright notice and vim/emacs comments to libass and vf_ass.c.
eugeni
parents: 19652
diff changeset
22
25897
aaebaf255b23 Consistently give all libass multiple inclusion guards a LIBASS_ prefix.
diego
parents: 25613
diff changeset
23 #ifndef LIBASS_ASS_H
aaebaf255b23 Consistently give all libass multiple inclusion guards a LIBASS_ prefix.
diego
parents: 25613
diff changeset
24 #define LIBASS_ASS_H
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
25
26138
74055622161d Add missing header #includes to fix 'make checkheaders'.
diego
parents: 25897
diff changeset
26 #include <stdio.h>
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
27 #include "ass_types.h"
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
28
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
29 /// Libass renderer object. Contents are private.
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
30 typedef struct ass_renderer_s ass_renderer_t;
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
31
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
32 /// a linked list of images produced by ass renderer
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
33 typedef struct ass_image_s {
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
34 int w, h; // bitmap width/height
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
35 int stride; // bitmap stride
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
36 unsigned char* bitmap; // 1bpp stride*h alpha buffer
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
37 uint32_t color; // RGBA
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
38 int dst_x, dst_y; // bitmap placement inside the video frame
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
39
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
40 struct ass_image_s* next; // linked list
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
41 } ass_image_t;
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
42
23134
1de2a46a0987 Add -ass-hinting option for setting font hinting method.
eugeni
parents: 21506
diff changeset
43 /// Hinting type
1de2a46a0987 Add -ass-hinting option for setting font hinting method.
eugeni
parents: 21506
diff changeset
44 typedef enum {ASS_HINTING_NONE = 0,
1de2a46a0987 Add -ass-hinting option for setting font hinting method.
eugeni
parents: 21506
diff changeset
45 ASS_HINTING_LIGHT,
1de2a46a0987 Add -ass-hinting option for setting font hinting method.
eugeni
parents: 21506
diff changeset
46 ASS_HINTING_NORMAL,
1de2a46a0987 Add -ass-hinting option for setting font hinting method.
eugeni
parents: 21506
diff changeset
47 ASS_HINTING_NATIVE
1de2a46a0987 Add -ass-hinting option for setting font hinting method.
eugeni
parents: 21506
diff changeset
48 } ass_hinting_t;
1de2a46a0987 Add -ass-hinting option for setting font hinting method.
eugeni
parents: 21506
diff changeset
49
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
50 /**
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
51 * \brief initialize the library
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
52 * \return library handle or NULL if failed
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
53 */
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
54 ass_library_t* ass_library_init(void);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
55
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
56 /**
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
57 * \brief finalize the library
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
58 * \param priv library handle
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
59 */
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
60 void ass_library_done(ass_library_t*);
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
61
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
62 /**
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
63 * \brief set private font directory
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
64 * It is used for saving embedded fonts and also in font lookup.
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
65 */
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
66 void ass_set_fonts_dir(ass_library_t* priv, const char* fonts_dir);
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
67
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
68 void ass_set_extract_fonts(ass_library_t* priv, int extract);
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
69
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
70 void ass_set_style_overrides(ass_library_t* priv, char** list);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
71
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
72 /**
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
73 * \brief initialize the renderer
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
74 * \param priv library handle
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
75 * \return renderer handle or NULL if failed
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
76 */
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
77 ass_renderer_t* ass_renderer_init(ass_library_t*);
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
78
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
79 /**
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
80 * \brief finalize the renderer
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
81 * \param priv renderer handle
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
82 */
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
83 void ass_renderer_done(ass_renderer_t* priv);
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
84
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
85 void ass_set_frame_size(ass_renderer_t* priv, int w, int h);
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
86 void ass_set_margins(ass_renderer_t* priv, int t, int b, int l, int r);
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
87 void ass_set_use_margins(ass_renderer_t* priv, int use);
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
88 void ass_set_aspect_ratio(ass_renderer_t* priv, double ar);
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
89 void ass_set_font_scale(ass_renderer_t* priv, double font_scale);
23134
1de2a46a0987 Add -ass-hinting option for setting font hinting method.
eugeni
parents: 21506
diff changeset
90 void ass_set_hinting(ass_renderer_t* priv, ass_hinting_t ht);
24554
ffc2c7164bc0 Enable ass_line_spacing option.
eugeni
parents: 23689
diff changeset
91 void ass_set_line_spacing(ass_renderer_t* priv, double line_spacing);
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
92
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
93 /**
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
94 * \brief set font lookup defaults
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
95 */
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
96 int ass_set_fonts(ass_renderer_t* priv, const char* default_font, const char* default_family);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
97
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
98 /**
26582
62ac4f8062ee Remove libass dependency on global font_fontconfig variable.
eugeni
parents: 26138
diff changeset
99 * \brief set font lookup defaults, don't use fontconfig even if it is available
62ac4f8062ee Remove libass dependency on global font_fontconfig variable.
eugeni
parents: 26138
diff changeset
100 */
62ac4f8062ee Remove libass dependency on global font_fontconfig variable.
eugeni
parents: 26138
diff changeset
101 int ass_set_fonts_nofc(ass_renderer_t* priv, const char* default_font, const char* default_family);
62ac4f8062ee Remove libass dependency on global font_fontconfig variable.
eugeni
parents: 26138
diff changeset
102
62ac4f8062ee Remove libass dependency on global font_fontconfig variable.
eugeni
parents: 26138
diff changeset
103 /**
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
104 * \brief render a frame, producing a list of ass_image_t
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
105 * \param priv library
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
106 * \param track subtitle track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
107 * \param now video timestamp in milliseconds
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
108 */
21506
8174acbf0633 Speed up ASS subtitles display by detecting changes between two consecutive
eugeni
parents: 21458
diff changeset
109 ass_image_t* ass_render_frame(ass_renderer_t *priv, ass_track_t* track, long long now, int* detect_change);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
110
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
111
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
112 // The following functions operate on track objects and do not need an ass_renderer //
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
113
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
114 /**
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
115 * \brief allocate a new empty track object
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
116 * \return pointer to empty track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
117 */
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
118 ass_track_t* ass_new_track(ass_library_t*);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
119
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
120 /**
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
121 * \brief deallocate track and all its child objects (styles and events)
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
122 * \param track track to deallocate
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
123 */
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
124 void ass_free_track(ass_track_t* track);
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
125
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
126 /**
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
127 * \brief allocate new style
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
128 * \param track track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
129 * \return newly allocated style id
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
130 */
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
131 int ass_alloc_style(ass_track_t* track);
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
132
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
133 /**
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
134 * \brief allocate new event
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
135 * \param track track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
136 * \return newly allocated event id
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
137 */
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
138 int ass_alloc_event(ass_track_t* track);
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
139
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
140 /**
19474
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
141 * \brief delete a style
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
142 * \param track track
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
143 * \param sid style id
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
144 * Deallocates style data. Does not modify track->n_styles.
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
145 */
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
146 void ass_free_style(ass_track_t* track, int sid);
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
147
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
148 /**
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
149 * \brief delete an event
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
150 * \param track track
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
151 * \param eid event id
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
152 * Deallocates event data. Does not modify track->n_events.
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
153 */
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
154 void ass_free_event(ass_track_t* track, int eid);
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
155
07209f48e527 Add public functions for removal of styles and events.
eugeni
parents: 18937
diff changeset
156 /**
25514
8b945798b8f7 Improve comments for ass_process_* functions.
eugeni
parents: 24554
diff changeset
157 * \brief Parse Codec Private section of subtitle stream
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
158 * \param track target track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
159 * \param data string to parse
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
160 * \param size length of data
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
161 */
19492
c8daf3471201 SSA/ASS parser reworked, with 2 main results:
eugeni
parents: 19474
diff changeset
162 void ass_process_codec_private(ass_track_t* track, char *data, int size);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
163
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
164 /**
25515
diego
parents: 25514
diff changeset
165 * \brief Parse a chunk of subtitle stream data. In Matroska, this contains exactly 1 event (or a commentary).
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
166 * \param track track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
167 * \param data string to parse
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
168 * \param size length of data
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
169 * \param timecode starting time of the event (milliseconds)
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
170 * \param duration duration of the event (milliseconds)
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
171 */
19492
c8daf3471201 SSA/ASS parser reworked, with 2 main results:
eugeni
parents: 19474
diff changeset
172 void ass_process_chunk(ass_track_t* track, char *data, int size, long long timecode, long long duration);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
173
23424
7286d245bf33 Move code for reading a file and recoding it to utf-8 to a separate function.
eugeni
parents: 23134
diff changeset
174 char* read_file_recode(char* fname, char* codepage, int* size);
7286d245bf33 Move code for reading a file and recoding it to utf-8 to a separate function.
eugeni
parents: 23134
diff changeset
175
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
176 /**
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
177 * \brief Read subtitles from file.
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
178 * \param fname file name
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
179 * \return newly allocated track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
180 */
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
181 ass_track_t* ass_read_file(ass_library_t* library, char* fname, char* codepage);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
182
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
183 /**
20603
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
184 * \brief Read subtitles from memory.
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
185 * \param library libass library object
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
186 * \param buf pointer to subtitles text
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
187 * \param bufsize size of buffer
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
188 * \param codepage recode buffer contents from given codepage
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
189 * \return newly allocated track
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
190 */
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
191 ass_track_t* ass_read_memory(ass_library_t* library, char* buf, size_t bufsize, char* codepage);
b0814eba65ec Implement loading subtitles from memory.
eugeni
parents: 20477
diff changeset
192 /**
19652
2c016957360a Add -ass-styles option. It allows to load styles from a file and use them
eugeni
parents: 19638
diff changeset
193 * \brief read styles from file into already initialized track
2c016957360a Add -ass-styles option. It allows to load styles from a file and use them
eugeni
parents: 19638
diff changeset
194 * \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
195 */
20477
de4a66d99f41 Libass interface reworked:
eugeni
parents: 20446
diff changeset
196 int ass_read_styles(ass_track_t* 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
197
2c016957360a Add -ass-styles option. It allows to load styles from a file and use them
eugeni
parents: 19638
diff changeset
198 /**
21455
dd49d3712e6f Rename: ass_process_font -> ass_add_font.
eugeni
parents: 20603
diff changeset
199 * \brief Add a memory font.
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
200 * \param name attachment name
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
201 * \param data binary font data
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
202 * \param data_size data size
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
203 */
21458
7af6c25a0cfc Keep embedded fonts in ass_library_t and perform actual disk write
eugeni
parents: 21455
diff changeset
204 void ass_add_font(ass_library_t* library, char* name, char* data, int data_size);
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
205
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
206 /**
25613
f00333e3facf Copy font data to ass_library instead of referencing demuxer-owned memory.
eugeni
parents: 25535
diff changeset
207 * \brief Remove all fonts stored in ass_library object
f00333e3facf Copy font data to ass_library instead of referencing demuxer-owned memory.
eugeni
parents: 25535
diff changeset
208 */
f00333e3facf Copy font data to ass_library instead of referencing demuxer-owned memory.
eugeni
parents: 25535
diff changeset
209 void ass_clear_fonts(ass_library_t* library);
f00333e3facf Copy font data to ass_library instead of referencing demuxer-owned memory.
eugeni
parents: 25535
diff changeset
210
f00333e3facf Copy font data to ass_library instead of referencing demuxer-owned memory.
eugeni
parents: 25535
diff changeset
211 /**
18937
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
212 * \brief Calculates timeshift from now to the start of some other subtitle event, depending on movement parameter
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
213 * \param track subtitle track
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
214 * \param now current time, ms
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
215 * \param movement how many events to skip from the one currently displayed
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
216 * +2 means "the one after the next", -1 means "previous"
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
217 * \return timeshift, ms
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
218 */
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
219 long long ass_step_sub(ass_track_t* track, long long now, int movement);
9e95ac641e77 Initial libass release (without mencoder support).
eugeni
parents:
diff changeset
220
25897
aaebaf255b23 Consistently give all libass multiple inclusion guards a LIBASS_ prefix.
diego
parents: 25613
diff changeset
221 #endif /* LIBASS_ASS_H */