diff mbox series

[FFmpeg-devel,2/3] libswscale: add output support for AV_PIX_FMT_GBRAPF32

Message ID 20200429030235.37074-3-mindmark@gmail.com
State Superseded
Headers show
Series libswscale: initial input/output support for AV_PIX_FMT_GBRAPF32 | expand

Checks

Context Check Description
andriy/default pending
andriy/make_warn warning New warnings during build
andriy/make success Make finished
andriy/make_fate success Make fate finished

Commit Message

Mark Reid April 29, 2020, 3:02 a.m. UTC
From: Mark Reid <mindmark@gmail.com>

---
 libswscale/output.c                      | 82 ++++++++++++++++++++++++
 libswscale/slice.c                       | 28 ++++----
 libswscale/swscale_unscaled.c            | 33 ++++++++++
 libswscale/utils.c                       |  8 +--
 tests/ref/fate/filter-pixdesc-gbrapf32be |  1 +
 tests/ref/fate/filter-pixdesc-gbrapf32le |  1 +
 tests/ref/fate/filter-pixdesc-gbrpf32be  |  1 +
 tests/ref/fate/filter-pixdesc-gbrpf32le  |  1 +
 tests/ref/fate/filter-pixfmts-copy       |  4 ++
 tests/ref/fate/filter-pixfmts-crop       |  4 ++
 tests/ref/fate/filter-pixfmts-field      |  4 ++
 tests/ref/fate/filter-pixfmts-fieldorder |  4 ++
 tests/ref/fate/filter-pixfmts-hflip      |  4 ++
 tests/ref/fate/filter-pixfmts-il         |  4 ++
 tests/ref/fate/filter-pixfmts-null       |  4 ++
 tests/ref/fate/filter-pixfmts-scale      |  4 ++
 tests/ref/fate/filter-pixfmts-transpose  |  4 ++
 tests/ref/fate/filter-pixfmts-vflip      |  4 ++
 18 files changed, 180 insertions(+), 15 deletions(-)
 create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32be
 create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32le
 create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32be
 create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32le

Comments

Michael Niedermayer April 29, 2020, 9:19 p.m. UTC | #1
On Tue, Apr 28, 2020 at 08:02:34PM -0700, mindmark@gmail.com wrote:
> From: Mark Reid <mindmark@gmail.com>
> 
> ---
>  libswscale/output.c                      | 82 ++++++++++++++++++++++++
>  libswscale/slice.c                       | 28 ++++----
>  libswscale/swscale_unscaled.c            | 33 ++++++++++
>  libswscale/utils.c                       |  8 +--
>  tests/ref/fate/filter-pixdesc-gbrapf32be |  1 +
>  tests/ref/fate/filter-pixdesc-gbrapf32le |  1 +
>  tests/ref/fate/filter-pixdesc-gbrpf32be  |  1 +
>  tests/ref/fate/filter-pixdesc-gbrpf32le  |  1 +
>  tests/ref/fate/filter-pixfmts-copy       |  4 ++
>  tests/ref/fate/filter-pixfmts-crop       |  4 ++
>  tests/ref/fate/filter-pixfmts-field      |  4 ++
>  tests/ref/fate/filter-pixfmts-fieldorder |  4 ++
>  tests/ref/fate/filter-pixfmts-hflip      |  4 ++
>  tests/ref/fate/filter-pixfmts-il         |  4 ++
>  tests/ref/fate/filter-pixfmts-null       |  4 ++
>  tests/ref/fate/filter-pixfmts-scale      |  4 ++
>  tests/ref/fate/filter-pixfmts-transpose  |  4 ++
>  tests/ref/fate/filter-pixfmts-vflip      |  4 ++
>  18 files changed, 180 insertions(+), 15 deletions(-)
>  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32be
>  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32le
>  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32be
>  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32le

Fails on qemu MIPS

--- src/tests/ref/fate/filter-pixfmts-scale     2020-04-29 22:18:07.326122866 +0200
+++ tests/data/fate/filter-pixfmts-scale        2020-04-29 23:06:16.167950113 +0200
@@ -25,8 +25,8 @@
 gbrap12le           bb1ba1c157717db3dd612a76d38a018e
 gbrap16be           c72b935a6e57a8e1c37bff08c2db55b1
 gbrap16le           13eb0e62b1ac9c1c86c81521eaefab5f
-gbrapf32be          e6abe67df7fdd5f5dc5db7d852e50954
-gbrapf32le          4d3043b206f7053f7d8d5672f430d680
+gbrapf32be          982d646dc5b2dc718c65fa2a439828f5
+gbrapf32le          f1ffa56441e29aab5e1fd982337bb8ac
 gbrp                dc3387f925f972c61aae7eb23cdc19f0
 gbrp10be            0277d4c3a8498d75e2783fb81379e481
 gbrp10le            f3d70f8ab845c3c9b8f7452e4a6e285a
Test filter-pixfmts-scale failed. Look at tests/data/fate/filter-pixfmts-scale.err for details.
src/tests/Makefile:254: recipe for target 'fate-filter-pixfmts-scale' failed
make: *** [fate-filter-pixfmts-scale] Error 1
TEST    h264-conformance-frext-pph422i5_panasonic_a
TEST    h264-conformance-frext-pph422i6_panasonic_a
TEST    h264-conformance-frext-pph422i7_panasonic_a
TEST    h264-conformance-hcbp2_hhi_a
TEST    h264-conformance-hcmp1_hhi_a

I also think for float, tests based on comparission instead of checksums
would allow more use of floats in the computations which would
differ rounding wise between platforms


[...]
Michael Niedermayer April 29, 2020, 9:22 p.m. UTC | #2
On Wed, Apr 29, 2020 at 11:19:56PM +0200, Michael Niedermayer wrote:
> On Tue, Apr 28, 2020 at 08:02:34PM -0700, mindmark@gmail.com wrote:
> > From: Mark Reid <mindmark@gmail.com>
> > 
> > ---
> >  libswscale/output.c                      | 82 ++++++++++++++++++++++++
> >  libswscale/slice.c                       | 28 ++++----
> >  libswscale/swscale_unscaled.c            | 33 ++++++++++
> >  libswscale/utils.c                       |  8 +--
> >  tests/ref/fate/filter-pixdesc-gbrapf32be |  1 +
> >  tests/ref/fate/filter-pixdesc-gbrapf32le |  1 +
> >  tests/ref/fate/filter-pixdesc-gbrpf32be  |  1 +
> >  tests/ref/fate/filter-pixdesc-gbrpf32le  |  1 +
> >  tests/ref/fate/filter-pixfmts-copy       |  4 ++
> >  tests/ref/fate/filter-pixfmts-crop       |  4 ++
> >  tests/ref/fate/filter-pixfmts-field      |  4 ++
> >  tests/ref/fate/filter-pixfmts-fieldorder |  4 ++
> >  tests/ref/fate/filter-pixfmts-hflip      |  4 ++
> >  tests/ref/fate/filter-pixfmts-il         |  4 ++
> >  tests/ref/fate/filter-pixfmts-null       |  4 ++
> >  tests/ref/fate/filter-pixfmts-scale      |  4 ++
> >  tests/ref/fate/filter-pixfmts-transpose  |  4 ++
> >  tests/ref/fate/filter-pixfmts-vflip      |  4 ++
> >  18 files changed, 180 insertions(+), 15 deletions(-)
> >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32be
> >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32le
> >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32be
> >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32le
> 
> Fails on qemu MIPS
> 
> --- src/tests/ref/fate/filter-pixfmts-scale     2020-04-29 22:18:07.326122866 +0200
> +++ tests/data/fate/filter-pixfmts-scale        2020-04-29 23:06:16.167950113 +0200
> @@ -25,8 +25,8 @@
>  gbrap12le           bb1ba1c157717db3dd612a76d38a018e
>  gbrap16be           c72b935a6e57a8e1c37bff08c2db55b1
>  gbrap16le           13eb0e62b1ac9c1c86c81521eaefab5f
> -gbrapf32be          e6abe67df7fdd5f5dc5db7d852e50954
> -gbrapf32le          4d3043b206f7053f7d8d5672f430d680
> +gbrapf32be          982d646dc5b2dc718c65fa2a439828f5
> +gbrapf32le          f1ffa56441e29aab5e1fd982337bb8ac
>  gbrp                dc3387f925f972c61aae7eb23cdc19f0
>  gbrp10be            0277d4c3a8498d75e2783fb81379e481
>  gbrp10le            f3d70f8ab845c3c9b8f7452e4a6e285a
> Test filter-pixfmts-scale failed. Look at tests/data/fate/filter-pixfmts-scale.err for details.
> src/tests/Makefile:254: recipe for target 'fate-filter-pixfmts-scale' failed
> make: *** [fate-filter-pixfmts-scale] Error 1
> TEST    h264-conformance-frext-pph422i5_panasonic_a
> TEST    h264-conformance-frext-pph422i6_panasonic_a
> TEST    h264-conformance-frext-pph422i7_panasonic_a
> TEST    h264-conformance-hcbp2_hhi_a
> TEST    h264-conformance-hcmp1_hhi_a
> 
> I also think for float, tests based on comparission instead of checksums
> would allow more use of floats in the computations which would
> differ rounding wise between platforms

