[FFmpeg-devel] [PATCH 18/23] lavc/movtextenc: add alpha tag handling

John Stebbins jstebbins at jetheaddev.com
Thu Apr 9 18:23:34 EEST 2020


On Wed, 2020-04-08 at 11:37 -0700, Philip Langdale wrote:
> On Mon, 6 Apr 2020 11:52:13 -0600
> John Stebbins <jstebbins at jetheaddev.com> wrote:
> 
> > ---
> >  libavcodec/movtextenc.c | 25 ++++++++++++++++++++++++-
> >  1 file changed, 24 insertions(+), 1 deletion(-)
> > 
> > diff --git a/libavcodec/movtextenc.c b/libavcodec/movtextenc.c
> > index 090536b887..e82393dde7 100644
> > --- a/libavcodec/movtextenc.c
> > +++ b/libavcodec/movtextenc.c
> > @@ -351,6 +351,26 @@ static void mov_text_color_cb(void *priv,
> > unsigned int color, unsigned int color */
> >  }
> >  
> > +static void mov_text_alpha_set(MovTextContext *s, uint8_t alpha)
> > +{
> > +    if (!s->style_attributes_temp ||
> > +        (s->style_attributes_temp->style_color & 0xff) == alpha) {
> > +        // color hasn't changed
> > +        return;
> > +    }
> > +    if (mov_text_style_start(s))
> > +        s->style_attributes_temp->style_color =
> > +                (s->style_attributes_temp->style_color &
> > 0xffffff00)
> > > alpha; +}
> > +
> > +static void mov_text_alpha_cb(void *priv, int alpha, int alpha_id)
> > +{
> > +    MovTextContext *s = priv;
> > +
> > +    if (alpha_id == 1) // primary alpha changes
> > +        mov_text_alpha_set(s, 255 - alpha);
> > +}
> 
> Worth a comment that secondary alpha can't be preserved?

Sure, will do.

> 
> > +
> >  static void mov_text_end_cb(void *priv)
> >  {
> >      // End of text, close any open style record
> > @@ -360,7 +380,7 @@ static void mov_text_end_cb(void *priv)
> >  static void mov_text_dialog(MovTextContext *s, ASSDialog *dialog)
> >  {
> >      ASSStyle * style = ff_ass_style_get(s->ass_ctx, dialog-
> > >style);
> > -    uint8_t    style_flags;
> > +    uint8_t    style_flags, alpha;
> >      uint32_t   color;
> >  
> >      if (style) {
> > @@ -370,6 +390,8 @@ static void mov_text_dialog(MovTextContext *s,
> > ASSDialog *dialog) mov_text_style_set(s, style_flags);
> >          color = BGR_TO_RGB(style->primary_color & 0xffffff) << 8;
> >          mov_text_color_set(s, color);
> > +        alpha = 255 - ((uint32_t)style->primary_color >> 24);
> > +        mov_text_alpha_set(s, alpha);
> >      }
> >  }
> >  
> > @@ -416,6 +438,7 @@ static const ASSCodesCallbacks
> > mov_text_callbacks
> > = { .new_line = mov_text_new_line_cb,
> >      .style    = mov_text_style_cb,
> >      .color    = mov_text_color_cb,
> > +    .alpha    = mov_text_alpha_cb,
> >      .end      = mov_text_end_cb,
> >  };
> >  
> 
> Otherwise LGTM.
> 
> 
> 
> --phil
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list