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); } } }