and the 2 sws patches would otherwise be ok if they didnt break any tests

Thanks

[...]
Mark Reid April 29, 2020, 9:49 p.m. UTC | #3
On Wed, Apr 29, 2020 at 2:22 PM Michael Niedermayer <michael@niedermayer.cc>
wrote:

> On Wed, Apr 29, 2020 at 11:19:56PM +0200, Michael Niedermayer wrote:
> > On Tue, Apr 28, 2020 at 08:02:34PM -0700, mindmark@gmail.com wrote:
> > > From: Mark Reid <mindmark@gmail.com>
> > >
> > > ---
> > >  libswscale/output.c                      | 82 ++++++++++++++++++++++++
> > >  libswscale/slice.c                       | 28 ++++----
> > >  libswscale/swscale_unscaled.c            | 33 ++++++++++
> > >  libswscale/utils.c                       |  8 +--
> > >  tests/ref/fate/filter-pixdesc-gbrapf32be |  1 +
> > >  tests/ref/fate/filter-pixdesc-gbrapf32le |  1 +
> > >  tests/ref/fate/filter-pixdesc-gbrpf32be  |  1 +
> > >  tests/ref/fate/filter-pixdesc-gbrpf32le  |  1 +
> > >  tests/ref/fate/filter-pixfmts-copy       |  4 ++
> > >  tests/ref/fate/filter-pixfmts-crop       |  4 ++
> > >  tests/ref/fate/filter-pixfmts-field      |  4 ++
> > >  tests/ref/fate/filter-pixfmts-fieldorder |  4 ++
> > >  tests/ref/fate/filter-pixfmts-hflip      |  4 ++
> > >  tests/ref/fate/filter-pixfmts-il         |  4 ++
> > >  tests/ref/fate/filter-pixfmts-null       |  4 ++
> > >  tests/ref/fate/filter-pixfmts-scale      |  4 ++
> > >  tests/ref/fate/filter-pixfmts-transpose  |  4 ++
> > >  tests/ref/fate/filter-pixfmts-vflip      |  4 ++
> > >  18 files changed, 180 insertions(+), 15 deletions(-)
> > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32be
> > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32le
> > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32be
> > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32le
> >
> > Fails on qemu MIPS
> >
> > --- src/tests/ref/fate/filter-pixfmts-scale     2020-04-29
> 22:18:07.326122866 +0200
> > +++ tests/data/fate/filter-pixfmts-scale        2020-04-29
> 23:06:16.167950113 +0200
> > @@ -25,8 +25,8 @@
> >  gbrap12le           bb1ba1c157717db3dd612a76d38a018e
> >  gbrap16be           c72b935a6e57a8e1c37bff08c2db55b1
> >  gbrap16le           13eb0e62b1ac9c1c86c81521eaefab5f
> > -gbrapf32be          e6abe67df7fdd5f5dc5db7d852e50954
> > -gbrapf32le          4d3043b206f7053f7d8d5672f430d680
> > +gbrapf32be          982d646dc5b2dc718c65fa2a439828f5
> > +gbrapf32le          f1ffa56441e29aab5e1fd982337bb8ac
> >  gbrp                dc3387f925f972c61aae7eb23cdc19f0
> >  gbrp10be            0277d4c3a8498d75e2783fb81379e481
> >  gbrp10le            f3d70f8ab845c3c9b8f7452e4a6e285a
> > Test filter-pixfmts-scale failed. Look at
> tests/data/fate/filter-pixfmts-scale.err for details.
> > src/tests/Makefile:254: recipe for target 'fate-filter-pixfmts-scale'
> failed
> > make: *** [fate-filter-pixfmts-scale] Error 1
> > TEST    h264-conformance-frext-pph422i5_panasonic_a
> > TEST    h264-conformance-frext-pph422i6_panasonic_a
> > TEST    h264-conformance-frext-pph422i7_panasonic_a
> > TEST    h264-conformance-hcbp2_hhi_a
> > TEST    h264-conformance-hcmp1_hhi_a
> >
> > I also think for float, tests based on comparission instead of checksums
> > would allow more use of floats in the computations which would
> > differ rounding wise between platforms
>
> and the 2 sws patches would otherwise be ok if they didnt break any tests
>
>
I was worried about the test with float, and tried to limiting the number
of float operations, but guess it's not enough.
I haven't looked yet, but is there anywhere you could point me to doing
a comparison based test?
I'll break the exr part out into a separate patch for later, and get the
sws stuff working first.

thanks for the review!


> Thanks
>
> [...]
>
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Freedom in capitalist society always remains about the same as it was in
> ancient Greek republics: Freedom for slave owners. -- Vladimir Lenin
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
Michael Niedermayer April 30, 2020, 2:59 p.m. UTC | #4
On Wed, Apr 29, 2020 at 02:49:35PM -0700, Mark Reid wrote:
> On Wed, Apr 29, 2020 at 2:22 PM Michael Niedermayer <michael@niedermayer.cc>
> wrote:
> 
> > On Wed, Apr 29, 2020 at 11:19:56PM +0200, Michael Niedermayer wrote:
> > > On Tue, Apr 28, 2020 at 08:02:34PM -0700, mindmark@gmail.com wrote:
> > > > From: Mark Reid <mindmark@gmail.com>
> > > >
> > > > ---
> > > >  libswscale/output.c                      | 82 ++++++++++++++++++++++++
> > > >  libswscale/slice.c                       | 28 ++++----
> > > >  libswscale/swscale_unscaled.c            | 33 ++++++++++
> > > >  libswscale/utils.c                       |  8 +--
> > > >  tests/ref/fate/filter-pixdesc-gbrapf32be |  1 +
> > > >  tests/ref/fate/filter-pixdesc-gbrapf32le |  1 +
> > > >  tests/ref/fate/filter-pixdesc-gbrpf32be  |  1 +
> > > >  tests/ref/fate/filter-pixdesc-gbrpf32le  |  1 +
> > > >  tests/ref/fate/filter-pixfmts-copy       |  4 ++
> > > >  tests/ref/fate/filter-pixfmts-crop       |  4 ++
> > > >  tests/ref/fate/filter-pixfmts-field      |  4 ++
> > > >  tests/ref/fate/filter-pixfmts-fieldorder |  4 ++
> > > >  tests/ref/fate/filter-pixfmts-hflip      |  4 ++
> > > >  tests/ref/fate/filter-pixfmts-il         |  4 ++
> > > >  tests/ref/fate/filter-pixfmts-null       |  4 ++
> > > >  tests/ref/fate/filter-pixfmts-scale      |  4 ++
> > > >  tests/ref/fate/filter-pixfmts-transpose  |  4 ++
> > > >  tests/ref/fate/filter-pixfmts-vflip      |  4 ++
> > > >  18 files changed, 180 insertions(+), 15 deletions(-)
> > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32be
> > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32le
> > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32be
> > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32le
> > >
> > > Fails on qemu MIPS
> > >
> > > --- src/tests/ref/fate/filter-pixfmts-scale     2020-04-29
> > 22:18:07.326122866 +0200
> > > +++ tests/data/fate/filter-pixfmts-scale        2020-04-29
> > 23:06:16.167950113 +0200
> > > @@ -25,8 +25,8 @@
> > >  gbrap12le           bb1ba1c157717db3dd612a76d38a018e
> > >  gbrap16be           c72b935a6e57a8e1c37bff08c2db55b1
> > >  gbrap16le           13eb0e62b1ac9c1c86c81521eaefab5f
> > > -gbrapf32be          e6abe67df7fdd5f5dc5db7d852e50954
> > > -gbrapf32le          4d3043b206f7053f7d8d5672f430d680
> > > +gbrapf32be          982d646dc5b2dc718c65fa2a439828f5
> > > +gbrapf32le          f1ffa56441e29aab5e1fd982337bb8ac
> > >  gbrp                dc3387f925f972c61aae7eb23cdc19f0
> > >  gbrp10be            0277d4c3a8498d75e2783fb81379e481
> > >  gbrp10le            f3d70f8ab845c3c9b8f7452e4a6e285a
> > > Test filter-pixfmts-scale failed. Look at
> > tests/data/fate/filter-pixfmts-scale.err for details.
> > > src/tests/Makefile:254: recipe for target 'fate-filter-pixfmts-scale'
> > failed
> > > make: *** [fate-filter-pixfmts-scale] Error 1
> > > TEST    h264-conformance-frext-pph422i5_panasonic_a
> > > TEST    h264-conformance-frext-pph422i6_panasonic_a
> > > TEST    h264-conformance-frext-pph422i7_panasonic_a
> > > TEST    h264-conformance-hcbp2_hhi_a
> > > TEST    h264-conformance-hcmp1_hhi_a
> > >
> > > I also think for float, tests based on comparission instead of checksums
> > > would allow more use of floats in the computations which would
> > > differ rounding wise between platforms
> >
> > and the 2 sws patches would otherwise be ok if they didnt break any tests
> >
> >
> I was worried about the test with float, and tried to limiting the number
> of float operations, but guess it's not enough.

