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 |
Context | Check | Description |
---|---|---|
andriy/ffmpeg-patchwork | warning | Failed to apply patch |
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 --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