aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/vulkan
diff options
context:
space:
mode:
authorIndecisiveTurtle <geoster3d@gmail.com>2024-11-27 21:18:05 +0200
committerLynne <dev@lynne.ee>2024-11-28 09:31:43 +0900
commitf794ed48c09cfb31611cb4fe4bf7df32339f12eb (patch)
tree3988f200f4c757eb16ac8e893a6c0d30ab43667b /libavcodec/vulkan
parent4e1a91112d6732230f43777aed8fb7e9250036b4 (diff)
downloadffmpeg-f794ed48c09cfb31611cb4fe4bf7df32339f12eb.tar.gz
vulkan/common: Fix off-by-one error in flush_put_bits
If caller wrote a divisible by eight number of bits it would write an extra byte. Also increment by to_write instead of BUF_BYTES which overly pads the bitstream.
Diffstat (limited to 'libavcodec/vulkan')
-rw-r--r--libavcodec/vulkan/common.comp4
1 files changed, 2 insertions, 2 deletions
diff --git a/libavcodec/vulkan/common.comp b/libavcodec/vulkan/common.comp
index a28701584e..17c18934e6 100644
--- a/libavcodec/vulkan/common.comp
+++ b/libavcodec/vulkan/common.comp
@@ -141,12 +141,12 @@ uint32_t flush_put_bits(inout PutBitContext pb)
pb.bit_buf <<= pb.bit_left;
if (pb.bit_left < BUF_BITS) {
- uint to_write = ((BUF_BITS - pb.bit_left) >> 3) + 1;
+ uint to_write = ((BUF_BITS - pb.bit_left - 1) >> 3) + 1;
u8buf bs = u8buf(pb.buf);
for (int i = 0; i < to_write; i++)
bs[i].v = BYTE_EXTRACT(pb.bit_buf, BUF_BYTES - uint8_t(1) - i);
- pb.buf = uint64_t(bs) + BUF_BYTES;
+ pb.buf = uint64_t(bs) + to_write;
}
pb.bit_left = BUF_BITS;