> I haven't looked yet, but is there anywhere you could point me to doing
> a comparison based test?

anything float based needs a comparission or luck ...
audio tests using "oneoff/stddev" in fate for example
checkasm also checks some float code with comparissions

not sure how to best integrate this here ...

thx

[...]
Mark Reid April 30, 2020, 6:46 p.m. UTC | #5
On Thu, Apr 30, 2020 at 7:59 AM Michael Niedermayer <michael@niedermayer.cc>
wrote:

> On Wed, Apr 29, 2020 at 02:49:35PM -0700, Mark Reid wrote:
> > On Wed, Apr 29, 2020 at 2:22 PM Michael Niedermayer
> <michael@niedermayer.cc>
> > wrote:
> >
> > > On Wed, Apr 29, 2020 at 11:19:56PM +0200, Michael Niedermayer wrote:
> > > > On Tue, Apr 28, 2020 at 08:02:34PM -0700, mindmark@gmail.com wrote:
> > > > > From: Mark Reid <mindmark@gmail.com>
> > > > >
> > > > > ---
> > > > >  libswscale/output.c                      | 82
> ++++++++++++++++++++++++
> > > > >  libswscale/slice.c                       | 28 ++++----
> > > > >  libswscale/swscale_unscaled.c            | 33 ++++++++++
> > > > >  libswscale/utils.c                       |  8 +--
> > > > >  tests/ref/fate/filter-pixdesc-gbrapf32be |  1 +
> > > > >  tests/ref/fate/filter-pixdesc-gbrapf32le |  1 +
> > > > >  tests/ref/fate/filter-pixdesc-gbrpf32be  |  1 +
> > > > >  tests/ref/fate/filter-pixdesc-gbrpf32le  |  1 +
> > > > >  tests/ref/fate/filter-pixfmts-copy       |  4 ++
> > > > >  tests/ref/fate/filter-pixfmts-crop       |  4 ++
> > > > >  tests/ref/fate/filter-pixfmts-field      |  4 ++
> > > > >  tests/ref/fate/filter-pixfmts-fieldorder |  4 ++
> > > > >  tests/ref/fate/filter-pixfmts-hflip      |  4 ++
> > > > >  tests/ref/fate/filter-pixfmts-il         |  4 ++
> > > > >  tests/ref/fate/filter-pixfmts-null       |  4 ++
> > > > >  tests/ref/fate/filter-pixfmts-scale      |  4 ++
> > > > >  tests/ref/fate/filter-pixfmts-transpose  |  4 ++
> > > > >  tests/ref/fate/filter-pixfmts-vflip      |  4 ++
> > > > >  18 files changed, 180 insertions(+), 15 deletions(-)
> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32be
> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32le
> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32be
> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32le
> > > >
> > > > Fails on qemu MIPS
> > > >
> > > > --- src/tests/ref/fate/filter-pixfmts-scale     2020-04-29
> > > 22:18:07.326122866 +0200
> > > > +++ tests/data/fate/filter-pixfmts-scale        2020-04-29
> > > 23:06:16.167950113 +0200
> > > > @@ -25,8 +25,8 @@
> > > >  gbrap12le           bb1ba1c157717db3dd612a76d38a018e
> > > >  gbrap16be           c72b935a6e57a8e1c37bff08c2db55b1
> > > >  gbrap16le           13eb0e62b1ac9c1c86c81521eaefab5f
> > > > -gbrapf32be          e6abe67df7fdd5f5dc5db7d852e50954
> > > > -gbrapf32le          4d3043b206f7053f7d8d5672f430d680
> > > > +gbrapf32be          982d646dc5b2dc718c65fa2a439828f5
> > > > +gbrapf32le          f1ffa56441e29aab5e1fd982337bb8ac
> > > >  gbrp                dc3387f925f972c61aae7eb23cdc19f0
> > > >  gbrp10be            0277d4c3a8498d75e2783fb81379e481
> > > >  gbrp10le            f3d70f8ab845c3c9b8f7452e4a6e285a
> > > > Test filter-pixfmts-scale failed. Look at
> > > tests/data/fate/filter-pixfmts-scale.err for details.
> > > > src/tests/Makefile:254: recipe for target 'fate-filter-pixfmts-scale'
> > > failed
> > > > make: *** [fate-filter-pixfmts-scale] Error 1
> > > > TEST    h264-conformance-frext-pph422i5_panasonic_a
> > > > TEST    h264-conformance-frext-pph422i6_panasonic_a
> > > > TEST    h264-conformance-frext-pph422i7_panasonic_a
> > > > TEST    h264-conformance-hcbp2_hhi_a
> > > > TEST    h264-conformance-hcmp1_hhi_a
> > > >
> > > > I also think for float, tests based on comparission instead of
> checksums
> > > > would allow more use of floats in the computations which would
> > > > differ rounding wise between platforms
> > >
> > > and the 2 sws patches would otherwise be ok if they didnt break any
> tests
> > >
> > >
> > I was worried about the test with float, and tried to limiting the number
> > of float operations, but guess it's not enough.
>
> > I haven't looked yet, but is there anywhere you could point me to doing
> > a comparison based test?
>
> anything float based needs a comparission or luck ...
> audio tests using "oneoff/stddev" in fate for example
> checkasm also checks some float code with comparissions
>
> not sure how to best integrate this here ...
>
> thx
>

Thanks! I'll check those out. I came up with some other ideas to try too
that I think might work. Its a tricky problem for sure!


>
> [...]
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> If you drop bombs on a foreign country and kill a hundred thousand
> innocent people, expect your government to call the consequence
> "unprovoked inhuman terrorist attacks" and use it to justify dropping
> more bombs and killing more people. The technology changed, the idea is
> old.
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
Mark Reid May 3, 2020, 9:01 a.m. UTC | #6
On Thu., Apr. 30, 2020, 11:46 a.m. Mark Reid, <mindmark@gmail.com> wrote:

>
>
> On Thu, Apr 30, 2020 at 7:59 AM Michael Niedermayer <michael@niedermayer.cc>
> wrote:
>
>> On Wed, Apr 29, 2020 at 02:49:35PM -0700, Mark Reid wrote:
>> > On Wed, Apr 29, 2020 at 2:22 PM Michael Niedermayer
>> <michael@niedermayer.cc>
>> > wrote:
>> >
>> > > On Wed, Apr 29, 2020 at 11:19:56PM +0200, Michael Niedermayer wrote:
>> > > > On Tue, Apr 28, 2020 at 08:02:34PM -0700, mindmark@gmail.com wrote:
>> > > > > From: Mark Reid <mindmark@gmail.com>
>> > > > >
>> > > > > ---
>> > > > >  libswscale/output.c                      | 82
>> ++++++++++++++++++++++++
>> > > > >  libswscale/slice.c                       | 28 ++++----
>> > > > >  libswscale/swscale_unscaled.c            | 33 ++++++++++
>> > > > >  libswscale/utils.c                       |  8 +--
>> > > > >  tests/ref/fate/filter-pixdesc-gbrapf32be |  1 +
>> > > > >  tests/ref/fate/filter-pixdesc-gbrapf32le |  1 +
>> > > > >  tests/ref/fate/filter-pixdesc-gbrpf32be  |  1 +
>> > > > >  tests/ref/fate/filter-pixdesc-gbrpf32le  |  1 +
>> > > > >  tests/ref/fate/filter-pixfmts-copy       |  4 ++
>> > > > >  tests/ref/fate/filter-pixfmts-crop       |  4 ++
>> > > > >  tests/ref/fate/filter-pixfmts-field      |  4 ++
>> > > > >  tests/ref/fate/filter-pixfmts-fieldorder |  4 ++
>> > > > >  tests/ref/fate/filter-pixfmts-hflip      |  4 ++
>> > > > >  tests/ref/fate/filter-pixfmts-il         |  4 ++
>> > > > >  tests/ref/fate/filter-pixfmts-null       |  4 ++
>> > > > >  tests/ref/fate/filter-pixfmts-scale      |  4 ++
>> > > > >  tests/ref/fate/filter-pixfmts-transpose  |  4 ++
>> > > > >  tests/ref/fate/filter-pixfmts-vflip      |  4 ++
>> > > > >  18 files changed, 180 insertions(+), 15 deletions(-)
>> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32be
>> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32le
>> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32be
>> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32le
>> > > >
>> > > > Fails on qemu MIPS
>> > > >
>> > > > --- src/tests/ref/fate/filter-pixfmts-scale     2020-04-29
>> > > 22:18:07.326122866 +0200
>> > > > +++ tests/data/fate/filter-pixfmts-scale        2020-04-29
>> > > 23:06:16.167950113 +0200
>> > > > @@ -25,8 +25,8 @@
>> > > >  gbrap12le           bb1ba1c157717db3dd612a76d38a018e
>> > > >  gbrap16be           c72b935a6e57a8e1c37bff08c2db55b1
>> > > >  gbrap16le           13eb0e62b1ac9c1c86c81521eaefab5f
>> > > > -gbrapf32be          e6abe67df7fdd5f5dc5db7d852e50954
>> > > > -gbrapf32le          4d3043b206f7053f7d8d5672f430d680
>> > > > +gbrapf32be          982d646dc5b2dc718c65fa2a439828f5
>> > > > +gbrapf32le          f1ffa56441e29aab5e1fd982337bb8ac
>> > > >  gbrp                dc3387f925f972c61aae7eb23cdc19f0
>> > > >  gbrp10be            0277d4c3a8498d75e2783fb81379e481
>> > > >  gbrp10le            f3d70f8ab845c3c9b8f7452e4a6e285a
>> > > > Test filter-pixfmts-scale failed. Look at
>> > > tests/data/fate/filter-pixfmts-scale.err for details.
>> > > > src/tests/Makefile:254: recipe for target
>> 'fate-filter-pixfmts-scale'
>> > > failed
>> > > > make: *** [fate-filter-pixfmts-scale] Error 1
>> > > > TEST    h264-conformance-frext-pph422i5_panasonic_a
>> > > > TEST    h264-conformance-frext-pph422i6_panasonic_a
>> > > > TEST    h264-conformance-frext-pph422i7_panasonic_a
>> > > > TEST    h264-conformance-hcbp2_hhi_a
>> > > > TEST    h264-conformance-hcmp1_hhi_a
>> > > >
>> > > > I also think for float, tests based on comparission instead of
>> checksums
>> > > > would allow more use of floats in the computations which would
>> > > > differ rounding wise between platforms
>> > >
>> > > and the 2 sws patches would otherwise be ok if they didnt break any
>> tests
>> > >
>> > >
>> > I was worried about the test with float, and tried to limiting the
>> number
>> > of float operations, but guess it's not enough.
>>
>> > I haven't looked yet, but is there anywhere you could point me to doing
>> > a comparison based test?
>>
>> anything float based needs a comparission or luck ...
>> audio tests using "oneoff/stddev" in fate for example
>> checkasm also checks some float code with comparissions
>>
>> not sure how to best integrate this here ...
>>
>> thx
>>
>
> Thanks! I'll check those out. I came up with some other ideas to try too
> that I think might work. Its a tricky problem for sure!
>

