[FFmpeg-cvslog] vulkan_ffv1: fix golomb coding for non-RGB streams

Lynne git at videolan.org
Tue May 27 00:40:57 EEST 2025


ffmpeg | branch: master | Lynne <dev at lynne.ee> | Tue May 27 06:38:47 2025 +0900| [3cbe3418b2b7b60299e54321b78922a3c3a9527b] | committer: Lynne

vulkan_ffv1: fix golomb coding for non-RGB streams

The run_index is reset on each plane, unlike with RGB, where
its reset once per slice.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3cbe3418b2b7b60299e54321b78922a3c3a9527b
---

 libavcodec/vulkan/ffv1_dec.comp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavcodec/vulkan/ffv1_dec.comp b/libavcodec/vulkan/ffv1_dec.comp
index f78a86b059..eb795dcba4 100644
--- a/libavcodec/vulkan/ffv1_dec.comp
+++ b/libavcodec/vulkan/ffv1_dec.comp
@@ -226,7 +226,6 @@ void writeout_rgb(in SliceContext sc, ivec2 sp, int w, int y, bool apply_rct)
 
 void decode_slice(inout SliceContext sc, const uint slice_idx)
 {
-    int run_index = 0;
     int w = sc.slice_dim.x;
     ivec2 sp = sc.slice_pos;
 
@@ -274,11 +273,13 @@ void decode_slice(inout SliceContext sc, const uint slice_idx)
             if (p > 0 && p < 3)
                 h >>= chroma_shift.y;
 
+            int run_index = 0;
             for (int y = 0; y < h; y++)
                 decode_line(sc, sp, w, y, p, bits,
                             slice_state_off[p], quant_table_idx[p], run_index);
         }
 #else
+        int run_index = 0;
         for (int y = 0; y < sc.slice_dim.y; y++) {
             for (int p = 0; p < color_planes; p++)
                 decode_line(sc, sp, w, y, p, bits,



More information about the ffmpeg-cvslog mailing list