30 #define WEBVTT_STACK_SIZE 64
42 __attribute__ ((__format__ (__printf__, 2, 3)))
56 s->stack[
s->stack_ptr++] =
c;
62 if (
s->stack_ptr <= 0)
64 return s->stack[--
s->stack_ptr];
70 for (
i =
s->stack_ptr-1;
i >= 0;
i--)
87 while (
s->stack_ptr !=
i)
166 for (
i=0;
i<
sub->num_rects;
i++) {
167 const char *ass =
sub->rects[
i]->ass;
174 #if FF_API_ASS_TIMING
175 if (!strncmp(ass,
"Dialogue: ", 10)) {
179 for (; dialog && num--; dialog++) {
191 #if FF_API_ASS_TIMING
201 if (
s->buffer.len > bufsize) {
205 memcpy(buf,
s->buffer.str,
s->buffer.len);
207 return s->buffer.len;
#define ASS_DEFAULT_UNDERLINE
#define ASS_DEFAULT_ITALIC
ASSDialog * ff_ass_split_dialog2(ASSSplitContext *ctx, const char *buf)
Split one ASS Dialogue line from a string buffer.
void ff_ass_free_dialog(ASSDialog **dialogp)
Free a dialogue obtained from ff_ass_split_dialog2().
ASSDialog * ff_ass_split_dialog(ASSSplitContext *ctx, const char *buf, int cache, int *number)
Split one or several ASS "Dialogue" lines from a string buffer and store them in an already initializ...
int ff_ass_split_override_codes(const ASSCodesCallbacks *callbacks, void *priv, const char *buf)
Split override codes out of a ASS "Dialogue" Text field.
ASSSplitContext * ff_ass_split(const char *buf)
Split a full ASS file or a ASS header from a string buffer and store the split structure in a newly a...
ASSStyle * ff_ass_style_get(ASSSplitContext *ctx, const char *style)
Find an ASSStyle structure by its name.
void ff_ass_split_free(ASSSplitContext *ctx)
Free all the memory allocated for an ASSSplitContext.
Libavcodec external API header.
static av_cold int init(AVCodecContext *avctx)
void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max)
int av_bprint_finalize(AVBPrint *buf, char **ret_str)
Finalize a print buffer.
void av_vbprintf(AVBPrint *buf, const char *fmt, va_list vl_arg)
Append a formatted string to a print buffer.
void av_bprint_append_data(AVBPrint *buf, const char *data, unsigned size)
Append data to a print buffer.
void av_bprint_clear(AVBPrint *buf)
Reset the string to "" but keep internal allocated data.
#define AV_BPRINT_SIZE_UNLIMITED
static int av_bprint_is_complete(const AVBPrint *buf)
Test if the print buffer is complete (not truncated).
static float sub(float src0, float src1)
void(* text)(void *priv, const char *text, int len)
@ SUBTITLE_ASS
Formatted text, the ass field must be set by the decoder and is authoritative.
#define AVERROR_BUFFER_TOO_SMALL
Buffer too small.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static int webvtt_encode_close(AVCodecContext *avctx)
static void webvtt_new_line_cb(void *priv, int forced)
static int webvtt_encode_frame(AVCodecContext *avctx, unsigned char *buf, int bufsize, const AVSubtitle *sub)
static av_cold int webvtt_encode_init(AVCodecContext *avctx)
AVCodec ff_webvtt_encoder
static char webvtt_stack_pop(WebVTTContext *s)
#define WEBVTT_STACK_SIZE
static int webvtt_stack_find(WebVTTContext *s, const char c)
static void webvtt_style_cb(void *priv, char style, int close)
static void webvtt_print(WebVTTContext *s, const char *str,...)
static void webvtt_end_cb(void *priv)
static void webvtt_close_tag(WebVTTContext *s, char tag)
static void webvtt_text_cb(void *priv, const char *text, int len)
static void webvtt_style_apply(WebVTTContext *s, const char *style)
static void webvtt_cancel_overrides_cb(void *priv, const char *style)
static int webvtt_stack_push(WebVTTContext *s, const char c)
static const ASSCodesCallbacks webvtt_callbacks
static void webvtt_stack_push_pop(WebVTTContext *s, const char c, int close)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Set of callback functions corresponding to each override codes that can be encountered in a "Dialogue...
fields extracted from the [Events] section
char * style
name of the ASSStyle to use with this dialog
char * text
actual text which will be displayed as a subtitle, can include style override control codes (see ff_a...
This struct can be casted to ASS to access to the split data.
fields extracted from the [V4(+) Styles] section
int italic
whether text is italic (1) or not (0)
int bold
whether text is bold (1) or not (0)
int underline
whether text is underlined (1) or not (0)
main external API structure.
uint8_t * subtitle_header
Header containing style information for text subtitles.
const char * name
Name of the codec implementation.
ASSSplitContext * ass_ctx