lt appears the mips test where only failing on the alpha channel formats.
it seems to because of a planefill function I missed implementing.  I've
fixed it and the same test results work both on mips and x86, so I don't
think this is hardware floating point rounding error.


>
>>
>> [...]
>> --
>> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>>
>> If you drop bombs on a foreign country and kill a hundred thousand
>> innocent people, expect your government to call the consequence
>> "unprovoked inhuman terrorist attacks" and use it to justify dropping
>> more bombs and killing more people. The technology changed, the idea is
>> old.
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
>
Carl Eugen Hoyos May 3, 2020, 9:10 a.m. UTC | #7
Am So., 3. Mai 2020 um 11:08 Uhr schrieb Mark Reid <mindmark@gmail.com>:

> lt appears the mips test where only failing on the alpha channel formats.
> it seems to because of a planefill function I missed implementing.  I've
> fixed it and the same test results work both on mips and x86, so I don't
> think this is hardware floating point rounding error.

It sounds very unlikely that you can do a bitexact test to compare the
output of floating point operations.
This could only work if you are using soft-float algorithms but I assume
that there would be  a performance penalty.

Carl Eugen
Michael Niedermayer May 3, 2020, 5:16 p.m. UTC | #8
On Sun, May 03, 2020 at 02:01:21AM -0700, Mark Reid wrote:
> On Thu., Apr. 30, 2020, 11:46 a.m. Mark Reid, <mindmark@gmail.com> wrote:
> 
> >
> >
> > On Thu, Apr 30, 2020 at 7:59 AM Michael Niedermayer <michael@niedermayer.cc>
> > wrote:
> >
> >> On Wed, Apr 29, 2020 at 02:49:35PM -0700, Mark Reid wrote:
> >> > On Wed, Apr 29, 2020 at 2:22 PM Michael Niedermayer
> >> <michael@niedermayer.cc>
> >> > wrote:
> >> >
> >> > > On Wed, Apr 29, 2020 at 11:19:56PM +0200, Michael Niedermayer wrote:
> >> > > > On Tue, Apr 28, 2020 at 08:02:34PM -0700, mindmark@gmail.com wrote:
> >> > > > > From: Mark Reid <mindmark@gmail.com>
> >> > > > >
> >> > > > > ---
> >> > > > >  libswscale/output.c                      | 82
> >> ++++++++++++++++++++++++
> >> > > > >  libswscale/slice.c                       | 28 ++++----
> >> > > > >  libswscale/swscale_unscaled.c            | 33 ++++++++++
> >> > > > >  libswscale/utils.c                       |  8 +--
> >> > > > >  tests/ref/fate/filter-pixdesc-gbrapf32be |  1 +
> >> > > > >  tests/ref/fate/filter-pixdesc-gbrapf32le |  1 +
> >> > > > >  tests/ref/fate/filter-pixdesc-gbrpf32be  |  1 +
> >> > > > >  tests/ref/fate/filter-pixdesc-gbrpf32le  |  1 +
> >> > > > >  tests/ref/fate/filter-pixfmts-copy       |  4 ++
> >> > > > >  tests/ref/fate/filter-pixfmts-crop       |  4 ++
> >> > > > >  tests/ref/fate/filter-pixfmts-field      |  4 ++
> >> > > > >  tests/ref/fate/filter-pixfmts-fieldorder |  4 ++
> >> > > > >  tests/ref/fate/filter-pixfmts-hflip      |  4 ++
> >> > > > >  tests/ref/fate/filter-pixfmts-il         |  4 ++
> >> > > > >  tests/ref/fate/filter-pixfmts-null       |  4 ++
> >> > > > >  tests/ref/fate/filter-pixfmts-scale      |  4 ++
> >> > > > >  tests/ref/fate/filter-pixfmts-transpose  |  4 ++
> >> > > > >  tests/ref/fate/filter-pixfmts-vflip      |  4 ++
> >> > > > >  18 files changed, 180 insertions(+), 15 deletions(-)
> >> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32be
> >> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32le
> >> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32be
> >> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32le
> >> > > >
> >> > > > Fails on qemu MIPS
> >> > > >
> >> > > > --- src/tests/ref/fate/filter-pixfmts-scale     2020-04-29
> >> > > 22:18:07.326122866 +0200
> >> > > > +++ tests/data/fate/filter-pixfmts-scale        2020-04-29
> >> > > 23:06:16.167950113 +0200
> >> > > > @@ -25,8 +25,8 @@
> >> > > >  gbrap12le           bb1ba1c157717db3dd612a76d38a018e
> >> > > >  gbrap16be           c72b935a6e57a8e1c37bff08c2db55b1
> >> > > >  gbrap16le           13eb0e62b1ac9c1c86c81521eaefab5f
> >> > > > -gbrapf32be          e6abe67df7fdd5f5dc5db7d852e50954
> >> > > > -gbrapf32le          4d3043b206f7053f7d8d5672f430d680
> >> > > > +gbrapf32be          982d646dc5b2dc718c65fa2a439828f5
> >> > > > +gbrapf32le          f1ffa56441e29aab5e1fd982337bb8ac
> >> > > >  gbrp                dc3387f925f972c61aae7eb23cdc19f0
> >> > > >  gbrp10be            0277d4c3a8498d75e2783fb81379e481
> >> > > >  gbrp10le            f3d70f8ab845c3c9b8f7452e4a6e285a
> >> > > > Test filter-pixfmts-scale failed. Look at
> >> > > tests/data/fate/filter-pixfmts-scale.err for details.
> >> > > > src/tests/Makefile:254: recipe for target
> >> 'fate-filter-pixfmts-scale'
> >> > > failed
> >> > > > make: *** [fate-filter-pixfmts-scale] Error 1
> >> > > > TEST    h264-conformance-frext-pph422i5_panasonic_a
> >> > > > TEST    h264-conformance-frext-pph422i6_panasonic_a
> >> > > > TEST    h264-conformance-frext-pph422i7_panasonic_a
> >> > > > TEST    h264-conformance-hcbp2_hhi_a
> >> > > > TEST    h264-conformance-hcmp1_hhi_a
> >> > > >
> >> > > > I also think for float, tests based on comparission instead of
> >> checksums
> >> > > > would allow more use of floats in the computations which would
> >> > > > differ rounding wise between platforms
> >> > >
> >> > > and the 2 sws patches would otherwise be ok if they didnt break any
> >> tests
> >> > >
> >> > >
> >> > I was worried about the test with float, and tried to limiting the
> >> number
> >> > of float operations, but guess it's not enough.
> >>
> >> > I haven't looked yet, but is there anywhere you could point me to doing
> >> > a comparison based test?
> >>
> >> anything float based needs a comparission or luck ...
> >> audio tests using "oneoff/stddev" in fate for example
> >> checkasm also checks some float code with comparissions
> >>
> >> not sure how to best integrate this here ...
> >>
> >> thx
> >>
> >
> > Thanks! I'll check those out. I came up with some other ideas to try too
> > that I think might work. Its a tricky problem for sure!
> >
> 
> lt appears the mips test where only failing on the alpha channel formats.
> it seems to because of a planefill function I missed implementing.  I've
> fixed it and the same test results work both on mips and x86, so I don't
> think this is hardware floating point rounding error.

