Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH 01/11] avformat/nut: Add GBR(A)PF16/32LE/BE
@ 2025-03-24 17:39 Michael Niedermayer
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 02/11] avcodec/raw: " Michael Niedermayer
                   ` (9 more replies)
  0 siblings, 10 replies; 12+ messages in thread
From: Michael Niedermayer @ 2025-03-24 17:39 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavformat/nut.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/libavformat/nut.c b/libavformat/nut.c
index 9692336ece6..f3174358139 100644
--- a/libavformat/nut.c
+++ b/libavformat/nut.c
@@ -178,6 +178,10 @@ const AVCodecTag ff_nut_video_tags[] = {
     { AV_CODEC_ID_RAWVIDEO,         MKTAG(14,    0, '3', 'G') },
     { AV_CODEC_ID_RAWVIDEO,         MKTAG('G', '3',   0,  16) },
     { AV_CODEC_ID_RAWVIDEO,         MKTAG(16,    0, '3', 'G') },
+    { AV_CODEC_ID_RAWVIDEO,         MKTAG('G', '3',   0,  17) },
+    { AV_CODEC_ID_RAWVIDEO,         MKTAG(17 ,  0 , '3', 'G') },
+    { AV_CODEC_ID_RAWVIDEO,         MKTAG('G', '3',   0,  33) },
+    { AV_CODEC_ID_RAWVIDEO,         MKTAG(33 ,  0 , '3', 'G') },
 
     { AV_CODEC_ID_RAWVIDEO,         MKTAG('G', '4',   0,   8) },
 
@@ -189,6 +193,10 @@ const AVCodecTag ff_nut_video_tags[] = {
     { AV_CODEC_ID_RAWVIDEO,         MKTAG(14 , 00 , '4', 'G') },
     { AV_CODEC_ID_RAWVIDEO,         MKTAG('G', '4', 00 , 16 ) },
     { AV_CODEC_ID_RAWVIDEO,         MKTAG(16 , 00 , '4', 'G') },
+    { AV_CODEC_ID_RAWVIDEO,         MKTAG('G', '4',   0,  17) },
+    { AV_CODEC_ID_RAWVIDEO,         MKTAG(17 ,  0 , '4', 'G') },
+    { AV_CODEC_ID_RAWVIDEO,         MKTAG('G', '4',   0,  33) },
+    { AV_CODEC_ID_RAWVIDEO,         MKTAG(33 ,  0 , '4', 'G') },
 
     { AV_CODEC_ID_RAWVIDEO,         MKTAG('X', 'Y', 'Z' , 36 ) },
     { AV_CODEC_ID_RAWVIDEO,         MKTAG(36 , 'Z' , 'Y', 'X') },
-- 
2.48.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 02/11] avcodec/raw: Add GBR(A)PF16/32LE/BE
  2025-03-24 17:39 [FFmpeg-devel] [PATCH 01/11] avformat/nut: Add GBR(A)PF16/32LE/BE Michael Niedermayer
@ 2025-03-24 17:39 ` Michael Niedermayer
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 03/11] avcodec/ffv1enc: remap mode 2 is for floats only Michael Niedermayer
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Michael Niedermayer @ 2025-03-24 17:39 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/raw.c                         | 8 ++++++++
 tests/ref/fate/filter-pixdesc-gbrapf32be | 2 +-
 tests/ref/fate/filter-pixdesc-gbrapf32le | 2 +-
 tests/ref/fate/filter-pixdesc-gbrpf32be  | 2 +-
 tests/ref/fate/filter-pixdesc-gbrpf32le  | 2 +-
 tests/ref/fate/filter-pixfmts-copy       | 8 ++++----
 tests/ref/fate/filter-pixfmts-crop       | 8 ++++----
 tests/ref/fate/filter-pixfmts-field      | 8 ++++----
 tests/ref/fate/filter-pixfmts-fieldorder | 8 ++++----
 tests/ref/fate/filter-pixfmts-hflip      | 8 ++++----
 tests/ref/fate/filter-pixfmts-il         | 8 ++++----
 tests/ref/fate/filter-pixfmts-null       | 8 ++++----
 tests/ref/fate/filter-pixfmts-scale      | 8 ++++----
 tests/ref/fate/filter-pixfmts-transpose  | 8 ++++----
 tests/ref/fate/filter-pixfmts-vflip      | 8 ++++----
 15 files changed, 52 insertions(+), 44 deletions(-)

