diff mbox series

[FFmpeg-devel,05/23] lavc/movtextdec: only write fontsize, fontID tags if not default

Message ID 20200406175218.1299994-6-jstebbins@jetheaddev.com
State Accepted
Commit e5b99df096b8f15468dffb0e1cac0b27a9c453f3
Headers show
Series [FFmpeg-devel,01/23] lavc/movtextdec: fix ass header colors | expand

Checks

Context Check Description
andriy/ffmpeg-patchwork success Make fate finished

Commit Message

John Stebbins April 6, 2020, 5:52 p.m. UTC
---
 libavcodec/movtextdec.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

Comments

Philip Langdale April 6, 2020, 9:51 p.m. UTC | #1
On Mon, 6 Apr 2020 11:52:00 -0600
John Stebbins <jstebbins@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
diff mbox series

Patch

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) {