This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 10407de11049e216dfbeb46f868b378dfb1c1198 Author: Lynne <[email protected]> AuthorDate: Tue Feb 10 06:09:52 2026 +0100 Commit: Lynne <[email protected]> CommitDate: Thu Feb 19 19:42:32 2026 +0100 vulkan/rangecoder: clean up unused functions and redundant fields --- libavcodec/vulkan/ffv1_dec.comp.glsl | 11 +++++++---- libavcodec/vulkan/ffv1_dec_setup.comp.glsl | 8 ++++---- libavcodec/vulkan/ffv1_enc.comp.glsl | 14 ++++++++------ libavcodec/vulkan/ffv1_enc_setup.comp.glsl | 10 +++++----- libavcodec/vulkan/rangecoder.glsl | 23 +++++------------------ 5 files changed, 29 insertions(+), 37 deletions(-) diff --git a/libavcodec/vulkan/ffv1_dec.comp.glsl b/libavcodec/vulkan/ffv1_dec.comp.glsl index 2c089dd64d..cee1fb477a 100644 --- a/libavcodec/vulkan/ffv1_dec.comp.glsl +++ b/libavcodec/vulkan/ffv1_dec.comp.glsl @@ -35,13 +35,15 @@ layout (set = 1, binding = 2, scalar) writeonly buffer slice_status_buf { }; layout (set = 1, binding = 4) uniform uimage2D dec[]; +uint64_t slice_start; + #ifndef GOLOMB layout (set = 1, binding = 3, scalar) buffer slice_state_buf { uint8_t slice_rc_state[]; }; -#define READ(idx) get_rac_noadapt(idx) +#define READ(idx) get_rac_state(idx) int get_isymbol(void) { if (READ(0)) @@ -160,9 +162,9 @@ void golomb_init(inout SliceContext sc) if (version == 3 && micro_version > 1 || version > 3) get_rac_internal(rc.range * 129 >> 8); - uint64_t ac_byte_count = rc.bytestream - rc.bytestream_start - 1; - init_get_bits(gb, u8buf(rc.bytestream_start + ac_byte_count), - int(rc.bytestream_end - rc.bytestream_start - ac_byte_count)); + uint64_t ac_byte_count = rc.bytestream - slice_start - 1; + init_get_bits(gb, u8buf(slice_start + ac_byte_count), + int(rc.bytestream_end - slice_start - ac_byte_count)); } void decode_line(ivec2 sp, int w, @@ -340,6 +342,7 @@ void decode_slice(inout SliceContext sc, const uint slice_idx) void main(void) { uint slice_idx = gl_WorkGroupID.y*gl_NumWorkGroups.x + gl_WorkGroupID.x; + slice_start = uint64_t(slice_data) + slice_offsets[slice_idx].x; rc = slice_ctx[slice_idx].c; diff --git a/libavcodec/vulkan/ffv1_dec_setup.comp.glsl b/libavcodec/vulkan/ffv1_dec_setup.comp.glsl index 56abad0971..e3cf45c8ed 100644 --- a/libavcodec/vulkan/ffv1_dec_setup.comp.glsl +++ b/libavcodec/vulkan/ffv1_dec_setup.comp.glsl @@ -42,17 +42,17 @@ const int nb_hdr_sym = 4 + codec_planes + 3; uint get_usymbol(void) { - if (get_rac_direct(rc_state[0])) + if (get_rac(rc_state[0])) return 0; int e = 0; - while (get_rac_direct(rc_state[1 + min(e, 9)])) // 1..10 + while (get_rac(rc_state[1 + min(e, 9)])) // 1..10 e++; uint a = 1; for (int i = e - 1; i >= 0; i--) { a <<= 1; - a |= uint(get_rac_direct(rc_state[22 + min(i, 9)])); // 22..31 + a |= uint(get_rac(rc_state[22 + min(i, 9)])); // 22..31 } return a; @@ -95,7 +95,7 @@ bool decode_slice_header(inout SliceContext sc) } if (version >= 4) { - sc.slice_reset_contexts = get_rac_direct(rc_state[0]); + sc.slice_reset_contexts = get_rac(rc_state[0]); sc.slice_coding_mode = get_usymbol(); if (sc.slice_coding_mode != 1 && colorspace == 1) { sc.slice_rct_coef.x = int(get_usymbol()); diff --git a/libavcodec/vulkan/ffv1_enc.comp.glsl b/libavcodec/vulkan/ffv1_enc.comp.glsl index 48f2e33591..c2a1d7125d 100644 --- a/libavcodec/vulkan/ffv1_enc.comp.glsl +++ b/libavcodec/vulkan/ffv1_enc.comp.glsl @@ -36,13 +36,15 @@ layout (set = 1, binding = 1, scalar) writeonly buffer slice_results_buf { }; layout (set = 1, binding = 3) uniform uimage2D src[]; +uint64_t slice_start; + #ifndef GOLOMB layout (set = 1, binding = 2, scalar) buffer slice_state_buf { uint8_t slice_rc_state[]; }; -#define WRITE(off, val) put_rac_direct(slice_rc_state[state_off + off], val) +#define WRITE(off, val) put_rac(slice_rc_state[state_off + off], val) void put_symbol(uint state_off, int v) { bool is_nil = (v == 0); @@ -124,9 +126,8 @@ PutBitContext pb; void init_golomb(inout SliceContext sc) { - hdr_len = rac_terminate(); - init_put_bits(pb, - OFFBUF(u8buf, rc.bytestream_start, hdr_len), + hdr_len = rac_terminate(slice_start); + init_put_bits(pb, OFFBUF(u8buf, slice_start, hdr_len), slice_size_max - hdr_len); } @@ -324,10 +325,10 @@ void finalize_slice(inout SliceContext sc, const uint slice_idx) #ifdef GOLOMB uint32_t enc_len = hdr_len + flush_put_bits(pb); #else - uint32_t enc_len = rac_terminate(); + uint32_t enc_len = rac_terminate(slice_start); #endif - u8buf bs = u8buf(rc.bytestream_start); + u8buf bs = u8buf(slice_start); /* Append slice length */ u8vec4 enc_len_p = unpack8(enc_len); @@ -363,6 +364,7 @@ void finalize_slice(inout SliceContext sc, const uint slice_idx) void main(void) { const uint slice_idx = gl_WorkGroupID.y*gl_NumWorkGroups.x + gl_WorkGroupID.x; + slice_start = uint64_t(slice_data) + slice_idx*slice_size_max; rc = slice_ctx[slice_idx].c; encode_slice(slice_ctx[slice_idx], slice_idx); diff --git a/libavcodec/vulkan/ffv1_enc_setup.comp.glsl b/libavcodec/vulkan/ffv1_enc_setup.comp.glsl index 7f8f72f7ec..c57ba4074b 100644 --- a/libavcodec/vulkan/ffv1_enc_setup.comp.glsl +++ b/libavcodec/vulkan/ffv1_enc_setup.comp.glsl @@ -55,18 +55,18 @@ void init_slice(inout SliceContext sc, uint slice_idx) void put_usymbol(uint v) { bool is_nil = (v == 0); - put_rac_direct(rc_state[0], is_nil); + put_rac(rc_state[0], is_nil); if (is_nil) return; const int e = findMSB(v); for (int i = 0; i < e; i++) - put_rac_direct(rc_state[1 + min(i, 9)], true); - put_rac_direct(rc_state[1 + min(e, 9)], false); + put_rac(rc_state[1 + min(i, 9)], true); + put_rac(rc_state[1 + min(e, 9)], false); for (int i = e - 1; i >= 0; i--) - put_rac_direct(rc_state[22 + min(i, 9)], bool(bitfieldExtract(v, i, 1))); + put_rac(rc_state[22 + min(i, 9)], bool(bitfieldExtract(v, i, 1))); } shared uint hdr_sym[4 + 4 + 3]; @@ -95,7 +95,7 @@ void write_slice_header(inout SliceContext sc) put_usymbol(hdr_sym[i]); if (version >= 4) { - put_rac_direct(rc_state[0], sc.slice_reset_contexts); + put_rac(rc_state[0], sc.slice_reset_contexts); put_usymbol(sc.slice_coding_mode); if (sc.slice_coding_mode != 1 && colorspace == 1) { put_usymbol(sc.slice_rct_coef.y); diff --git a/libavcodec/vulkan/rangecoder.glsl b/libavcodec/vulkan/rangecoder.glsl index e4fb6557fa..549e0f0dda 100644 --- a/libavcodec/vulkan/rangecoder.glsl +++ b/libavcodec/vulkan/rangecoder.glsl @@ -31,7 +31,6 @@ layout (set = 0, binding = 0, scalar) readonly buffer rangecoder_buf { }; struct RangeCoder { - uint64_t bytestream_start; uint64_t bytestream; uint64_t bytestream_end; @@ -48,7 +47,6 @@ shared bool rc_dec[CONTEXT_SIZE]; void rac_init(u8buf data, uint buf_size) { - rc.bytestream_start = uint64_t(data); rc.bytestream = uint64_t(data); rc.bytestream_end = uint64_t(data) + buf_size; rc.low = 0; @@ -138,18 +136,12 @@ void put_rac_internal(const uint range1, bool bit) renorm_encoder(); } -void put_rac_direct(inout uint8_t state, bool bit) +void put_rac(inout uint8_t state, bool bit) { put_rac_internal((rc.range * state) >> 8, bit); state = zero_one_state[(uint(bit) << 8) + state]; } -void put_rac(uint64_t state, bool bit) -{ - put_rac_direct(u8buf(state).v, bit); -} - -/* Equiprobable bit */ void put_rac_equi(bool bit) { put_rac_internal(rc.range >> 1, bit); @@ -172,7 +164,7 @@ void put_rac_terminate(void) } /* Return the number of bytes written. */ -uint rac_terminate(void) +uint rac_terminate(uint64_t bytestream_start) { put_rac_terminate(); rc.range = uint16_t(0xFF); @@ -188,7 +180,7 @@ uint rac_terminate(void) debugPrintfEXT("Error: range < 0x100"); #endif - return uint(uint64_t(rc.bytestream) - uint64_t(rc.bytestream_start)); + return uint(uint64_t(rc.bytestream) - bytestream_start); } void rac_init_dec(u8buf data, uint buf_size) @@ -228,24 +220,19 @@ bool get_rac_internal(const uint range1) return bit; } -bool get_rac_direct(inout uint8_t state) +bool get_rac(inout uint8_t state) { bool bit = get_rac_internal(rc.range * state >> 8); state = zero_one_state[state + (bit ? 256 : 0)]; return bit; } -bool get_rac_noadapt(uint idx) +bool get_rac_state(uint idx) { rc_dec[idx] = true; return (rc_data[idx] = get_rac_internal(rc.range * rc_state[idx] >> 8)); } -bool get_rac(uint64_t state) -{ - return get_rac_direct(u8buf(state).v); -} - bool get_rac_equi(void) { return get_rac_internal(rc.range >> 1); _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