diff --git a/libavcodec/raw.c b/libavcodec/raw.c
index 578794cb7ac..7a332c0fb73 100644
--- a/libavcodec/raw.c
+++ b/libavcodec/raw.c
@@ -204,6 +204,10 @@ static const PixelFormatTag raw_pix_fmt_tags[] = {
     { AV_PIX_FMT_GBRP14BE,     MKTAG(14 , 00 , '3', 'G') },
     { AV_PIX_FMT_GBRP16LE,     MKTAG('G', '3', 00 , 16 ) },
     { AV_PIX_FMT_GBRP16BE,     MKTAG(16 , 00 , '3', 'G') },
+    { AV_PIX_FMT_GBRPF16LE,    MKTAG('G', '3', 00 , 17 ) },
+    { AV_PIX_FMT_GBRPF16BE,    MKTAG(17 , 00 , '3', 'G') },
+    { AV_PIX_FMT_GBRPF32LE,    MKTAG('G', '3', 00 , 33 ) },
+    { AV_PIX_FMT_GBRPF32BE,    MKTAG(33 , 00 , '3', 'G') },
 
     { AV_PIX_FMT_GBRAP,        MKTAG('G', '4', 00 ,  8 ) },
     { AV_PIX_FMT_GBRAP10LE,    MKTAG('G', '4', 00 , 10 ) },
@@ -214,6 +218,10 @@ static const PixelFormatTag raw_pix_fmt_tags[] = {
     { AV_PIX_FMT_GBRAP14BE,    MKTAG(14 , 00 , '4', 'G') },
     { AV_PIX_FMT_GBRAP16LE,    MKTAG('G', '4', 00 , 16 ) },
     { AV_PIX_FMT_GBRAP16BE,    MKTAG(16 , 00 , '4', 'G') },
+    { AV_PIX_FMT_GBRAPF16LE,   MKTAG('G', '4', 00 , 17 ) },
+    { AV_PIX_FMT_GBRAPF16BE,   MKTAG(17 , 00 , '4', 'G') },
+    { AV_PIX_FMT_GBRAPF32LE,   MKTAG('G', '4', 00 , 33 ) },
+    { AV_PIX_FMT_GBRAPF32BE,   MKTAG(33 , 00 , '4', 'G') },
 
     { AV_PIX_FMT_XYZ12LE,      MKTAG('X', 'Y', 'Z' , 36 ) },
     { AV_PIX_FMT_XYZ12BE,      MKTAG(36 , 'Z' , 'Y', 'X') },
diff --git a/tests/ref/fate/filter-pixdesc-gbrapf32be b/tests/ref/fate/filter-pixdesc-gbrapf32be
index 97d613ad095..e09ec7c7419 100644
--- a/tests/ref/fate/filter-pixdesc-gbrapf32be
+++ b/tests/ref/fate/filter-pixdesc-gbrapf32be
@@ -1 +1 @@
-pixdesc-gbrapf32be  a4fd00f17d746849f30597c496923107
+pixdesc-gbrapf32be  a88b5d1a90acd76b369b1b3341c3ea5d
diff --git a/tests/ref/fate/filter-pixdesc-gbrapf32le b/tests/ref/fate/filter-pixdesc-gbrapf32le
index ef59306625d..faf906581d1 100644
--- a/tests/ref/fate/filter-pixdesc-gbrapf32le
+++ b/tests/ref/fate/filter-pixdesc-gbrapf32le
@@ -1 +1 @@
-pixdesc-gbrapf32le  26af38a6975e2ce425e9fec477e6b2ba
+pixdesc-gbrapf32le  3bd5733de5a14091ecacd97ee1025d83
diff --git a/tests/ref/fate/filter-pixdesc-gbrpf32be b/tests/ref/fate/filter-pixdesc-gbrpf32be
index 71033771c19..780e97845d8 100644
--- a/tests/ref/fate/filter-pixdesc-gbrpf32be
+++ b/tests/ref/fate/filter-pixdesc-gbrpf32be
@@ -1 +1 @@
-pixdesc-gbrpf32be   3ee0b82f5aaea48ca3c01f4294505d73
+pixdesc-gbrpf32be   3077e1f7769c11b5692bcde24727f9ba
diff --git a/tests/ref/fate/filter-pixdesc-gbrpf32le b/tests/ref/fate/filter-pixdesc-gbrpf32le
index 17154159999..b45a1c59de8 100644
--- a/tests/ref/fate/filter-pixdesc-gbrpf32le
+++ b/tests/ref/fate/filter-pixdesc-gbrpf32le
@@ -1 +1 @@
-pixdesc-gbrpf32le   0e6b20215ac9b475e917c7bb4cbee349
+pixdesc-gbrpf32le   ee4a7181e5a651060e38c89da9883be3
diff --git a/tests/ref/fate/filter-pixfmts-copy b/tests/ref/fate/filter-pixfmts-copy
index 1ab94d515e8..cbedb4d8945 100644
--- a/tests/ref/fate/filter-pixfmts-copy
+++ b/tests/ref/fate/filter-pixfmts-copy
@@ -29,8 +29,8 @@ gbrap14be           25694ddb34dceabec5143a7677c8072d
 gbrap14le           0eba343fc6f713d310db3d67f7d5a06b
 gbrap16be           e4edca4361d643794034e5aa9ef290b1
 gbrap16le           9a95b389d2bf556179e8f4b27fb550ab
-gbrapf32be          d908f0950d3735863fe6f0793fa24f76
-gbrapf32le          f6eab5a145cffc52c055e07c26d3995f
+gbrapf32be          92a003379ae8c3175a00f8bfca333cd7
+gbrapf32le          1ac76b9418062a95e5c62da3ba1c8c5a
 gbrp                5fbc319e30110d19d539f5b274eddb6d
 gbrp10be            703a17591a2a5c236675c5101c349bcc
 gbrp10le            ee014153f55c011918df5b2394815780
@@ -42,8 +42,8 @@ gbrp16be            7b6764a504c853b09f5c7d0b2223c5a4
 gbrp16le            fb9323a5bd060282bec7bfd7d38dc230
 gbrp9be             a4dc6f6f9bb051de2dc348b592ad4282
 gbrp9le             699da3a3b324f3fd001a56aee9683384
-gbrpf32be           ae33c2d738af01ae66a5d2b08a7a60b7
-gbrpf32le           4e3305c619337beeeacc5e6b2f42c793
+gbrpf32be           19da92dc82ac3f74c1fc5ca215ba97f4
+gbrpf32le           f3aff67024db002d8d985c775ec8c235
 gray                188590b1231afd231ea910815aef2b25
 gray10be            0804e8620fcd78599e3df33cb83652aa
 gray10le            705e51fb783ae8167498d09748e44bd2
diff --git a/tests/ref/fate/filter-pixfmts-crop b/tests/ref/fate/filter-pixfmts-crop
index 300c64ad9ae..d4bffda7dc8 100644
--- a/tests/ref/fate/filter-pixfmts-crop
+++ b/tests/ref/fate/filter-pixfmts-crop
@@ -29,8 +29,8 @@ gbrap14be           11238485c208bd064730fd4469869e98
 gbrap14le           59f0ae68812ac2c0b0ac04def7161ab7
 gbrap16be           21c98d0d7e7de2a93f9f095e5bb5c227
 gbrap16le           ea9a96870c1b742dd9f065c5db568184
-gbrapf32be          ec06b3b168dc74048100f29a4412da90
-gbrapf32le          57ee44f9ca41e7b5e6410cdd105442d6
+gbrapf32be          8924a0ad6e661fc582a8f9016cc5d170
+gbrapf32le          34875869f093bddf94f14c8542eca9f0
 gbrp                ec671f573c2105072ab68a1933c58fee
 gbrp10be            6f0130a41f01e58593d3840446dd94b7
 gbrp10le            9c152b7dfb7ad7bc477518d97316d04f
@@ -42,8 +42,8 @@ gbrp16be            59e4c27ee33520e23dbceafbec27aa9b
 gbrp16le            0768a2462783829f63ed0bfd53d01222
 gbrp9be             4af43999e5e9742992b6550ea5ad9b23
 gbrp9le             b4cbfa7878706a14295f09212e41f7fe
-gbrpf32be           4f06588a3de6ed0f30436f814eda0909
-gbrpf32le           b2a9df783d8c2156c5aafc561989918d
+gbrpf32be           43c9a7f2e5f287a3d5bd799c7ec2ad68
+gbrpf32le           b930a6185e3ffb23785d57ab1f519bc3
 gray                0d70b54b4b888ec4dbd89713620ac1ee
 gray10be            a97f60928c553b9d0e8e44b69ec2970d
 gray10le            bff59b6df8751b5e958d0cd8deb3c31a
diff --git a/tests/ref/fate/filter-pixfmts-field b/tests/ref/fate/filter-pixfmts-field
index a94543a60f0..146ceab9c72 100644
--- a/tests/ref/fate/filter-pixfmts-field
+++ b/tests/ref/fate/filter-pixfmts-field
@@ -29,8 +29,8 @@ gbrap14be           6c56b7c47dbc7707e09d93f06eb34624
 gbrap14le           e6077974ee36f906987319364b2a72a8
 gbrap16be           eaa0158f27ebc40cde9e3d6eef1e2ba1
 gbrap16le           6cf68992d4fcac2aa025d1014b669d24
-gbrapf32be          37c627796dee55ca6f4e7ca965460680
-gbrapf32le          3ff02eb8465b921c09182ec5cfda434a
+gbrapf32be          a7641fe98bf55b4ea7cb9e65ef6c6da5
+gbrapf32le          401239fe76ef69d945f1d2c8efd116e9
 gbrp                838025a3062f7f31e99196ce66961ad7
 gbrp10be            f63c2555ea19fc78b00fd5b3e2b48e8c
 gbrp10le            be64c374ab318235d912372e99a0516a
@@ -42,8 +42,8 @@ gbrp16be            020eff1626415ea726c55b23162ce59a
 gbrp16le            0ab77b498d4a39905515b6e1f0329ed2
 gbrp9be             170da3a8644cbea61c3caeadc45354c5
 gbrp9le             da5d80e6f12cabaa7081bb85d3b7fd30
-gbrpf32be           cd5b0edd510652a0bcfd7e36935e3cb0
-gbrpf32le           9d42fc5331376b5307268498a06613ce
+gbrpf32be           74d5ff86a9b3677d7cdcda64d9b94405
+gbrpf32le           64722b723252d359858136cb00079636
 gray                57fd8e6e00f6be8752726005974cce1b
 gray10be            083a7931fea847a4d8b23d38f989a836
 gray10le            1b08650e7c44f8517dd3f37044930729
diff --git a/tests/ref/fate/filter-pixfmts-fieldorder b/tests/ref/fate/filter-pixfmts-fieldorder
index 318474b7d75..63c82907efb 100644
--- a/tests/ref/fate/filter-pixfmts-fieldorder
+++ b/tests/ref/fate/filter-pixfmts-fieldorder
@@ -29,8 +29,8 @@ gbrap14be           1d28d4af2b00d08a17278ca0a316f24a
 gbrap14le           07bc3e6abb0ee23876c9605fd81e8a83
 gbrap16be           52c10d8046d123dfc4a478276906467c
 gbrap16le           2317737b8f5140add27d121de8f5ba95
-gbrapf32be          6781751ef9d444d150cb0a1e1cefe141
-gbrapf32le          f2ffc9e45dbc9919d516304abb514306
+gbrapf32be          f1655202b2e504283b99ccadc98ece17
+gbrapf32le          f1c3079716d6ce7b629511ec1fcb98ad
 gbrp                506dea2fe492e985a396d1b11ccd8db3
 gbrp10be            55bbfe2d472780dcbadf3027778caa0e
 gbrp10le            13a39077ab1b2c3b49afd3e250b84a77
@@ -42,8 +42,8 @@ gbrp16be            f82e4bda468275f51becf70f3880be52
 gbrp16le            c7813a905f94aabb2bcade79c9b7e39e
 gbrp9be             b8d294d4bc81ceef1fb529e917c02e48
 gbrp9le             0d42cc9e222d806c33172781b45cb3e3
-gbrpf32be           cef1384ac5c95cf4b3ea2e49133dbef0
-gbrpf32le           c053b8bf8314196099b1e2e1d0617b75
+gbrpf32be           25c9e7d97b22642f751c4a9809fd33f8
+gbrpf32le           070140993c538b996890b983c0a010be
 gray                d96e0f1c73d3f0b9506d691b5cd36c73
 gray10be            3ccbda141912b7cace81b2145005032e
 gray10le            e27718bf9caa54b7b3313c15cec88f20
diff --git a/tests/ref/fate/filter-pixfmts-hflip b/tests/ref/fate/filter-pixfmts-hflip
index 56f347531ca..0ece4ea1343 100644
--- a/tests/ref/fate/filter-pixfmts-hflip
+++ b/tests/ref/fate/filter-pixfmts-hflip
@@ -29,8 +29,8 @@ gbrap14be           e4aedeb3aadedbe93cc415db0a65c1a2
 gbrap14le           d6183b778f950a1255e27efe658127e4
 gbrap16be           3117e84b258433a7efb9288bbb8815d4
 gbrap16le           3ad08cf8b49d8eb31a1b356ec4b7b88b
-gbrapf32be          d82e48eb62c1e2d2ce5d614aeda38a99
-gbrapf32le          323259d76d5c5350091704813f22bf57
+gbrapf32be          aa3a3883f58904ef544e37ecd0b3bbd7
+gbrapf32le          7312701852fbceaeb53efce523bc75c0
 gbrp                0ecfeca171ba3a1a2ff4e92f572b71cf
 gbrp10be            774398c2f81757a536c094f16cfc541a
 gbrp10le            e9a6434d691be541f789f850963da181
@@ -42,8 +42,8 @@ gbrp16be            46cf9473646a4b9dbcb05661ade658ec
 gbrp16le            6ce6093b24d09c0edcd55b2d6fec89a0
 gbrp9be             174de037c2a9f2b6fb4d9444ae0ff82f
 gbrp9le             ba7c2631fb2967aa909c66509bd243fe
-gbrpf32be           a53fc24a298bf419051fb57c63cc4cef
-gbrpf32le           b44dae0881043398bfd704a944094737
+gbrpf32be           b1b4a0fca025f4eb48e63b6c777e8761
+gbrpf32le           cbb650b78c412b10a1070840fefd6d59
 gray                8bd4ece1dbf89b20ee785e0515356e07
 gray10be            1daf5c1face37d8724a65e905941dcb8
 gray10le            07c5139f97db9d49729f2ea6e77dcedf
diff --git a/tests/ref/fate/filter-pixfmts-il b/tests/ref/fate/filter-pixfmts-il
index 9135b46c020..ce707f9c8b4 100644
--- a/tests/ref/fate/filter-pixfmts-il
+++ b/tests/ref/fate/filter-pixfmts-il
@@ -29,8 +29,8 @@ gbrap14be           213d656dd43193eac7711cdcc91ed2d1
 gbrap14le           350ae0639e73f20efa867cfba5dd7afd
 gbrap16be           696c84c8b009c7320cad7f3847bb35da
 gbrap16le           9bacb81fbbe9cdfd04d71eb55a9719d2
-gbrapf32be          5995aba2bf66254f63d5413cd9860353
-gbrapf32le          aab9c11ec483fe28f7156bfeb9f015a3
+gbrapf32be          483bdace7aabfb2fa4c54e244346aa7b
+gbrapf32le          a606da084e300d0e827a4d24ce18567b
 gbrp                dc06edb62e70024a216c8e303b79b328
 gbrp10be            321e7f061d8b9b5801221b6cf3c99666
 gbrp10le            799ed3afca01076439a0b6785b3dc4bb
@@ -42,8 +42,8 @@ gbrp16be            c8c95027703c680ed8f8f91c725db40a
 gbrp16le            c95c9d7c2b19826b73ff1811d9fe6bdb
 gbrp9be             f029d87fa642f4261160471ad27fd53f
 gbrp9le             b310d3cf37f7b41d706155993f8f0584
-gbrpf32be           83722ee41b4397e19bb075ab305147b5
-gbrpf32le           82210a8f9e8708968fa13cf8cf64afe4
+gbrpf32be           eb2f89bcc2c01b980e827e787ac9441a
+gbrpf32le           6514fcf1804c375f4d560d4f08dbacb7
 gray                52ae18648161ac43144f5c9cd2127786
 gray10be            b2c861887056fe39d2fe90379d80e535
 gray10le            f7022c60ad8cb9a9d5f556ad7c7fadaf
diff --git a/tests/ref/fate/filter-pixfmts-null b/tests/ref/fate/filter-pixfmts-null
index 1ab94d515e8..cbedb4d8945 100644
--- a/tests/ref/fate/filter-pixfmts-null
+++ b/tests/ref/fate/filter-pixfmts-null
@@ -29,8 +29,8 @@ gbrap14be           25694ddb34dceabec5143a7677c8072d
 gbrap14le           0eba343fc6f713d310db3d67f7d5a06b
 gbrap16be           e4edca4361d643794034e5aa9ef290b1
 gbrap16le           9a95b389d2bf556179e8f4b27fb550ab
-gbrapf32be          d908f0950d3735863fe6f0793fa24f76
-gbrapf32le          f6eab5a145cffc52c055e07c26d3995f
+gbrapf32be          92a003379ae8c3175a00f8bfca333cd7
+gbrapf32le          1ac76b9418062a95e5c62da3ba1c8c5a
 gbrp                5fbc319e30110d19d539f5b274eddb6d
 gbrp10be            703a17591a2a5c236675c5101c349bcc
 gbrp10le            ee014153f55c011918df5b2394815780
@@ -42,8 +42,8 @@ gbrp16be            7b6764a504c853b09f5c7d0b2223c5a4
 gbrp16le            fb9323a5bd060282bec7bfd7d38dc230
 gbrp9be             a4dc6f6f9bb051de2dc348b592ad4282
 gbrp9le             699da3a3b324f3fd001a56aee9683384
-gbrpf32be           ae33c2d738af01ae66a5d2b08a7a60b7
-gbrpf32le           4e3305c619337beeeacc5e6b2f42c793
+gbrpf32be           19da92dc82ac3f74c1fc5ca215ba97f4
+gbrpf32le           f3aff67024db002d8d985c775ec8c235
 gray                188590b1231afd231ea910815aef2b25
 gray10be            0804e8620fcd78599e3df33cb83652aa
 gray10le            705e51fb783ae8167498d09748e44bd2
diff --git a/tests/ref/fate/filter-pixfmts-scale b/tests/ref/fate/filter-pixfmts-scale
index 09fdbee7a38..67de3d414d1 100644
--- a/tests/ref/fate/filter-pixfmts-scale
+++ b/tests/ref/fate/filter-pixfmts-scale
@@ -29,8 +29,8 @@ gbrap14be           6addff84e986e7ea28aa3cdb80f44137
 gbrap14le           a753ce2fc6d36920d678411434bed9b1
 gbrap16be           31968e6872a46e8174fb57f8920ed10d
 gbrap16le           8c6758f33671b673b6d30969fc05a23d
-gbrapf32be          366b804d5697276e8c481c4bdf05a00b
-gbrapf32le          558a268e6d6b907449d1056afab78f29
+gbrapf32be          24be4f8966796d8fd5343b3f223653f0
+gbrapf32le          9e32cc5fc7b487ea94b9f440d645040d
 gbrp                dc3387f925f972c61aae7eb23cdc19f0
 gbrp10be            a318ea42e53a7b80a55aa7c19c9a0ab5
 gbrp10le            994e8fc6a1e5b230f4c55893fd7618d6
@@ -42,8 +42,8 @@ gbrp16be            5241eee3465096efa111b86b30c3aaaa
 gbrp16le            5b8b997378ce31207f37059dbfb40c4a
 gbrp9be             d7caf58cc3a74a036e11f924f03fc04c
 gbrp9le             010f7bcd8b2e17065d01a09f0d483218
-gbrpf32be           f3d0cefdf11c861001880772d817aac8
-gbrpf32le           290468205c1c18a0667edfca45061aee
+gbrpf32be           bb357ee591ba1da13b52b63d673df762
+gbrpf32le           f6fcfa78926bc1acdf40675e015491fd
 gray                221201cc7cfc4964eacd8b3e426fd276
 gray10be            d16a05571246e94b5117004c5276cb7a
 gray10le            0ef4a201ffc7197b316ad47dd81dff45
diff --git a/tests/ref/fate/filter-pixfmts-transpose b/tests/ref/fate/filter-pixfmts-transpose
index 2f8c32d9a6d..3064f2b1802 100644
--- a/tests/ref/fate/filter-pixfmts-transpose
+++ b/tests/ref/fate/filter-pixfmts-transpose
@@ -29,8 +29,8 @@ gbrap14be           929c440a44fbeab41111ebbf1d724464
 gbrap14le           577112fe137e056b4fb145403d5846e6
 gbrap16be           39d488528aacff466aac7539c9b948a8
 gbrap16le           5426ac9457289927bfe2ec03038a8780
-gbrapf32be          ea02b3912372c8671ff4eacbcbda740a
-gbrapf32le          3021d477bdbeba4e2ae7a6bc6cff33e5
+gbrapf32be          8c052d40def11ed145ac09ac134b9bd3
+gbrapf32le          d6589fe7935cbb69d8253f8b8c4ffba8
 gbrp                7b4b6a2f1cdc51455b25515c3ecea944
 gbrp10be            d7401725699b2ddf954caa16a0878a1e
 gbrp10le            6036711969eae1979be6358f688bd9c8
@@ -42,8 +42,8 @@ gbrp16be            0d003b88d4f446ae9ba12cab1cbb359a
 gbrp16le            a1c09038fa4636c9843ab8dd2b7601ea
 gbrp9be             df381b4b27be25d172fa556434478807
 gbrp9le             a5301e978f68b29bfc613b2462ec4888
-gbrpf32be           b90d6189e71afd6ec1f379489884cc8e
-gbrpf32le           48dee2c9cee8ac6582492fd1c7acb183
+gbrpf32be           82412b8b15b43864ea62ac1d4fc18c7b
+gbrpf32le           3daead396f5bbd6dc3e9d729f6dd7e4a
 gray                c5f8bc6636fd15dbc57deb4bba1e7379
 gray10be            502e8c53160bb81e319f7f03f3d7fba7
 gray10le            0fe4b6d29e7602bb9e49a1cd6c32cf86
diff --git a/tests/ref/fate/filter-pixfmts-vflip b/tests/ref/fate/filter-pixfmts-vflip
index 905e334325d..a36d9574437 100644
--- a/tests/ref/fate/filter-pixfmts-vflip
+++ b/tests/ref/fate/filter-pixfmts-vflip
@@ -29,8 +29,8 @@ gbrap14be           b5a84309c1ca113d950ca7aa4e64bad4
 gbrap14le           561babad7e222cc004250cabfd17a605
 gbrap16be           70b020b6b9e1896b72f890de3570ffda
 gbrap16le           e0cf341cdbaf1f5c40016f181bc9d7d4
-gbrapf32be          e82323abcb665014346a3a34a4b084c3
-gbrapf32le          b24471278a899eb2f9cb563632d29b09
+gbrapf32be          2f35ab84648ff09aef363dcc7594a73f
+gbrapf32le          463ffd7ce416d476816e080f971c42ba
 gbrp                413b0f6ea51588d4be5f0c76d43d8796
 gbrp10be            d02bd50db83213667808f5bacefe667c
 gbrp10le            2d4a5ebc773ffc3d857a6ef24afbe10e
@@ -42,8 +42,8 @@ gbrp16be            3fef87fe67bf1fd0e2f5056dc0db2ef4
 gbrp16le            f3b2b76fe707f77eb1376640759f5168
 gbrp9be             99c694dd47d12ae48fc8f47a0c410333
 gbrp9le             26e103a4ab99fb3f58667df490997a36
-gbrpf32be           3eaa2d475754c2b4ae3c59dbdb7ccd84
-gbrpf32le           0267e215c3d11ae22414c3e29e665896
+gbrpf32be           0e73b94fd0437d0a0ff0b2474697a8aa
+gbrpf32le           a60eadee900a27d4e1fb5d7ac0b0e901
 gray                41811422d5819ed69389357294384c10
 gray10be            8a49315bcba5cdaffe7ef55cdb5f5148
 gray10le            dd71c7da4d205a081f54e46e76b6a1ed
-- 
2.48.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 03/11] avcodec/ffv1enc: remap mode 2 is for floats only
  2025-03-24 17:39 [FFmpeg-devel] [PATCH 01/11] avformat/nut: Add GBR(A)PF16/32LE/BE Michael Niedermayer
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 02/11] avcodec/raw: " Michael Niedermayer
@ 2025-03-24 17:39 ` Michael Niedermayer
  2025-03-25  9:38   ` Michael Niedermayer
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 04/11] avcodec/ffv1enc: remap table size is 1<<bits_per_raw_sample not fixed 65536 Michael Niedermayer
                   ` (7 subsequent siblings)
  9 siblings, 1 reply; 12+ messages in thread
From: Michael Niedermayer @ 2025-03-24 17:39 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

(you could use it for others but it makes no sense)

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/ffv1enc.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
index 432e1493582..05b43c12abf 100644
--- a/libavcodec/ffv1enc.c
+++ b/libavcodec/ffv1enc.c
@@ -951,6 +951,11 @@ av_cold int ff_ffv1_encode_setup_plane_info(AVCodecContext *avctx,
         av_log(avctx, AV_LOG_ERROR, "32bit requires remap\n");
         return AVERROR(EINVAL);
     }
+    if (s->remap_mode == 2 &&
+        !((s->bits_per_raw_sample == 16 || s->bits_per_raw_sample == 32 || s->bits_per_raw_sample == 64) && s->flt)) {
+        av_log(avctx, AV_LOG_ERROR, "remap 2 is for float16/32/64 only\n");
+        return AVERROR(EINVAL);
+    }
 
     return av_pix_fmt_get_chroma_sub_sample(pix_fmt, &s->chroma_h_shift, &s->chroma_v_shift);
 }
-- 
2.48.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 04/11] avcodec/ffv1enc: remap table size is 1<<bits_per_raw_sample not fixed 65536
  2025-03-24 17:39 [FFmpeg-devel] [PATCH 01/11] avformat/nut: Add GBR(A)PF16/32LE/BE Michael Niedermayer
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 02/11] avcodec/raw: " Michael Niedermayer
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 03/11] avcodec/ffv1enc: remap mode 2 is for floats only Michael Niedermayer
@ 2025-03-24 17:39 ` Michael Niedermayer
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 05/11] avcodec/ffv1dec: compute end instead of hardcoding it and test for fltmap correctly Michael Niedermayer
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Michael Niedermayer @ 2025-03-24 17:39 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

