[FFmpeg-devel] [PATCH 1/4] avcodec/ffv1: Fix remap ordering

Michael Niedermayer michael at niedermayer.cc
Thu Mar 20 03:19:13 EET 2025


Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
---
 libavcodec/ffv1dec_template.c |  6 +++---
 libavcodec/ffv1enc.c          |  2 +-
 libavcodec/ffv1enc_template.c | 12 ++++++------
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/libavcodec/ffv1dec_template.c b/libavcodec/ffv1dec_template.c
index f9499931b1d..cc0f6f97691 100644
--- a/libavcodec/ffv1dec_template.c
+++ b/libavcodec/ffv1dec_template.c
@@ -198,9 +198,9 @@ static int RENAME(decode_rgb_frame)(FFV1Context *f, FFV1SliceContext *sc,
                 r += g;
             }
             if (sc->remap) {
-                r = sc->fltmap[0][r & 0xFFFF];
-                g = sc->fltmap[1][g & 0xFFFF];
-                b = sc->fltmap[2][b & 0xFFFF];
+                g = sc->fltmap[0][g & 0xFFFF];
+                b = sc->fltmap[1][b & 0xFFFF];
+                r = sc->fltmap[2][r & 0xFFFF];
                 if (transparency)
                     a = sc->fltmap[3][a & 0xFFFF];
             }
diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
index 64add25b407..72ce22adfb0 100644
--- a/libavcodec/ffv1enc.c
+++ b/libavcodec/ffv1enc.c
@@ -432,7 +432,7 @@ static void set_micro_version(FFV1Context *f)
         if (f->version == 3) {
             f->micro_version = 4;
         } else if (f->version == 4) {
-            f->micro_version = 5;
+            f->micro_version = 6;
         } else
             av_assert0(0);
 
diff --git a/libavcodec/ffv1enc_template.c b/libavcodec/ffv1enc_template.c
index 8b2d938770f..779e83dad66 100644
--- a/libavcodec/ffv1enc_template.c
+++ b/libavcodec/ffv1enc_template.c
@@ -168,9 +168,9 @@ static void RENAME(load_rgb_frame)(FFV1Context *f, FFV1SliceContext *sc,
                 r = *((const uint16_t *)(src[2] + x*2 + stride[2]*y));
             }
 
-            sc->fltmap[0][r] = 1;
-            sc->fltmap[1][g] = 1;
-            sc->fltmap[2][b] = 1;
+            sc->fltmap[0][g] = 1;
+            sc->fltmap[1][b] = 1;
+            sc->fltmap[2][r] = 1;
             if (transparency)
                 sc->fltmap[3][a] = 1;
         }
@@ -230,9 +230,9 @@ static int RENAME(encode_rgb_frame)(FFV1Context *f, FFV1SliceContext *sc,
             }
 
             if (sc->remap) {
-                r = sc->fltmap[0][r];
-                g = sc->fltmap[1][g];
-                b = sc->fltmap[2][b];
+                g = sc->fltmap[0][g];
+                b = sc->fltmap[1][b];
+                r = sc->fltmap[2][r];
                 if (transparency)
                     a = sc->fltmap[3][a];
             }
-- 
2.48.1



More information about the ffmpeg-devel mailing list