[FFmpeg-devel] [PATCH 5/6] avcodec/apng: Add support for blending with GRAY8A pixel format

Donny Yang work at kota.moe
Tue Jun 2 19:46:56 CEST 2015


On 3 June 2015 at 03:38, Paul B Mahol <onemda at gmail.com> wrote:

> Dana 2. 6. 2015. 17:50 osoba "Donny Yang" <work at kota.moe> napisala je:
> >
> > Signed-off-by: Donny Yang <work at kota.moe>
> > ---
> >  libavcodec/pngdec.c | 8 +++++++-
> >  1 file changed, 7 insertions(+), 1 deletion(-)
> >
> > diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
> > index 1f5c433..1667530 100644
> > --- a/libavcodec/pngdec.c
> > +++ b/libavcodec/pngdec.c
> > @@ -891,7 +891,8 @@ static int handle_p_frame_apng(AVCodecContext *avctx,
> PNGDecContext *s,
> >          return AVERROR(ENOMEM);
> >
> >      if (s->blend_op == APNG_BLEND_OP_OVER &&
> > -        avctx->pix_fmt != AV_PIX_FMT_RGBA) {
> > +        avctx->pix_fmt != AV_PIX_FMT_RGBA &&
> > +        avctx->pix_fmt != AV_PIX_FMT_GRAY8A) {
> >          avpriv_request_sample(avctx, "Blending with pixel format %s",
> >                                av_get_pix_fmt_name(avctx->pix_fmt));
> >          return AVERROR_PATCHWELCOME;
> > @@ -935,6 +936,11 @@ static int handle_p_frame_apng(AVCodecContext
> *avctx, PNGDecContext *s,
> >                      foreground_alpha = foreground[3];
> >                      background_alpha = background[3];
> >                      break;
> > +
> > +                case AV_PIX_FMT_GRAY8A:
> > +                    foreground_alpha = foreground[1];
> > +                    background_alpha = background[1];
> > +                    break;
> >                  }
> >
> >                  if (foreground_alpha == 0)
> > --
> > 2.4.0
>
> Is there actual sample?
>

I have not actually found an apng sample using gray8a, but this is
implemented through reading the spec and firefox's source and understanding
that gray8a is treated the same as rgba, just with less bytes.



More information about the ffmpeg-devel mailing list