* [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