Commit 60d62ca406 for ffmpeg

commit 60d62ca4065198b0db323e7c9e4d3efa973e7569
Author: Michael Niedermayer <michael@niedermayer.cc>
Date:   Fri Oct 23 17:39:52 2026 +0200

    avcodec/ffv1dec: clamp k in get_vlc_symbol() at 20 instead of bits

    Add a FATE test with such planes.

diff --git a/libavcodec/ffv1dec.c b/libavcodec/ffv1dec.c
index 8de15d2476..c15ae288f6 100644
--- a/libavcodec/ffv1dec.c
+++ b/libavcodec/ffv1dec.c
@@ -56,10 +56,12 @@ static inline int get_vlc_symbol(GetBitContext *gb, VlcState *const state,
         k++;
         i += i;
     }
-    if (k > bits) {
+    /* get_ur_golomb() reads at most 32 bits, 12 of which the escape limit
+     * reserves for the prefix */
+    if (k > 20) {
         ff_dlog(NULL, "k-overflow bias:%d error:%d drift:%d count:%d k:%d",
                 state->bias, state->error_sum, state->drift, state->count, k);
-        k = bits;
+        k = 20;
     }

     v = get_sr_golomb(gb, k, 12, bits);
diff --git a/tests/fate/ffv1.mak b/tests/fate/ffv1.mak
index 5175c8df96..a2aa057732 100644
--- a/tests/fate/ffv1.mak
+++ b/tests/fate/ffv1.mak
@@ -1,9 +1,14 @@
 FATE_FFV1_FLOAT32-$(call TRANSCODE, FFV1, NUT, LAVFI_INDEV WRAPPED_AVFRAME_DECODER COLOR_FILTER FORMAT_FILTER GEQ_FILTER SCALE_FILTER) += \
-    fate-ffv1-golomb-float32-26bit
+    fate-ffv1-golomb-float32-26bit fate-ffv1-golomb-float32-1bit

 fate-ffv1-golomb-float32-26bit: CMD = transcode lavfi "color=black:s=352x288:r=1:d=8,format=gbrpf32,geq=r=X+Y*W:g=X+Y*W:b=X+W*if(lt(Y\,2*(25+N+floor(N/2)+2*floor(N/7))-4)\,if(mod(Y\,2)\,290-(25+N+floor(N/2)+2*floor(N/7))+(Y-1)/2\,290-2*(25+N+floor(N/2)+2*floor(N/7))+Y/2)\,if(eq(Y\,2*(25+N+floor(N/2)+2*floor(N/7))-4)\,19\,if(lt(Y\,2*(25+N+floor(N/2)+2*floor(N/7))+16)\,Y-2*(25+N+floor(N/2)+2*floor(N/7))+3\,if(lt(Y\,286)\,Y-2*(25+N+floor(N/2)+2*floor(N/7))+4\,Y-(25+N+floor(N/2)+2*floor(N/7))+2))))" nut \
     "-c:v ffv1 -strict experimental -coder 0 -remap_mode 1 -slices 1 -g 1" "-pix_fmt gbrpf32le -vf scale"

+# Planes with 2 distinct values are coded with 1 bit residuals while the
+# Golomb-Rice parameter k starts at 2.
+fate-ffv1-golomb-float32-1bit: CMD = transcode lavfi "color=black:s=64x48:r=1:d=1,format=gbrpf32,geq=r=1+mod(floor(X*Y/7)\,2):g=1+mod(floor(X*Y/7)\,2):b=1+mod(floor(X*Y/7)\,2)" nut \
+    "-c:v ffv1 -strict experimental -coder 0 -remap_mode 1" "-pix_fmt gbrpf32le -vf scale"
+
 FATE_FFMPEG += $(FATE_FFV1_FLOAT32-yes)
 fate-ffv1: $(FATE_FFV1_FLOAT32-yes)

diff --git a/tests/ref/fate/ffv1-golomb-float32-1bit b/tests/ref/fate/ffv1-golomb-float32-1bit
new file mode 100644
index 0000000000..e12e748b4b
--- /dev/null
+++ b/tests/ref/fate/ffv1-golomb-float32-1bit
@@ -0,0 +1,8 @@
+eb334f7a8c79e6eb915ac7440a88ddc9 *tests/data/fate/ffv1-golomb-float32-1bit.nut
+1455 tests/data/fate/ffv1-golomb-float32-1bit.nut
+#tb 0: 1/1
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 64x48
+#sar 0: 1/1
+0,          0,          0,        1,    36864, 0x1ad349e2