well, if it works, we can try it, 
but what might happen is that once its used on real HW some platform might
not be bitexact to the emulators (which use x86 FPU probably).
If you are ok with looking into such a thing if it happens then i dont see
a problem with trying this path if you prefer

thx

[...]
Mark Reid May 5, 2020, 5:07 p.m. UTC | #9
On Sun, May 3, 2020 at 10:17 AM Michael Niedermayer <michael@niedermayer.cc>
wrote:

> On Sun, May 03, 2020 at 02:01:21AM -0700, Mark Reid wrote:
> > On Thu., Apr. 30, 2020, 11:46 a.m. Mark Reid, <mindmark@gmail.com>
> wrote:
> >
> > >
> > >
> > > On Thu, Apr 30, 2020 at 7:59 AM Michael Niedermayer
> <michael@niedermayer.cc>
> > > wrote:
> > >
> > >> On Wed, Apr 29, 2020 at 02:49:35PM -0700, Mark Reid wrote:
> > >> > On Wed, Apr 29, 2020 at 2:22 PM Michael Niedermayer
> > >> <michael@niedermayer.cc>
> > >> > wrote:
> > >> >
> > >> > > On Wed, Apr 29, 2020 at 11:19:56PM +0200, Michael Niedermayer
> wrote:
> > >> > > > On Tue, Apr 28, 2020 at 08:02:34PM -0700, mindmark@gmail.com
> wrote:
> > >> > > > > From: Mark Reid <mindmark@gmail.com>
> > >> > > > >
> > >> > > > > ---
> > >> > > > >  libswscale/output.c                      | 82
> > >> ++++++++++++++++++++++++
> > >> > > > >  libswscale/slice.c                       | 28 ++++----
> > >> > > > >  libswscale/swscale_unscaled.c            | 33 ++++++++++
> > >> > > > >  libswscale/utils.c                       |  8 +--
> > >> > > > >  tests/ref/fate/filter-pixdesc-gbrapf32be |  1 +
> > >> > > > >  tests/ref/fate/filter-pixdesc-gbrapf32le |  1 +
> > >> > > > >  tests/ref/fate/filter-pixdesc-gbrpf32be  |  1 +
> > >> > > > >  tests/ref/fate/filter-pixdesc-gbrpf32le  |  1 +
> > >> > > > >  tests/ref/fate/filter-pixfmts-copy       |  4 ++
> > >> > > > >  tests/ref/fate/filter-pixfmts-crop       |  4 ++
> > >> > > > >  tests/ref/fate/filter-pixfmts-field      |  4 ++
> > >> > > > >  tests/ref/fate/filter-pixfmts-fieldorder |  4 ++
> > >> > > > >  tests/ref/fate/filter-pixfmts-hflip      |  4 ++
> > >> > > > >  tests/ref/fate/filter-pixfmts-il         |  4 ++
> > >> > > > >  tests/ref/fate/filter-pixfmts-null       |  4 ++
> > >> > > > >  tests/ref/fate/filter-pixfmts-scale      |  4 ++
> > >> > > > >  tests/ref/fate/filter-pixfmts-transpose  |  4 ++
> > >> > > > >  tests/ref/fate/filter-pixfmts-vflip      |  4 ++
> > >> > > > >  18 files changed, 180 insertions(+), 15 deletions(-)
> > >> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32be
> > >> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrapf32le
> > >> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32be
> > >> > > > >  create mode 100644 tests/ref/fate/filter-pixdesc-gbrpf32le
> > >> > > >
> > >> > > > Fails on qemu MIPS
> > >> > > >
> > >> > > > --- src/tests/ref/fate/filter-pixfmts-scale     2020-04-29
> > >> > > 22:18:07.326122866 +0200
> > >> > > > +++ tests/data/fate/filter-pixfmts-scale        2020-04-29
> > >> > > 23:06:16.167950113 +0200
> > >> > > > @@ -25,8 +25,8 @@
> > >> > > >  gbrap12le           bb1ba1c157717db3dd612a76d38a018e
> > >> > > >  gbrap16be           c72b935a6e57a8e1c37bff08c2db55b1
> > >> > > >  gbrap16le           13eb0e62b1ac9c1c86c81521eaefab5f
> > >> > > > -gbrapf32be          e6abe67df7fdd5f5dc5db7d852e50954
> > >> > > > -gbrapf32le          4d3043b206f7053f7d8d5672f430d680
> > >> > > > +gbrapf32be          982d646dc5b2dc718c65fa2a439828f5
> > >> > > > +gbrapf32le          f1ffa56441e29aab5e1fd982337bb8ac
> > >> > > >  gbrp                dc3387f925f972c61aae7eb23cdc19f0
> > >> > > >  gbrp10be            0277d4c3a8498d75e2783fb81379e481
> > >> > > >  gbrp10le            f3d70f8ab845c3c9b8f7452e4a6e285a
> > >> > > > Test filter-pixfmts-scale failed. Look at
> > >> > > tests/data/fate/filter-pixfmts-scale.err for details.
> > >> > > > src/tests/Makefile:254: recipe for target
> > >> 'fate-filter-pixfmts-scale'
> > >> > > failed
> > >> > > > make: *** [fate-filter-pixfmts-scale] Error 1
> > >> > > > TEST    h264-conformance-frext-pph422i5_panasonic_a
> > >> > > > TEST    h264-conformance-frext-pph422i6_panasonic_a
> > >> > > > TEST    h264-conformance-frext-pph422i7_panasonic_a
> > >> > > > TEST    h264-conformance-hcbp2_hhi_a
> > >> > > > TEST    h264-conformance-hcmp1_hhi_a
> > >> > > >
> > >> > > > I also think for float, tests based on comparission instead of
> > >> checksums
> > >> > > > would allow more use of floats in the computations which would
> > >> > > > differ rounding wise between platforms
> > >> > >
> > >> > > and the 2 sws patches would otherwise be ok if they didnt break
> any
> > >> tests
> > >> > >
> > >> > >
> > >> > I was worried about the test with float, and tried to limiting the
> > >> number
> > >> > of float operations, but guess it's not enough.
> > >>
> > >> > I haven't looked yet, but is there anywhere you could point me to
> doing
> > >> > a comparison based test?
> > >>
> > >> anything float based needs a comparission or luck ...
> > >> audio tests using "oneoff/stddev" in fate for example
> > >> checkasm also checks some float code with comparissions
> > >>
> > >> not sure how to best integrate this here ...
> > >>
> > >> thx
> > >>
> > >
> > > Thanks! I'll check those out. I came up with some other ideas to try
> too
> > > that I think might work. Its a tricky problem for sure!
> > >
> >
> > lt appears the mips test where only failing on the alpha channel formats.
> > it seems to because of a planefill function I missed implementing.  I've
> > fixed it and the same test results work both on mips and x86, so I don't
> > think this is hardware floating point rounding error.
>
> well, if it works, we can try it,
> but what might happen is that once its used on real HW some platform might
> not be bitexact to the emulators (which use x86 FPU probably).
> If you are ok with looking into such a thing if it happens then i dont see
> a problem with trying this path if you prefer
>
>
I submitted a version 2 of the patch with the missing planefill function.
I'm not still not sure the best approach to dealing with hardware FPU
rounding errors, but I'm okay changing the tests if anyone reports
the issue happening. The way the format is implemented is pretty much the
same way AV_PIX_FMT_GRAYF32 was doing it and it has had input/output
support for a couple of years.


> thx
>
> [...]
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Nations do behave wisely once they have exhausted all other alternatives.
> -- Abba Eban
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff mbox series

Patch

diff --git a/libswscale/output.c b/libswscale/output.c
index 68f43ffba3..e864e515d0 100644
--- a/libswscale/output.c
+++ b/libswscale/output.c
@@ -2312,6 +2312,82 @@  yuv2gbrp16_full_X_c(SwsContext *c, const int16_t *lumFilter,
     }
 }
 
