[FFmpeg-devel] [PATCH 05/23] lavc/movtextdec: only write fontsize, fontID tags if not default
Philip Langdale
philipl at overt.org
Tue Apr 7 00:51:08 EEST 2020
On Mon, 6 Apr 2020 11:52:00 -0600
John Stebbins <jstebbins at jetheaddev.com> wrote:
> ---
> libavcodec/movtextdec.c | 20 +++++++++++---------
> 1 file changed, 11 insertions(+), 9 deletions(-)
>
> diff --git a/libavcodec/movtextdec.c b/libavcodec/movtextdec.c
> index a3e37d013d..6c7d93702e 100644
> --- a/libavcodec/movtextdec.c
> +++ b/libavcodec/movtextdec.c
> @@ -51,8 +51,9 @@
> #define RGB_TO_BGR(c) (((c) & 0xff) << 16 | ((c) & 0xff00) | (((c)
> >> 16) & 0xff))
> typedef struct {
> + uint16_t fontID;
> char *font;
> - int fontsize;
> + uint8_t fontsize;
> int color;
> int back_color;
> uint8_t bold;
> @@ -146,7 +147,6 @@ static int mov_text_tx3g(AVCodecContext *avctx,
> MovTextContext *m) uint8_t *tx3g_ptr = avctx->extradata;
> int i, box_size, font_length;
> int8_t v_align, h_align;
> - int style_fontID;
> StyleBox s_default;
>
> m->count_f = 0;
> @@ -192,7 +192,7 @@ static int mov_text_tx3g(AVCodecContext *avctx,
> MovTextContext *m) // StyleRecord
> tx3g_ptr += 4;
> // fontID
> - style_fontID = AV_RB16(tx3g_ptr);
> + m->d.fontID = AV_RB16(tx3g_ptr);
> tx3g_ptr += 2;
> // face-style-flags
> s_default.style_flag = *tx3g_ptr++;
> @@ -252,7 +252,7 @@ static int mov_text_tx3g(AVCodecContext *avctx,
> MovTextContext *m) tx3g_ptr = tx3g_ptr + font_length;
> }
> for (i = 0; i < m->ftab_entries; i++) {
> - if (style_fontID == m->ftab[i]->fontID)
> + if (m->d.fontID == m->ftab[i]->fontID)
> m->d.font = m->ftab[i]->font;
> }
> return 0;
> @@ -385,11 +385,13 @@ static int text_to_ass(AVBPrint *buf, const
> char *text, const char *text_end, av_bprintf(buf, "{\\i%d}",
> m->s[entry]->italic); if (m->s[entry]->underline ^ m->d.underline)
> av_bprintf(buf, "{\\u%d}",
> m->s[entry]->underline);
> - av_bprintf(buf, "{\\fs%d}", m->s[entry]->fontsize);
> - for (i = 0; i < m->ftab_entries; i++) {
> - if (m->s[entry]->style_fontID ==
> m->ftab[i]->fontID)
> - av_bprintf(buf, "{\\fn%s}",
> m->ftab[i]->font);
> - }
> + if (m->s[entry]->fontsize != m->d.fontsize)
> + av_bprintf(buf, "{\\fs%d}",
> m->s[entry]->fontsize);
> + if (m->s[entry]->style_fontID != m->d.fontID)
> + for (i = 0; i < m->ftab_entries; i++) {
> + if (m->s[entry]->style_fontID ==
> m->ftab[i]->fontID)
> + av_bprintf(buf, "{\\fn%s}",
> m->ftab[i]->font);
> + }
> }
> if (text_pos == m->s[entry]->style_end) {
> if (style_active) {
LGTM.
--phil
More information about the ffmpeg-devel
mailing list