diff mbox series

[FFmpeg-devel,07/23] lavc/movtextdec: add alpha default to ass header colors

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

Checks

Context Check Description
andriy/ffmpeg-patchwork warning Failed to apply patch

Commit Message

John Stebbins April 6, 2020, 5:52 p.m. UTC
---
 libavcodec/movtextdec.c    | 14 ++++++++++----
 tests/ref/fate/sub-movtext |  2 +-
 2 files changed, 11 insertions(+), 5 deletions(-)

Comments

Philip Langdale April 6, 2020, 11:59 p.m. UTC | #1
On Mon, 6 Apr 2020 11:52:02 -0600
John Stebbins <jstebbins@jetheaddev.com> wrote:

> ---
>  libavcodec/movtextdec.c    | 14 ++++++++++----
>  tests/ref/fate/sub-movtext |  2 +-
>  2 files changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/libavcodec/movtextdec.c b/libavcodec/movtextdec.c
> index 2481c71af6..eb9c7f5755 100644
> --- a/libavcodec/movtextdec.c
> +++ b/libavcodec/movtextdec.c
> @@ -55,7 +55,9 @@ typedef struct {
>      const char *font;
>      uint8_t fontsize;
>      int color;
> +    uint8_t alpha;
>      int back_color;
> +    uint8_t back_alpha;
>      uint8_t bold;
>      uint8_t italic;
>      uint8_t underline;
> @@ -186,7 +188,9 @@ static int mov_text_tx3g(AVCodecContext *avctx,
> MovTextContext *m) }
>      // Background Color
>      m->d.back_color = AV_RB24(tx3g_ptr);
> -    tx3g_ptr += 4;
> +    tx3g_ptr += 3;
> +    m->d.back_alpha = AV_RB8(tx3g_ptr);
> +    tx3g_ptr += 1;
>      // BoxRecord
>      tx3g_ptr += 8;
>      // StyleRecord
> @@ -203,7 +207,9 @@ static int mov_text_tx3g(AVCodecContext *avctx,
> MovTextContext *m) m->d.fontsize = *tx3g_ptr++;
>      // Primary color
>      m->d.color = AV_RB24(tx3g_ptr);
> -    tx3g_ptr += 4;
> +    tx3g_ptr += 3;
> +    m->d.alpha = AV_RB8(tx3g_ptr);
> +    tx3g_ptr += 1;
>      // FontRecord
>      // FontRecord Size
>      tx3g_ptr += 4;
> @@ -463,8 +469,8 @@ static int mov_text_init(AVCodecContext *avctx) {
>      ret = mov_text_tx3g(avctx, m);
>      if (ret == 0) {
>          return ff_ass_subtitle_header(avctx, m->d.font,
> m->d.fontsize,
> -                    RGB_TO_BGR(m->d.color),
> -                    RGB_TO_BGR(m->d.back_color),
> +                    (255 - m->d.alpha) << 24 |
> RGB_TO_BGR(m->d.color),
> +                    (255 - m->d.back_alpha) << 24 |
> RGB_TO_BGR(m->d.back_color), m->d.bold, m->d.italic, m->d.underline,
>                      ASS_DEFAULT_BORDERSTYLE, m->d.alignment);
>      } else
> diff --git a/tests/ref/fate/sub-movtext b/tests/ref/fate/sub-movtext
> index 94ed22d318..6047060918 100644
> --- a/tests/ref/fate/sub-movtext
> +++ b/tests/ref/fate/sub-movtext
> @@ -6,7 +6,7 @@ PlayResY: 288
>  
>  [V4+ Styles]
>  Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour,
> OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut,
> ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow,
> Alignment, MarginL, MarginR, MarginV, Encoding -Style:
> Default,Serif,18,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,0
> +Style:
> Default,Serif,18,&Hffffff,&Hffffff,&Hff000000,&Hff000000,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,0
> [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR,
> MarginV, Effect, Text

LGTM.


--phil
diff mbox series

Patch

diff --git a/libavcodec/movtextdec.c b/libavcodec/movtextdec.c
index 2481c71af6..eb9c7f5755 100644
--- a/libavcodec/movtextdec.c
+++ b/libavcodec/movtextdec.c
@@ -55,7 +55,9 @@  typedef struct {
     const char *font;
     uint8_t fontsize;
     int color;
+    uint8_t alpha;
     int back_color;
+    uint8_t back_alpha;
     uint8_t bold;
     uint8_t italic;
     uint8_t underline;
@@ -186,7 +188,9 @@  static int mov_text_tx3g(AVCodecContext *avctx, MovTextContext *m)
     }
     // Background Color
     m->d.back_color = AV_RB24(tx3g_ptr);
-    tx3g_ptr += 4;
+    tx3g_ptr += 3;
+    m->d.back_alpha = AV_RB8(tx3g_ptr);
+    tx3g_ptr += 1;
     // BoxRecord
     tx3g_ptr += 8;
     // StyleRecord
@@ -203,7 +207,9 @@  static int mov_text_tx3g(AVCodecContext *avctx, MovTextContext *m)
     m->d.fontsize = *tx3g_ptr++;
     // Primary color
     m->d.color = AV_RB24(tx3g_ptr);
-    tx3g_ptr += 4;
+    tx3g_ptr += 3;
+    m->d.alpha = AV_RB8(tx3g_ptr);
+    tx3g_ptr += 1;
     // FontRecord
     // FontRecord Size
     tx3g_ptr += 4;
@@ -463,8 +469,8 @@  static int mov_text_init(AVCodecContext *avctx) {
     ret = mov_text_tx3g(avctx, m);
     if (ret == 0) {
         return ff_ass_subtitle_header(avctx, m->d.font, m->d.fontsize,
-                    RGB_TO_BGR(m->d.color),
-                    RGB_TO_BGR(m->d.back_color),
+                    (255 - m->d.alpha) << 24 | RGB_TO_BGR(m->d.color),
+                    (255 - m->d.back_alpha) << 24 | RGB_TO_BGR(m->d.back_color),
                     m->d.bold, m->d.italic, m->d.underline,
                     ASS_DEFAULT_BORDERSTYLE, m->d.alignment);
     } else
diff --git a/tests/ref/fate/sub-movtext b/tests/ref/fate/sub-movtext
index 94ed22d318..6047060918 100644
--- a/tests/ref/fate/sub-movtext
+++ b/tests/ref/fate/sub-movtext
@@ -6,7 +6,7 @@  PlayResY: 288
 
 [V4+ Styles]
 Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Serif,18,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,0
+Style: Default,Serif,18,&Hffffff,&Hffffff,&Hff000000,&Hff000000,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,0
 
 [Events]
 Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text