+static void
+yuv2gbrpf32_full_X_c(SwsContext *c, const int16_t *lumFilter,
+                    const int16_t **lumSrcx, int lumFilterSize,
+                    const int16_t *chrFilter, const int16_t **chrUSrcx,
+                    const int16_t **chrVSrcx, int chrFilterSize,
+                    const int16_t **alpSrcx, uint8_t **dest,
+                    int dstW, int y)
+{
+    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(c->dstFormat);
+    int i;
+    int hasAlpha = (desc->flags & AV_PIX_FMT_FLAG_ALPHA) && alpSrcx;
+    uint32_t **dest32 = (uint32_t**)dest;
+    const int32_t **lumSrc  = (const int32_t**)lumSrcx;
+    const int32_t **chrUSrc = (const int32_t**)chrUSrcx;
+    const int32_t **chrVSrc = (const int32_t**)chrVSrcx;
+    const int32_t **alpSrc  = (const int32_t**)alpSrcx;
+    static const float float_mult = 1.0f / 65535.0f;
+
+    for (i = 0; i < dstW; i++) {
+        int j;
+        int Y = -0x40000000;
+        int U = -(128 << 23);
+        int V = -(128 << 23);
+        int R, G, B, A;
+
+        for (j = 0; j < lumFilterSize; j++)
+            Y += lumSrc[j][i] * (unsigned)lumFilter[j];
+
+        for (j = 0; j < chrFilterSize; j++) {
+            U += chrUSrc[j][i] * (unsigned)chrFilter[j];
+            V += chrVSrc[j][i] * (unsigned)chrFilter[j];
+        }
+
+        Y >>= 14;
+        Y += 0x10000;
+        U >>= 14;
+        V >>= 14;
+
+        if (hasAlpha) {
+            A = -0x40000000;
+
+            for (j = 0; j < lumFilterSize; j++)
+                A += alpSrc[j][i] * (unsigned)lumFilter[j];
+
+            A >>= 1;
+            A += 0x20002000;
+        }
+
+        Y -= c->yuv2rgb_y_offset;
+        Y *= c->yuv2rgb_y_coeff;
+        Y += 1 << 13;
+        R = V * c->yuv2rgb_v2r_coeff;
+        G = V * c->yuv2rgb_v2g_coeff + U * c->yuv2rgb_u2g_coeff;
+        B =                            U * c->yuv2rgb_u2b_coeff;
+
+        R = av_clip_uintp2(Y + R, 30);
+        G = av_clip_uintp2(Y + G, 30);
+        B = av_clip_uintp2(Y + B, 30);
+
+        dest32[0][i] = av_float2int(float_mult * (float)(G >> 14));
+        dest32[1][i] = av_float2int(float_mult * (float)(B >> 14));
+        dest32[2][i] = av_float2int(float_mult * (float)(R >> 14));
+        if (hasAlpha)
+            dest32[3][i] = av_float2int(float_mult * (float)(av_clip_uintp2(A, 30) >> 14));
+    }
+    if ((!isBE(c->dstFormat)) != (!HAVE_BIGENDIAN)) {
+        for (i = 0; i < dstW; i++) {
+            dest32[0][i] = av_bswap32(dest32[0][i]);
+            dest32[1][i] = av_bswap32(dest32[1][i]);
+            dest32[2][i] = av_bswap32(dest32[2][i]);
+            if (hasAlpha)
+                dest32[3][i] = av_bswap32(dest32[3][i]);
+        }
+    }
+}
+
 static void
 yuv2ya8_1_c(SwsContext *c, const int16_t *buf0,
             const int16_t *ubuf[2], const int16_t *vbuf[2],
@@ -2716,6 +2792,12 @@  av_cold void ff_sws_init_output_funcs(SwsContext *c,
         case AV_PIX_FMT_GBRAP16LE:
             *yuv2anyX = yuv2gbrp16_full_X_c;
             break;
+        case AV_PIX_FMT_GBRPF32BE:
+        case AV_PIX_FMT_GBRPF32LE:
+        case AV_PIX_FMT_GBRAPF32BE:
+        case AV_PIX_FMT_GBRAPF32LE:
+            *yuv2anyX = yuv2gbrpf32_full_X_c;
+            break;
         }
         if (!*yuv2packedX && !*yuv2anyX)
             goto YUV_PACKED;
diff --git a/libswscale/slice.c b/libswscale/slice.c
index db4fa874ff..83b2bba443 100644
--- a/libswscale/slice.c
+++ b/libswscale/slice.c
@@ -189,23 +189,26 @@  int ff_init_slice_from_src(SwsSlice * s, uint8_t *src[4], int stride[4], int src
     return 0;
 }
 
-static void fill_ones(SwsSlice *s, int n, int is16bit)
+static void fill_ones(SwsSlice *s, int n, int bpc)
 {
-    int i;
+    int i, j, k, size, end;
+
     for (i = 0; i < 4; ++i) {
-        int j;
-        int size = s->plane[i].available_lines;
+        size = s->plane[i].available_lines;
         for (j = 0; j < size; ++j) {
-            int k;
-            int end = is16bit ? n>>1: n;
-            // fill also one extra element
-            end += 1;
-            if (is16bit)
+            if (bpc == 16) {
+                end = (n>>1) + 1;
                 for (k = 0; k < end; ++k)
                     ((int32_t*)(s->plane[i].line[j]))[k] = 1<<18;
-            else
+            } else if (bpc == 32) {
+                end = (n>>2) + 1;
+                for (k = 0; k < end; ++k)
+                    ((int64_t*)(s->plane[i].line[j]))[k] = 1<<34;
+            } else {
+                end = n + 1;
                 for (k = 0; k < end; ++k)
                     ((int16_t*)(s->plane[i].line[j]))[k] = 1<<14;
+            }
         }
     }
 }
@@ -272,6 +275,9 @@  int ff_init_filters(SwsContext * c)
     if (c->dstBpc == 16)
         dst_stride <<= 1;
 
+    if (c->dstBpc == 32)
+        dst_stride <<= 2;
+
     num_ydesc = need_lum_conv ? 2 : 1;
     num_cdesc = need_chr_conv ? 2 : 1;
 
@@ -302,7 +308,7 @@  int ff_init_filters(SwsContext * c)
     res = alloc_lines(&c->slice[i], dst_stride, c->dstW);
     if (res < 0) goto cleanup;
 
-    fill_ones(&c->slice[i], dst_stride>>1, c->dstBpc == 16);
+    fill_ones(&c->slice[i], dst_stride>>1, c->dstBpc);
 
     // vertical scaler output
     ++i;
diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c
index 67440cdb4a..5fb572b51a 100644
--- a/libswscale/swscale_unscaled.c
+++ b/libswscale/swscale_unscaled.c
@@ -491,6 +491,34 @@  static int bswap_16bpc(SwsContext *c, const uint8_t *src[],
     return srcSliceH;
 }
 
+static int bswap_32bpc(SwsContext *c, const uint8_t *src[],
+                              int srcStride[], int srcSliceY, int srcSliceH,
+                              uint8_t *dst[], int dstStride[])
+{
+    int i, j, p;
+
+    for (p = 0; p < 4; p++) {
+        int srcstr = srcStride[p] / 4;
+        int dststr = dstStride[p] / 4;
+        uint32_t       *dstPtr =       (uint32_t *) dst[p];
+        const uint32_t *srcPtr = (const uint32_t *) src[p];
+        int min_stride         = FFMIN(FFABS(srcstr), FFABS(dststr));
+        if(!dstPtr || !srcPtr)
+            continue;
+        dstPtr += (srcSliceY >> c->chrDstVSubSample) * dststr;
+        for (i = 0; i < (srcSliceH >> c->chrDstVSubSample); i++) {
+            for (j = 0; j < min_stride; j++) {
+                dstPtr[j] = av_bswap32(srcPtr[j]);
+            }
+            srcPtr += srcstr;
+            dstPtr += dststr;
+        }
+    }
+
+    return srcSliceH;
+}
+
+
 static int palToRgbWrapper(SwsContext *c, const uint8_t *src[], int srcStride[],
                            int srcSliceY, int srcSliceH, uint8_t *dst[],
                            int dstStride[])
@@ -2077,6 +2105,11 @@  void ff_get_unscaled_swscale(SwsContext *c)
         IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV444P16))
         c->swscale = bswap_16bpc;
 
+    /* bswap 32 bits per pixel/component formats */
+    if (IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRPF32) ||
+        IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRAPF32))
+        c->swscale = bswap_32bpc;
+
     if (usePal(srcFormat) && isByteRGB(dstFormat))
         c->swscale = palToRgbWrapper;
 
