From f21fcf60eca9f9fde80095eea11b0d54b116d683 Mon Sep 17 00:00:00 2001 From: Niklesh Date: Fri, 24 Jul 2015 14:35:16 +0530 Subject: [PATCH] movtextdec.c: Add support for fontsize Add support for fontsize in style records. The patch uses reset to directly change back to default style instead of using closing tags, since we are not handling the default styles right now. Signed-off-by: Niklesh --- libavcodec/movtextdec.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/libavcodec/movtextdec.c b/libavcodec/movtextdec.c index ca021079ef..869358cb91 100644 --- a/libavcodec/movtextdec.c +++ b/libavcodec/movtextdec.c @@ -39,6 +39,7 @@ typedef struct { uint16_t style_start; uint16_t style_end; uint8_t style_flag; + uint8_t fontsize; } StyleBox; typedef struct { @@ -120,13 +121,14 @@ static int decode_styl(const uint8_t *tsmb, MovTextContext *m, AVPacket *avpkt) // fontID = AV_RB16(tsmb); tsmb += 2; m->s_temp->style_flag = AV_RB8(tsmb); + tsmb++; + m->s_temp->fontsize = AV_RB8(tsmb); av_dynarray_add(&m->s, &m->count_s, m->s_temp); if(!m->s) { mov_text_cleanup(m); return AVERROR(ENOMEM); } - // fontsize = AV_RB8(tsmb); - tsmb += 2; + tsmb++; // text-color-rgba tsmb += 4; } @@ -150,12 +152,7 @@ static int text_to_ass(AVBPrint *buf, const char *text, const char *text_end, if (m->box_flags & STYL_BOX) { for (i = 0; i < m->style_entries; i++) { if (m->s[i]->style_flag && text_pos == m->s[i]->style_end) { - if (m->s[i]->style_flag & STYLE_FLAG_BOLD) - av_bprintf(buf, "{\\b0}"); - if (m->s[i]->style_flag & STYLE_FLAG_ITALIC) - av_bprintf(buf, "{\\i0}"); - if (m->s[i]->style_flag & STYLE_FLAG_UNDERLINE) - av_bprintf(buf, "{\\u0}"); + av_bprintf(buf, "{\\r}"); } } for (i = 0; i < m->style_entries; i++) { @@ -166,6 +163,7 @@ static int text_to_ass(AVBPrint *buf, const char *text, const char *text_end, av_bprintf(buf, "{\\i1}"); if (m->s[i]->style_flag & STYLE_FLAG_UNDERLINE) av_bprintf(buf, "{\\u1}"); + av_bprintf(buf, "{\\fs%d}", m->s[i]->fontsize); } } }