mbox series

[FFmpeg-devel,0/3] vaapi: Add support for decoding 8bit 4:4:4 content

Message ID 20220723185315.207081-1-philipl@overt.org
Headers show
Series vaapi: Add support for decoding 8bit 4:4:4 content | expand

Message

Philip Langdale July 23, 2022, 6:53 p.m. UTC
Recent Intel hardware is capable of decoding 8bit 4:4:4 HEVC and VP9,
but it uses a packed format that Microsoft wants, and which we don't
currently know about.

This patch series adds support for the AYUV format and declares support
in VAAPI.

Mark has noted that due to there never being any actual Alpha produced
by the hardware, we should use an XYUV format. I've not done so here
because libva does declare an explicit XYUV format, which I assume we
will see used in the future, and I didn't want to fudge the formats so
that they lose the nominal distinction. But I'm happy to change that if
desired.

Philip Langdale (3):
  lavu/pixfmt: Add packed 4:4:4 format
  lavu/hwcontext_vaapi: Map the AYUV format
  lavc/vaapi: Declare support for decoding 8bit 4:4:4 content

 Changelog                        |  1 +
 doc/APIchanges                   |  3 +++
 libavcodec/hevcdec.c             |  3 +++
 libavcodec/vaapi_decode.c        |  2 ++
 libavcodec/version.h             |  2 +-
 libavcodec/vp9.c                 |  5 +++++
 libavutil/hwcontext_vaapi.c      |  1 +
 libavutil/pixdesc.c              | 13 +++++++++++++
 libavutil/pixfmt.h               |  2 ++
 libavutil/version.h              |  4 ++--
 tests/ref/fate/imgutils          |  1 +
 tests/ref/fate/sws-pixdesc-query |  4 ++++
 12 files changed, 38 insertions(+), 3 deletions(-)

Comments

Philip Langdale July 29, 2022, 5:33 p.m. UTC | #1
On Sat, 23 Jul 2022 11:53:12 -0700
Philip Langdale <philipl@overt.org> wrote:

> Recent Intel hardware is capable of decoding 8bit 4:4:4 HEVC and VP9,
> but it uses a packed format that Microsoft wants, and which we don't
> currently know about.
> 
> This patch series adds support for the AYUV format and declares
> support in VAAPI.
> 
> Mark has noted that due to there never being any actual Alpha produced
> by the hardware, we should use an XYUV format. I've not done so here
> because libva does declare an explicit XYUV format, which I assume we
> will see used in the future, and I didn't want to fudge the formats so
> that they lose the nominal distinction. But I'm happy to change that
> if desired.
> 
> Philip Langdale (3):
>   lavu/pixfmt: Add packed 4:4:4 format
>   lavu/hwcontext_vaapi: Map the AYUV format
>   lavc/vaapi: Declare support for decoding 8bit 4:4:4 content
> 
>  Changelog                        |  1 +
>  doc/APIchanges                   |  3 +++
>  libavcodec/hevcdec.c             |  3 +++
>  libavcodec/vaapi_decode.c        |  2 ++
>  libavcodec/version.h             |  2 +-
>  libavcodec/vp9.c                 |  5 +++++
>  libavutil/hwcontext_vaapi.c      |  1 +
>  libavutil/pixdesc.c              | 13 +++++++++++++
>  libavutil/pixfmt.h               |  2 ++
>  libavutil/version.h              |  4 ++--
>  tests/ref/fate/imgutils          |  1 +
>  tests/ref/fate/sws-pixdesc-query |  4 ++++
>  12 files changed, 38 insertions(+), 3 deletions(-)
> 

I will push this in the next few days if I don't get any comments or
objections. Hai Hao confirmed in IRC that the Intel driver does
explicitly set the alpha value to 0xFF so it is correct to treat it
as an alpha value rather than undefined.

Thanks,

--phil
Philip Langdale Aug. 3, 2022, 10:51 p.m. UTC | #2
On Fri, 29 Jul 2022 10:33:59 -0700
Philip Langdale <philipl@overt.org> wrote:

> On Sat, 23 Jul 2022 11:53:12 -0700
> Philip Langdale <philipl@overt.org> wrote:
> 
> > Recent Intel hardware is capable of decoding 8bit 4:4:4 HEVC and
> > VP9, but it uses a packed format that Microsoft wants, and which we
> > don't currently know about.
> > 
> > This patch series adds support for the AYUV format and declares
> > support in VAAPI.
> > 
> > Mark has noted that due to there never being any actual Alpha
> > produced by the hardware, we should use an XYUV format. I've not
> > done so here because libva does declare an explicit XYUV format,
> > which I assume we will see used in the future, and I didn't want to
> > fudge the formats so that they lose the nominal distinction. But
> > I'm happy to change that if desired.
> > 
> > Philip Langdale (3):
> >   lavu/pixfmt: Add packed 4:4:4 format
> >   lavu/hwcontext_vaapi: Map the AYUV format
> >   lavc/vaapi: Declare support for decoding 8bit 4:4:4 content
> > 
> >  Changelog                        |  1 +
> >  doc/APIchanges                   |  3 +++
> >  libavcodec/hevcdec.c             |  3 +++
> >  libavcodec/vaapi_decode.c        |  2 ++
> >  libavcodec/version.h             |  2 +-
> >  libavcodec/vp9.c                 |  5 +++++
> >  libavutil/hwcontext_vaapi.c      |  1 +
> >  libavutil/pixdesc.c              | 13 +++++++++++++
> >  libavutil/pixfmt.h               |  2 ++
> >  libavutil/version.h              |  4 ++--
> >  tests/ref/fate/imgutils          |  1 +
> >  tests/ref/fate/sws-pixdesc-query |  4 ++++
> >  12 files changed, 38 insertions(+), 3 deletions(-)
> >   
> 
> I will push this in the next few days if I don't get any comments or
> objections. Hai Hao confirmed in IRC that the Intel driver does
> explicitly set the alpha value to 0xFF so it is correct to treat it
> as an alpha value rather than undefined.
> 
> Thanks,
> 
> --phil

Pushed.

--phil