not a bugfix as this path was only used for float16 but it makes sense
to allow using this for integers too

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/ffv1enc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
index 05b43c12abf..78a9a903039 100644
--- a/libavcodec/ffv1enc.c
+++ b/libavcodec/ffv1enc.c
@@ -1168,6 +1168,7 @@ static void choose_rct_params(const FFV1Context *f, FFV1SliceContext *sc,
 
 static void encode_histogram_remap(FFV1Context *f, FFV1SliceContext *sc)
 {
+    int len = 1 << f->bits_per_raw_sample;
     int flip = sc->remap == 2 ? 0x7FFF : 0;
 
     for (int p= 0; p < 1 + 2*f->chroma_planes + f->transparency; p++) {
@@ -1179,7 +1180,7 @@ static void encode_histogram_remap(FFV1Context *f, FFV1SliceContext *sc)
         memset(state, 128, sizeof(state));
         put_symbol(&sc->c, state[0], 0, 0);
         memset(state, 128, sizeof(state));
-        for (int i= 0; i<65536; i++) {
+        for (int i= 0; i<len; i++) {
             int ri = i ^ ((i&0x8000) ? 0 : flip);
             int u = sc->fltmap[p][ri];
             sc->fltmap[p][ri] = j;
-- 
2.48.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 05/11] avcodec/ffv1dec: compute end instead of hardcoding it and test for fltmap correctly
  2025-03-24 17:39 [FFmpeg-devel] [PATCH 01/11] avformat/nut: Add GBR(A)PF16/32LE/BE Michael Niedermayer
                   ` (2 preceding siblings ...)
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 04/11] avcodec/ffv1enc: remap table size is 1<<bits_per_raw_sample not fixed 65536 Michael Niedermayer
@ 2025-03-24 17:39 ` Michael Niedermayer
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 06/11] avcodec/ffv1dec: replace literal 65535 by what it is Michael Niedermayer
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Michael Niedermayer @ 2025-03-24 17:39 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

A step toward supporting remap for integer formats less than 16 bit

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/ffv1dec.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavcodec/ffv1dec.c b/libavcodec/ffv1dec.c
index e9362eed194..21a7642a08b 100644
--- a/libavcodec/ffv1dec.c
+++ b/libavcodec/ffv1dec.c
@@ -286,7 +286,7 @@ static int decode_current_mul(RangeCoder *rc, uint8_t state[32], int *mul, int m
 
 static int decode_remap(FFV1Context *f, FFV1SliceContext *sc)
 {
-    unsigned int end = f->avctx->bits_per_raw_sample == 32 ? 0xFFFFFFFF : 0xFFFF;
+    unsigned int end = (1LL<<f->avctx->bits_per_raw_sample) - 1;
     int flip = sc->remap == 2 ? (end>>1) : 0;
 
     for (int p= 0; p < 1 + 2*f->chroma_planes + f->transparency; p++) {
@@ -328,7 +328,7 @@ static int decode_remap(FFV1Context *f, FFV1SliceContext *sc)
                     break;
                 if (i - 1 > end || j > 65535)
                     return AVERROR_INVALIDDATA;
-                if (end == 0xFFFF) {
+                if (end <= 0xFFFF) {
                     sc->fltmap  [p][j++] = i ^ ((i&    0x8000) ? 0 : flip);
                 } else
                     sc->fltmap32[p][j++] = i ^ ((i&0x80000000) ? 0 : flip);
-- 
2.48.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 06/11] avcodec/ffv1dec: replace literal 65535 by what it is
  2025-03-24 17:39 [FFmpeg-devel] [PATCH 01/11] avformat/nut: Add GBR(A)PF16/32LE/BE Michael Niedermayer
                   ` (3 preceding siblings ...)
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 05/11] avcodec/ffv1dec: compute end instead of hardcoding it and test for fltmap correctly Michael Niedermayer
@ 2025-03-24 17:39 ` Michael Niedermayer
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 07/11] avcodec/ffv1enc: eliminate if() Michael Niedermayer
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Michael Niedermayer @ 2025-03-24 17:39 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

should make the code easier to understand

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/ffv1dec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/ffv1dec.c b/libavcodec/ffv1dec.c
index 21a7642a08b..25b55864107 100644
--- a/libavcodec/ffv1dec.c
+++ b/libavcodec/ffv1dec.c
@@ -326,7 +326,7 @@ static int decode_remap(FFV1Context *f, FFV1SliceContext *sc)
                 }
                 if (i == end)
                     break;
-                if (i - 1 > end || j > 65535)
+                if (i - 1 > end || j >= FF_ARRAY_ELEMS(sc->fltmap[p]))
                     return AVERROR_INVALIDDATA;
                 if (end <= 0xFFFF) {
                     sc->fltmap  [p][j++] = i ^ ((i&    0x8000) ? 0 : flip);
-- 
2.48.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 07/11] avcodec/ffv1enc: eliminate if()
  2025-03-24 17:39 [FFmpeg-devel] [PATCH 01/11] avformat/nut: Add GBR(A)PF16/32LE/BE Michael Niedermayer
                   ` (4 preceding siblings ...)
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 06/11] avcodec/ffv1dec: replace literal 65535 by what it is Michael Niedermayer
@ 2025-03-24 17:39 ` Michael Niedermayer
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 08/11] avcodec/ffv1enc: introduce step to simplify code Michael Niedermayer
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Michael Niedermayer @ 2025-03-24 17:39 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/ffv1enc.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
index 78a9a903039..49d1d56af24 100644
--- a/libavcodec/ffv1enc.c
+++ b/libavcodec/ffv1enc.c
@@ -1333,19 +1333,17 @@ static int encode_float32_remap_segment(FFV1SliceContext *sc, Unit unit[4][65536
             val = unit[s.p][s.i].val;
 
         if (s.last_val != val) {
-            int64_t delta = 0;
+            int64_t delta = val - s.last_val;
             av_assert2(s.last_val < val);
             av_assert2(current_mul > 0);
 
-            if (current_mul > 1) {
-                delta = val - s.last_val;
-                val = FFMAX(1, (delta + current_mul/2) / current_mul);
+            val = FFMAX(1, (delta + current_mul/2) / current_mul);
+
+            delta -= val*current_mul;
+            av_assert2(delta <= current_mul/2);
+            av_assert2(delta > -current_mul);
+            val += s.last_val;
 
-                delta -= val*current_mul;
-                av_assert2(delta <= current_mul/2);
-                av_assert2(delta > -current_mul);
-                val += s.last_val;
-            }
             av_assert2(s.last_val < val);
             if (s.lu) {
                 s.index_stack[s.run] = s.current_mul_index;
-- 
2.48.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 08/11] avcodec/ffv1enc: introduce step to simplify code
  2025-03-24 17:39 [FFmpeg-devel] [PATCH 01/11] avformat/nut: Add GBR(A)PF16/32LE/BE Michael Niedermayer
                   ` (5 preceding siblings ...)
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 07/11] avcodec/ffv1enc: eliminate if() Michael Niedermayer
@ 2025-03-24 17:39 ` Michael Niedermayer
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 09/11] avcodec/ffv1enc: Simplify last_val update Michael Niedermayer
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Michael Niedermayer @ 2025-03-24 17:39 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/ffv1enc.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
index 49d1d56af24..962ea4abe48 100644
--- a/libavcodec/ffv1enc.c
+++ b/libavcodec/ffv1enc.c
@@ -1334,21 +1334,19 @@ static int encode_float32_remap_segment(FFV1SliceContext *sc, Unit unit[4][65536
 
         if (s.last_val != val) {
             int64_t delta = val - s.last_val;
+            int64_t step  = FFMAX(1, (delta + current_mul/2) / current_mul);
             av_assert2(s.last_val < val);
             av_assert2(current_mul > 0);
 
-            val = FFMAX(1, (delta + current_mul/2) / current_mul);
-
-            delta -= val*current_mul;
+            delta -= step*current_mul;
             av_assert2(delta <= current_mul/2);
             av_assert2(delta > -current_mul);
-            val += s.last_val;
 
-            av_assert2(s.last_val < val);
+            av_assert2(step > 0);
             if (s.lu) {
                 s.index_stack[s.run] = s.current_mul_index;
                 av_assert2(s.run < FF_ARRAY_ELEMS(s.delta_stack));
-                if (val - s.last_val == 1) {
+                if (step == 1) {
                     s.delta_stack[s.run] = delta;
                     s.run ++;
                     av_assert2(s.i == s.pixel_num || s.last_val + current_mul + delta == unit[s.p][s.i].val);
@@ -1371,14 +1369,14 @@ static int encode_float32_remap_segment(FFV1SliceContext *sc, Unit unit[4][65536
                 }
             } else {
                 av_assert2(s.run == 0);
-                put_symbol_inline(&s.rc, s.state[s.lu][0], val - s.last_val - 1, 0, NULL, NULL);
+                put_symbol_inline(&s.rc, s.state[s.lu][0], step - 1, 0, NULL, NULL);
 
                 if (current_mul > 1)
                     put_symbol_inline(&s.rc, s.state[s.lu][1], delta, 1, NULL, NULL);
-                if (val - s.last_val == 1)
+                if (step == 1)
                     s.lu ^= 1;
 
-                av_assert2(s.i == s.pixel_num || s.last_val + (val - s.last_val) * current_mul + delta == unit[s.p][s.i].val);
+                av_assert2(s.i == s.pixel_num || s.last_val + step * current_mul + delta == unit[s.p][s.i].val);
                 if (s.i < s.pixel_num)
                     s.last_val = unit[s.p][s.i].val;
             }
-- 
2.48.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 09/11] avcodec/ffv1enc: Simplify last_val update
  2025-03-24 17:39 [FFmpeg-devel] [PATCH 01/11] avformat/nut: Add GBR(A)PF16/32LE/BE Michael Niedermayer
                   ` (6 preceding siblings ...)
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 08/11] avcodec/ffv1enc: introduce step to simplify code Michael Niedermayer
@ 2025-03-24 17:39 ` Michael Niedermayer
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 10/11] avcodec/ffv1enc: Factorize s.last_val update out Michael Niedermayer
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 11/11] avcodec/ffv1enc: Heuristic to select fixed in float multipliers Michael Niedermayer
  9 siblings, 0 replies; 12+ messages in thread
From: Michael Niedermayer @ 2025-03-24 17:39 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/ffv1enc.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
index 962ea4abe48..1d7ab1725ac 100644
--- a/libavcodec/ffv1enc.c
+++ b/libavcodec/ffv1enc.c
@@ -1349,8 +1349,8 @@ static int encode_float32_remap_segment(FFV1SliceContext *sc, Unit unit[4][65536
                 if (step == 1) {
                     s.delta_stack[s.run] = delta;
                     s.run ++;
-                    av_assert2(s.i == s.pixel_num || s.last_val + current_mul + delta == unit[s.p][s.i].val);
-                    s.last_val += current_mul + delta;
+                    av_assert2(s.last_val + current_mul + delta == val);
+                    s.last_val = val;
                 } else {
                     put_symbol_inline(&s.rc, s.state[s.lu][0], s.run, 0, NULL, NULL);
 
@@ -1376,9 +1376,8 @@ static int encode_float32_remap_segment(FFV1SliceContext *sc, Unit unit[4][65536
                 if (step == 1)
                     s.lu ^= 1;
 
-                av_assert2(s.i == s.pixel_num || s.last_val + step * current_mul + delta == unit[s.p][s.i].val);
-                if (s.i < s.pixel_num)
-                    s.last_val = unit[s.p][s.i].val;
+                av_assert2(s.last_val + step * current_mul + delta == val);
+                s.last_val = val;
             }
             s.current_mul_index = ((s.last_val + 1) * s.mul_count) >> 32;
             if (!s.run)
-- 
2.48.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 10/11] avcodec/ffv1enc: Factorize s.last_val update out
  2025-03-24 17:39 [FFmpeg-devel] [PATCH 01/11] avformat/nut: Add GBR(A)PF16/32LE/BE Michael Niedermayer
                   ` (7 preceding siblings ...)
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 09/11] avcodec/ffv1enc: Simplify last_val update Michael Niedermayer
@ 2025-03-24 17:39 ` Michael Niedermayer
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 11/11] avcodec/ffv1enc: Heuristic to select fixed in float multipliers Michael Niedermayer
  9 siblings, 0 replies; 12+ messages in thread
From: Michael Niedermayer @ 2025-03-24 17:39 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/ffv1enc.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
index 1d7ab1725ac..c3b3b926adf 100644
--- a/libavcodec/ffv1enc.c
+++ b/libavcodec/ffv1enc.c
@@ -1350,7 +1350,6 @@ static int encode_float32_remap_segment(FFV1SliceContext *sc, Unit unit[4][65536
                     s.delta_stack[s.run] = delta;
                     s.run ++;
                     av_assert2(s.last_val + current_mul + delta == val);
-                    s.last_val = val;
                 } else {
                     put_symbol_inline(&s.rc, s.state[s.lu][0], s.run, 0, NULL, NULL);
 
@@ -1377,8 +1376,8 @@ static int encode_float32_remap_segment(FFV1SliceContext *sc, Unit unit[4][65536
                     s.lu ^= 1;
 
                 av_assert2(s.last_val + step * current_mul + delta == val);
-                s.last_val = val;
             }
+            s.last_val = val;
             s.current_mul_index = ((s.last_val + 1) * s.mul_count) >> 32;
             if (!s.run)
                 encode_mul(&s, s.current_mul_index);
-- 
2.48.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 11/11] avcodec/ffv1enc: Heuristic to select fixed in float multipliers
  2025-03-24 17:39 [FFmpeg-devel] [PATCH 01/11] avformat/nut: Add GBR(A)PF16/32LE/BE Michael Niedermayer
                   ` (8 preceding siblings ...)
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 10/11] avcodec/ffv1enc: Factorize s.last_val update out Michael Niedermayer
@ 2025-03-24 17:39 ` Michael Niedermayer
  9 siblings, 0 replies; 12+ messages in thread
From: Michael Niedermayer @ 2025-03-24 17:39 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/ffv1enc.c | 30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
index c3b3b926adf..004ea73e06b 100644
--- a/libavcodec/ffv1enc.c
+++ b/libavcodec/ffv1enc.c
@@ -1408,17 +1408,30 @@ static void encode_float32_remap(FFV1Context *f, FFV1SliceContext *sc,
         s.i = 0;
         s.p = p;
 
-        s.mul_count = 1;
-
+        for(int v = 0; v< 512; v++) {
+            if (v >= 0x378/8 && v <= 23 + 0x378/8) {
+                s.mul[v] = -(0x800080 >> (v - 0x378/8));
+            } else
+                s.mul[v] = -1;
+        }
         for (int i= 0; i<s.pixel_num; i++) {
             int64_t val = unit[p][i].val;
             if (val != last_val) {
                 av_assert2(last_val < val);
                 for(int si= 0; si < FF_ARRAY_ELEMS(score_tab); si++) {
                     int64_t delta = val - last_val;
-                    int mul = last_val < 0 ? 1 : (1<<si);
-                    int64_t cost = FFMAX((delta + mul/2)  / mul, 1);
-                    score_tab[si] += log2(cost) + fabs(delta - cost*mul);
+                    int mul;
+                    int64_t cost;
+
+                    if (last_val < 0) {
+                        mul = 1;
+                    } else if (si + 1 == FF_ARRAY_ELEMS(score_tab)) {
+                        mul = -s.mul[ (last_val + 1) >> (32-9) ];
+                    } else
+                        mul = 1<<si;
+
+                    cost = FFMAX((delta + mul/2)  / mul, 1);
+                    score_tab[si] += log2(cost) + log2(fabs(delta - cost*mul)+1);
                 }
                 last_val = val;
             }
@@ -1428,7 +1441,12 @@ static void encode_float32_remap(FFV1Context *f, FFV1SliceContext *sc,
             if (score_tab[si] < score_tab[ best_index ])
                 best_index = si;
         }
-        s.mul[0] = -1 << best_index;
+        if (best_index + 1 < FF_ARRAY_ELEMS(score_tab)) {
+            s.mul[0] = -1 << best_index;
+            s.mul_count = 1;
+        } else {
+            s.mul_count = 512;
+        }
         s.mul[s.mul_count] = 1;
 
         encode_float32_remap_segment(sc, unit, &s, 1, 1);
-- 
2.48.1

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 03/11] avcodec/ffv1enc: remap mode 2 is for floats only
  2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 03/11] avcodec/ffv1enc: remap mode 2 is for floats only Michael Niedermayer
@ 2025-03-25  9:38   ` Michael Niedermayer
  0 siblings, 0 replies; 12+ messages in thread
From: Michael Niedermayer @ 2025-03-25  9:38 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


[-- Attachment #1.1: Type: text/plain, Size: 569 bytes --]

On Mon, Mar 24, 2025 at 06:39:37PM +0100, Michael Niedermayer wrote:
> (you could use it for others but it makes no sense)
> 
> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> ---
>  libavcodec/ffv1enc.c | 5 +++++
>  1 file changed, 5 insertions(+)

will apply the ffv1 patches with an additional fix to fix fate failure

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

When you are offended at any man's fault, turn to yourself and study your
own failings. Then you will forget your anger. -- Epictetus

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2025-03-25  9:38 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-03-24 17:39 [FFmpeg-devel] [PATCH 01/11] avformat/nut: Add GBR(A)PF16/32LE/BE Michael Niedermayer
2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 02/11] avcodec/raw: " Michael Niedermayer
2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 03/11] avcodec/ffv1enc: remap mode 2 is for floats only Michael Niedermayer
2025-03-25  9:38   ` Michael Niedermayer
2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 04/11] avcodec/ffv1enc: remap table size is 1<<bits_per_raw_sample not fixed 65536 Michael Niedermayer
2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 05/11] avcodec/ffv1dec: compute end instead of hardcoding it and test for fltmap correctly Michael Niedermayer
2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 06/11] avcodec/ffv1dec: replace literal 65535 by what it is Michael Niedermayer
2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 07/11] avcodec/ffv1enc: eliminate if() Michael Niedermayer
2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 08/11] avcodec/ffv1enc: introduce step to simplify code Michael Niedermayer
2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 09/11] avcodec/ffv1enc: Simplify last_val update Michael Niedermayer
2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 10/11] avcodec/ffv1enc: Factorize s.last_val update out Michael Niedermayer
2025-03-24 17:39 ` [FFmpeg-devel] [PATCH 11/11] avcodec/ffv1enc: Heuristic to select fixed in float multipliers Michael Niedermayer

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git