diff --git a/libswscale/utils.c b/libswscale/utils.c
index 193efdd881..15c0a19afa 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -236,10 +236,10 @@  static const FormatEntry format_entries[] = {
     [AV_PIX_FMT_GBRP14BE]    = { 1, 1 },
     [AV_PIX_FMT_GBRP16LE]    = { 1, 1 },
     [AV_PIX_FMT_GBRP16BE]    = { 1, 1 },
-    [AV_PIX_FMT_GBRPF32LE]   = { 1, 0 },
-    [AV_PIX_FMT_GBRPF32BE]   = { 1, 0 },
-    [AV_PIX_FMT_GBRAPF32LE]  = { 1, 0 },
-    [AV_PIX_FMT_GBRAPF32BE]  = { 1, 0 },
+    [AV_PIX_FMT_GBRPF32LE]   = { 1, 1 },
+    [AV_PIX_FMT_GBRPF32BE]   = { 1, 1 },
+    [AV_PIX_FMT_GBRAPF32LE]  = { 1, 1 },
+    [AV_PIX_FMT_GBRAPF32BE]  = { 1, 1 },
     [AV_PIX_FMT_GBRAP]       = { 1, 1 },
     [AV_PIX_FMT_GBRAP16LE]   = { 1, 1 },
     [AV_PIX_FMT_GBRAP16BE]   = { 1, 1 },
diff --git a/tests/ref/fate/filter-pixdesc-gbrapf32be b/tests/ref/fate/filter-pixdesc-gbrapf32be
new file mode 100644
index 0000000000..017f266828
--- /dev/null
+++ b/tests/ref/fate/filter-pixdesc-gbrapf32be
@@ -0,0 +1 @@ 
+pixdesc-gbrapf32be  4e476b8f81ebe574e85e58708190bba6
diff --git a/tests/ref/fate/filter-pixdesc-gbrapf32le b/tests/ref/fate/filter-pixdesc-gbrapf32le
new file mode 100644
index 0000000000..825f2021ba
--- /dev/null
+++ b/tests/ref/fate/filter-pixdesc-gbrapf32le
@@ -0,0 +1 @@ 
+pixdesc-gbrapf32le  096aab22bcf8c3cf6ee19c70e037ca2e
diff --git a/tests/ref/fate/filter-pixdesc-gbrpf32be b/tests/ref/fate/filter-pixdesc-gbrpf32be
new file mode 100644
index 0000000000..71033771c1
--- /dev/null
+++ b/tests/ref/fate/filter-pixdesc-gbrpf32be
@@ -0,0 +1 @@ 
+pixdesc-gbrpf32be   3ee0b82f5aaea48ca3c01f4294505d73
diff --git a/tests/ref/fate/filter-pixdesc-gbrpf32le b/tests/ref/fate/filter-pixdesc-gbrpf32le
new file mode 100644
index 0000000000..1715415999
--- /dev/null
+++ b/tests/ref/fate/filter-pixdesc-gbrpf32le
@@ -0,0 +1 @@ 
+pixdesc-gbrpf32le   0e6b20215ac9b475e917c7bb4cbee349
diff --git a/tests/ref/fate/filter-pixfmts-copy b/tests/ref/fate/filter-pixfmts-copy
index d19314bae9..dbf9ede156 100644
--- a/tests/ref/fate/filter-pixfmts-copy
+++ b/tests/ref/fate/filter-pixfmts-copy
@@ -25,6 +25,8 @@  gbrap12be           0c4c1f8af361571265ca259d5f70f026
 gbrap12le           5f1d8c663d4c28863e687192433b34a4
 gbrap16be           e4edca4361d643794034e5aa9ef290b1
 gbrap16le           9a95b389d2bf556179e8f4b27fb550ab
+gbrapf32be          7f84fdbe911aa1982b3dc72d47c23544
+gbrapf32le          0a73b48c0fd3cc1c92dc37ed7290b706
 gbrp                5fbc319e30110d19d539f5b274eddb6d
 gbrp10be            703a17591a2a5c236675c5101c349bcc
 gbrp10le            ee014153f55c011918df5b2394815780
@@ -36,6 +38,8 @@  gbrp16be            7b6764a504c853b09f5c7d0b2223c5a4
 gbrp16le            fb9323a5bd060282bec7bfd7d38dc230
 gbrp9be             a4dc6f6f9bb051de2dc348b592ad4282
 gbrp9le             699da3a3b324f3fd001a56aee9683384
+gbrpf32be           ae33c2d738af01ae66a5d2b08a7a60b7
+gbrpf32le           4e3305c619337beeeacc5e6b2f42c793
 gray                188590b1231afd231ea910815aef2b25
 gray10be            d486558ecd2e27afc17930be861f0e4c
 gray10le            917d687103b2adcca7132bfc070ca54a
diff --git a/tests/ref/fate/filter-pixfmts-crop b/tests/ref/fate/filter-pixfmts-crop
index ab89d06142..28075f4205 100644
--- a/tests/ref/fate/filter-pixfmts-crop
+++ b/tests/ref/fate/filter-pixfmts-crop
@@ -25,6 +25,8 @@  gbrap12be           c9769d18733cdc2664d8b9af09a03f6d
 gbrap12le           3f80453c1ac6c5d1b2febf3ef141b476
 gbrap16be           21c98d0d7e7de2a93f9f095e5bb5c227
 gbrap16le           ea9a96870c1b742dd9f065c5db568184
+gbrapf32be          0edb7e727f113236a69499acb7f8deed
+gbrapf32le          938e12133f3e83af8e7dae25e0436176
 gbrp                ec671f573c2105072ab68a1933c58fee
 gbrp10be            6f0130a41f01e58593d3840446dd94b7
 gbrp10le            9c152b7dfb7ad7bc477518d97316d04f
@@ -36,6 +38,8 @@  gbrp16be            59e4c27ee33520e23dbceafbec27aa9b
 gbrp16le            0768a2462783829f63ed0bfd53d01222
 gbrp9be             4af43999e5e9742992b6550ea5ad9b23
 gbrp9le             b4cbfa7878706a14295f09212e41f7fe
+gbrpf32be           4f06588a3de6ed0f30436f814eda0909
+gbrpf32le           b2a9df783d8c2156c5aafc561989918d
 gray                0d70b54b4b888ec4dbd89713620ac1ee
 gray10be            18ed76cab145ab9058cc353fcec6d3c4
 gray10le            fd83f7489880160783ddb125615b4638
diff --git a/tests/ref/fate/filter-pixfmts-field b/tests/ref/fate/filter-pixfmts-field
index 994026dd7c..c1a965f02d 100644
--- a/tests/ref/fate/filter-pixfmts-field
+++ b/tests/ref/fate/filter-pixfmts-field
@@ -25,6 +25,8 @@  gbrap12be           e7f471132628b1c034199cc109b84bc2
 gbrap12le           886207e5aa379a0312485b94e5fd5edd
 gbrap16be           eaa0158f27ebc40cde9e3d6eef1e2ba1
 gbrap16le           6cf68992d4fcac2aa025d1014b669d24
+gbrapf32be          59bc246ff72abdfd24e75b721b2bb0a4
+gbrapf32le          d4a0e151b68306ae90d1ecf18155fae1
 gbrp                838025a3062f7f31e99196ce66961ad7
 gbrp10be            f63c2555ea19fc78b00fd5b3e2b48e8c
 gbrp10le            be64c374ab318235d912372e99a0516a
@@ -36,6 +38,8 @@  gbrp16be            020eff1626415ea726c55b23162ce59a
 gbrp16le            0ab77b498d4a39905515b6e1f0329ed2
 gbrp9be             170da3a8644cbea61c3caeadc45354c5
 gbrp9le             da5d80e6f12cabaa7081bb85d3b7fd30
+gbrpf32be           cd5b0edd510652a0bcfd7e36935e3cb0
+gbrpf32le           9d42fc5331376b5307268498a06613ce
 gray                57fd8e6e00f6be8752726005974cce1b
 gray10be            437713f3d081238cddb738e106e5a27d
 gray10le            c749b80049b152f4ba3e66a72c0c5acc
diff --git a/tests/ref/fate/filter-pixfmts-fieldorder b/tests/ref/fate/filter-pixfmts-fieldorder
index 3d3eef3f3e..6ad3874fce 100644
--- a/tests/ref/fate/filter-pixfmts-fieldorder
+++ b/tests/ref/fate/filter-pixfmts-fieldorder
@@ -25,6 +25,8 @@  gbrap12be           302b353dff696ec9fd0d85a0cc14802b
 gbrap12le           ae2d6db2c9c825f06d92389de21263d2
 gbrap16be           52c10d8046d123dfc4a478276906467c
 gbrap16le           2317737b8f5140add27d121de8f5ba95
+gbrapf32be          f71162b1f65d308d91bf84420e68f568
+gbrapf32le          d060f68e7bba2e1a88627e533d2bd55f
 gbrp                506dea2fe492e985a396d1b11ccd8db3
 gbrp10be            55bbfe2d472780dcbadf3027778caa0e
 gbrp10le            13a39077ab1b2c3b49afd3e250b84a77
@@ -36,6 +38,8 @@  gbrp16be            f82e4bda468275f51becf70f3880be52
 gbrp16le            c7813a905f94aabb2bcade79c9b7e39e
 gbrp9be             b8d294d4bc81ceef1fb529e917c02e48
 gbrp9le             0d42cc9e222d806c33172781b45cb3e3
+gbrpf32be           cef1384ac5c95cf4b3ea2e49133dbef0
+gbrpf32le           c053b8bf8314196099b1e2e1d0617b75
 gray                d96e0f1c73d3f0b9506d691b5cd36c73
 gray10be            c26c73de96b630f1207ff589b6553ebd
 gray10le            16e4db1d611ec3fa5c9fd8fbdbf1ffcc
diff --git a/tests/ref/fate/filter-pixfmts-hflip b/tests/ref/fate/filter-pixfmts-hflip
index 87120747c7..570b69188c 100644
--- a/tests/ref/fate/filter-pixfmts-hflip
+++ b/tests/ref/fate/filter-pixfmts-hflip
@@ -25,6 +25,8 @@  gbrap12be           ffe9aa4cbcc42f71757efe18826764ac
 gbrap12le           88a85c1b3c5e19e299fdd209b73ac1ba
 gbrap16be           3117e84b258433a7efb9288bbb8815d4
 gbrap16le           3ad08cf8b49d8eb31a1b356ec4b7b88b
+gbrapf32be          11e3dee65d66a5b7fecfdce48d5382a8
+gbrapf32le          4f641daa1f21b0c8ac5629d3849ca912
 gbrp                0ecfeca171ba3a1a2ff4e92f572b71cf
 gbrp10be            774398c2f81757a536c094f16cfc541a
 gbrp10le            e9a6434d691be541f789f850963da181
@@ -36,6 +38,8 @@  gbrp16be            46cf9473646a4b9dbcb05661ade658ec
 gbrp16le            6ce6093b24d09c0edcd55b2d6fec89a0
 gbrp9be             174de037c2a9f2b6fb4d9444ae0ff82f
 gbrp9le             ba7c2631fb2967aa909c66509bd243fe
+gbrpf32be           a53fc24a298bf419051fb57c63cc4cef
+gbrpf32le           b44dae0881043398bfd704a944094737
 gray                8bd4ece1dbf89b20ee785e0515356e07
 gray10be            160dd03e30d33379de92c70ee52c01fd
 gray10le            6baac1da6be3789409b67cd506afe7da
diff --git a/tests/ref/fate/filter-pixfmts-il b/tests/ref/fate/filter-pixfmts-il
index 7f1c339de4..40014bd5ca 100644
--- a/tests/ref/fate/filter-pixfmts-il
+++ b/tests/ref/fate/filter-pixfmts-il
@@ -25,6 +25,8 @@  gbrap12be           48609d6b61ff6313939fa2d9c3ebb6d9
 gbrap12le           e3b5342c8e47820f2de7e2dd61872312
 gbrap16be           696c84c8b009c7320cad7f3847bb35da
 gbrap16le           9bacb81fbbe9cdfd04d71eb55a9719d2
+gbrapf32be          b2998416637c2431cd79f63a8e54cc85
+gbrapf32le          9cac54ad2664f89f6f036a198788be6d
 gbrp                dc06edb62e70024a216c8e303b79b328
 gbrp10be            321e7f061d8b9b5801221b6cf3c99666
 gbrp10le            799ed3afca01076439a0b6785b3dc4bb
@@ -36,6 +38,8 @@  gbrp16be            c8c95027703c680ed8f8f91c725db40a
 gbrp16le            c95c9d7c2b19826b73ff1811d9fe6bdb
 gbrp9be             f029d87fa642f4261160471ad27fd53f
 gbrp9le             b310d3cf37f7b41d706155993f8f0584
+gbrpf32be           83722ee41b4397e19bb075ab305147b5
+gbrpf32le           82210a8f9e8708968fa13cf8cf64afe4
 gray                52ae18648161ac43144f5c9cd2127786
 gray10be            8400dec0eefb172849b785d35fc55674
 gray10le            b7d6e49e8d1291f2b0a57d55e9478ef1
diff --git a/tests/ref/fate/filter-pixfmts-null b/tests/ref/fate/filter-pixfmts-null
index d19314bae9..dbf9ede156 100644
--- a/tests/ref/fate/filter-pixfmts-null
+++ b/tests/ref/fate/filter-pixfmts-null
@@ -25,6 +25,8 @@  gbrap12be           0c4c1f8af361571265ca259d5f70f026
 gbrap12le           5f1d8c663d4c28863e687192433b34a4
 gbrap16be           e4edca4361d643794034e5aa9ef290b1
 gbrap16le           9a95b389d2bf556179e8f4b27fb550ab
+gbrapf32be          7f84fdbe911aa1982b3dc72d47c23544
+gbrapf32le          0a73b48c0fd3cc1c92dc37ed7290b706
 gbrp                5fbc319e30110d19d539f5b274eddb6d
 gbrp10be            703a17591a2a5c236675c5101c349bcc
 gbrp10le            ee014153f55c011918df5b2394815780
@@ -36,6 +38,8 @@  gbrp16be            7b6764a504c853b09f5c7d0b2223c5a4
 gbrp16le            fb9323a5bd060282bec7bfd7d38dc230
 gbrp9be             a4dc6f6f9bb051de2dc348b592ad4282
 gbrp9le             699da3a3b324f3fd001a56aee9683384
+gbrpf32be           ae33c2d738af01ae66a5d2b08a7a60b7
+gbrpf32le           4e3305c619337beeeacc5e6b2f42c793
 gray                188590b1231afd231ea910815aef2b25
 gray10be            d486558ecd2e27afc17930be861f0e4c
 gray10le            917d687103b2adcca7132bfc070ca54a
diff --git a/tests/ref/fate/filter-pixfmts-scale b/tests/ref/fate/filter-pixfmts-scale
index 89d3f58eb6..21528f1dc5 100644
--- a/tests/ref/fate/filter-pixfmts-scale
+++ b/tests/ref/fate/filter-pixfmts-scale
@@ -25,6 +25,8 @@  gbrap12be           1d9b57766ba9c2192403f43967cb9af0
 gbrap12le           bb1ba1c157717db3dd612a76d38a018e
 gbrap16be           c72b935a6e57a8e1c37bff08c2db55b1
 gbrap16le           13eb0e62b1ac9c1c86c81521eaefab5f
+gbrapf32be          e6abe67df7fdd5f5dc5db7d852e50954
+gbrapf32le          4d3043b206f7053f7d8d5672f430d680
 gbrp                dc3387f925f972c61aae7eb23cdc19f0
 gbrp10be            0277d4c3a8498d75e2783fb81379e481
 gbrp10le            f3d70f8ab845c3c9b8f7452e4a6e285a
@@ -36,6 +38,8 @@  gbrp16be            5fc826cfabebfc1442cb793c4b6303e2
 gbrp16le            1b3e0b63d47a3e1b6b20931316883bf2
 gbrp9be             d9c88968001e1452ff31fbc8d16b18a0
 gbrp9le             2ccfed0816bf6bd4bb3a5b7591d9603a
+gbrpf32be           4614d32e4417f80e0adcc1bdcf6cde42
+gbrpf32le           1366ee77e5559672260bbe51040e28b2
 gray                221201cc7cfc4964eacd8b3e426fd276
 gray10be            9452756d0b37f4f5c7cae7635e22d747
 gray10le            37fd2e1ec6b66410212d39a342e864df
diff --git a/tests/ref/fate/filter-pixfmts-transpose b/tests/ref/fate/filter-pixfmts-transpose
index e4a170f722..ddecc40d88 100644
--- a/tests/ref/fate/filter-pixfmts-transpose
+++ b/tests/ref/fate/filter-pixfmts-transpose
@@ -25,6 +25,8 @@  gbrap12be           1518c9a565d1ba1a45dd369acc1aa75e
 gbrap12le           714fe318af81a46f83655c6e7e13351e
 gbrap16be           39d488528aacff466aac7539c9b948a8
 gbrap16le           5426ac9457289927bfe2ec03038a8780
+gbrapf32be          f35a9e10bf5953d0b6acd1d3a000e0e8
+gbrapf32le          6e7e90bea957eab3c417c51b4be7f434
 gbrp                7b4b6a2f1cdc51455b25515c3ecea944
 gbrp10be            d7401725699b2ddf954caa16a0878a1e
 gbrp10le            6036711969eae1979be6358f688bd9c8
@@ -36,6 +38,8 @@  gbrp16be            0d003b88d4f446ae9ba12cab1cbb359a
 gbrp16le            a1c09038fa4636c9843ab8dd2b7601ea
 gbrp9be             df381b4b27be25d172fa556434478807
 gbrp9le             a5301e978f68b29bfc613b2462ec4888
+gbrpf32be           b90d6189e71afd6ec1f379489884cc8e
+gbrpf32le           48dee2c9cee8ac6582492fd1c7acb183
 gray                c5f8bc6636fd15dbc57deb4bba1e7379
 gray10be            48b421da79c195fd91dffb8fca79a8a2
 gray10le            7774e3296916b896afa46f626334a280
diff --git a/tests/ref/fate/filter-pixfmts-vflip b/tests/ref/fate/filter-pixfmts-vflip
index 2522c840f3..6be6fc68fa 100644
--- a/tests/ref/fate/filter-pixfmts-vflip
+++ b/tests/ref/fate/filter-pixfmts-vflip
@@ -25,6 +25,8 @@  gbrap12be           16a3d105ba852a9fa23ea5232db51b48
 gbrap12le           6ef8a3ac4129ec23c34aec14ac41f249
 gbrap16be           70b020b6b9e1896b72f890de3570ffda
 gbrap16le           e0cf341cdbaf1f5c40016f181bc9d7d4
+gbrapf32be          f7cbc3bb2100109dbf12d547b7fbaf34
+gbrapf32le          5cd7d298664c238b084e1a8384e8cf8c
 gbrp                413b0f6ea51588d4be5f0c76d43d8796
 gbrp10be            d02bd50db83213667808f5bacefe667c
 gbrp10le            2d4a5ebc773ffc3d857a6ef24afbe10e
@@ -36,6 +38,8 @@  gbrp16be            3fef87fe67bf1fd0e2f5056dc0db2ef4
 gbrp16le            f3b2b76fe707f77eb1376640759f5168
 gbrp9be             99c694dd47d12ae48fc8f47a0c410333
 gbrp9le             26e103a4ab99fb3f58667df490997a36
+gbrpf32be           3eaa2d475754c2b4ae3c59dbdb7ccd84
+gbrpf32le           0267e215c3d11ae22414c3e29e665896
 gray                41811422d5819ed69389357294384c10
 gray10be            52710b3ab3ccf6101d28109f58cd48c4
 gray10le            9c432a163f0cfe9ee2a4b72ae8a7c307