1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-08-04 22:03:09 +02:00

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.
This commit is contained in:
Lynne
2025-05-27 06:38:47 +09:00
parent c395ad7c2c
commit 3cbe3418b2

View File

@ -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) void decode_slice(inout SliceContext sc, const uint slice_idx)
{ {
int run_index = 0;
int w = sc.slice_dim.x; int w = sc.slice_dim.x;
ivec2 sp = sc.slice_pos; ivec2 sp = sc.slice_pos;
@ -274,11 +273,13 @@ void decode_slice(inout SliceContext sc, const uint slice_idx)
if (p > 0 && p < 3) if (p > 0 && p < 3)
h >>= chroma_shift.y; h >>= chroma_shift.y;
int run_index = 0;
for (int y = 0; y < h; y++) for (int y = 0; y < h; y++)
decode_line(sc, sp, w, y, p, bits, decode_line(sc, sp, w, y, p, bits,
slice_state_off[p], quant_table_idx[p], run_index); slice_state_off[p], quant_table_idx[p], run_index);
} }
#else #else
int run_index = 0;
for (int y = 0; y < sc.slice_dim.y; y++) { for (int y = 0; y < sc.slice_dim.y; y++) {
for (int p = 0; p < color_planes; p++) for (int p = 0; p < color_planes; p++)
decode_line(sc, sp, w, y, p, bits, decode_line(sc, sp, w, y, p, bits,