This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 64f848890ca137b93e647701af0122235606ad53 Author: Lynne <[email protected]> AuthorDate: Wed May 13 00:10:38 2026 +0900 Commit: Lynne <[email protected]> CommitDate: Thu May 14 02:55:52 2026 +0900 vulkan/prores_raw: use 16-bit/32-bit uints where needed 16-bit ints can overflow. --- libavcodec/vulkan/prores_raw_decode.comp.glsl | 47 +++++++++++++-------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/libavcodec/vulkan/prores_raw_decode.comp.glsl b/libavcodec/vulkan/prores_raw_decode.comp.glsl index 1c18256f0a..9e28bd24b6 100644 --- a/libavcodec/vulkan/prores_raw_decode.comp.glsl +++ b/libavcodec/vulkan/prores_raw_decode.comp.glsl @@ -87,31 +87,31 @@ const int16_t ln_cb[LN_CB_MAX + 1] = { I16( 51) }; -int16_t get_value(int16_t codebook) +int get_value(int16_t codebook) { - const int16_t switch_bits = codebook >> 8; - const int16_t rice_order = codebook & I16(0xf); - const int16_t exp_order = (codebook >> 4) & I16(0xf); + const int switch_bits = int(codebook >> 8); + const int rice_order = int(codebook & I16(0xf)); + const int exp_order = int((codebook >> 4) & I16(0xf)); uint32_t b = show_bits(gb, 32); if (expectEXT(b == 0, false)) - return I16(0); - int16_t q = I16(31) - I16(findMSB(b)); + return 0; + int q = 31 - findMSB(b); if ((b & 0x80000000) != 0) { skip_bits(gb, 1 + rice_order); - return I16((b & 0x7FFFFFFF) >> (31 - rice_order)); + return int((b & 0x7FFFFFFF) >> (31 - rice_order)); } if (q <= switch_bits) { skip_bits(gb, q + rice_order + 1); - return I16((q << rice_order) + + return int((q << rice_order) + (((b << (q + 1)) >> 1) >> (31 - rice_order))); } - int16_t bits = exp_order + (q << 1) - switch_bits; + int bits = exp_order + (q << 1) - switch_bits; skip_bits(gb, bits); - return I16((b >> (32 - bits)) + + return int((b >> (32 - bits)) + ((switch_bits + 1) << rice_order) - (1 << exp_order)); } @@ -126,28 +126,29 @@ void store_val(ivec2 offs, int blk, int c, int16_t v) void read_dc_vals(ivec2 offs, int nb_blocks) { - int16_t dc, dc_add; + int dc; + int16_t dc_add; int16_t prev_dc = I16(0), sign = I16(0); /* Special handling for first block */ dc = get_value(I16(700)); - prev_dc = (dc >> 1) ^ -(dc & I16(1)); + prev_dc = I16((dc >> 1) ^ -(dc & 1)); store_val(offs, 0, 0, prev_dc); for (int n = 1; n < nb_blocks; n++) { if (expectEXT(left_bits(gb) <= 0, false)) break; - uint8_t dc_codebook; + int16_t dc_codebook; if ((n & 15) == 1) - dc_codebook = uint8_t(100); + dc_codebook = I16(100); else - dc_codebook = dc_cb[min(TODCCODEBOOK(dc), 13 - 1)]; + dc_codebook = I16(dc_cb[min(TODCCODEBOOK(dc), 13 - 1)]); dc = get_value(dc_codebook); - sign = sign ^ dc & int16_t(1); - dc_add = (-sign ^ I16(TODCCODEBOOK(dc))) + sign; + sign ^= I16(dc & 1); + dc_add = I16((-int(sign) ^ TODCCODEBOOK(dc)) + int(sign)); sign = I16(dc_add < 0); prev_dc += dc_add; @@ -161,7 +162,7 @@ void read_ac_vals(ivec2 offs, int nb_blocks) const int log2_nb_blocks = findMSB(nb_blocks); const int block_mask = (1 << log2_nb_blocks) - 1; - int16_t ac, rn, ln; + int ac, rn, ln; int16_t ac_codebook = I16(49); int16_t rn_codebook = I16( 0); int16_t ln_codebook = I16(66); @@ -173,18 +174,16 @@ void read_ac_vals(ivec2 offs, int nb_blocks) break; ln = get_value(ln_codebook); - for (int i = 0; i < ln; i++) { + int loop_end = min(ln, nb_codes - n); + for (int i = 0; i < loop_end; i++) { if (expectEXT(left_bits(gb) <= 0, false)) break; - if (expectEXT(n >= nb_codes, false)) - break; - ac = get_value(ac_codebook); ac_codebook = ac_cb[min(ac, 95 - 1)]; sign = -int16_t(get_bit(gb)); - val = ((ac + I16(1)) ^ sign) - sign; + val = I16(((ac + 1) ^ int(sign)) - int(sign)); store_val(offs, n & block_mask, n >> log2_nb_blocks, val); n++; @@ -206,7 +205,7 @@ void read_ac_vals(ivec2 offs, int nb_blocks) ac = get_value(ac_codebook); sign = -int16_t(get_bit(gb)); - val = ((ac + I16(1)) ^ sign) - sign; + val = I16(((ac + 1) ^ int(sign)) - int(sign)); store_val(offs, n & block_mask, n >> log2_nb_blocks, val); ac_codebook = ac_cb[min(ac, 95 - 1)]; _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
