mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
lavc/movtextenc: handle cancel overrides callback
Signed-off-by: Philip Langdale <philipl@overt.org>
This commit is contained in:
parent
848792be60
commit
bb8fd04665
@ -69,6 +69,7 @@ typedef struct {
|
||||
AVCodecContext *avctx;
|
||||
|
||||
ASSSplitContext *ass_ctx;
|
||||
ASSStyle *ass_dialog_style;
|
||||
AVBPrint buffer;
|
||||
StyleBox **style_attributes;
|
||||
StyleBox *style_attributes_temp;
|
||||
@ -396,9 +397,8 @@ static void mov_text_end_cb(void *priv)
|
||||
mov_text_style_start((MovTextContext*)priv);
|
||||
}
|
||||
|
||||
static void mov_text_dialog(MovTextContext *s, ASSDialog *dialog)
|
||||
static void mov_text_ass_style_set(MovTextContext *s, ASSStyle *style)
|
||||
{
|
||||
ASSStyle * style = ff_ass_style_get(s->ass_ctx, dialog->style);
|
||||
uint8_t style_flags, alpha;
|
||||
uint32_t color;
|
||||
|
||||
@ -412,9 +412,33 @@ static void mov_text_dialog(MovTextContext *s, ASSDialog *dialog)
|
||||
alpha = 255 - ((uint32_t)style->primary_color >> 24);
|
||||
mov_text_alpha_set(s, alpha);
|
||||
mov_text_font_size_set(s, style->font_size);
|
||||
} else {
|
||||
// End current style record, go back to defaults
|
||||
mov_text_style_start(s);
|
||||
}
|
||||
}
|
||||
|
||||
static void mov_text_dialog(MovTextContext *s, ASSDialog *dialog)
|
||||
{
|
||||
ASSStyle * style = ff_ass_style_get(s->ass_ctx, dialog->style);
|
||||
|
||||
s->ass_dialog_style = style;
|
||||
mov_text_ass_style_set(s, style);
|
||||
}
|
||||
|
||||
static void mov_text_cancel_overrides_cb(void *priv, const char * style_name)
|
||||
{
|
||||
MovTextContext *s = priv;
|
||||
ASSStyle * style;
|
||||
|
||||
if (!style_name || !*style_name)
|
||||
style = s->ass_dialog_style;
|
||||
else
|
||||
style= ff_ass_style_get(s->ass_ctx, style_name);
|
||||
|
||||
mov_text_ass_style_set(s, style);
|
||||
}
|
||||
|
||||
static uint16_t utf8_strlen(const char *text, int len)
|
||||
{
|
||||
uint16_t i = 0, ret = 0;
|
||||
@ -454,13 +478,14 @@ static void mov_text_new_line_cb(void *priv, int forced)
|
||||
}
|
||||
|
||||
static const ASSCodesCallbacks mov_text_callbacks = {
|
||||
.text = mov_text_text_cb,
|
||||
.new_line = mov_text_new_line_cb,
|
||||
.style = mov_text_style_cb,
|
||||
.color = mov_text_color_cb,
|
||||
.alpha = mov_text_alpha_cb,
|
||||
.font_size = mov_text_font_size_cb,
|
||||
.end = mov_text_end_cb,
|
||||
.text = mov_text_text_cb,
|
||||
.new_line = mov_text_new_line_cb,
|
||||
.style = mov_text_style_cb,
|
||||
.color = mov_text_color_cb,
|
||||
.alpha = mov_text_alpha_cb,
|
||||
.font_size = mov_text_font_size_cb,
|
||||
.cancel_overrides = mov_text_cancel_overrides_cb,
|
||||
.end = mov_text_end_cb,
|
||||
};
|
||||
|
||||
static int mov_text_encode_frame(AVCodecContext *avctx, unsigned char *buf,
|
||||
|
Loading…
Reference in New Issue
Block a user