1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-08-10 06:10:52 +02:00

vulkan_ffv1: slightly optimize the range decoder

GPUs have cmovs as standard.
This commit is contained in:
Lynne
2025-04-04 05:49:31 +00:00
parent d7772da728
commit defebd74c0

View File

@@ -219,7 +219,7 @@ void refill(inout RangeCoder c)
c.range <<= 8; c.range <<= 8;
c.low <<= 8; c.low <<= 8;
if (c.bytestream < c.bytestream_end) { if (c.bytestream < c.bytestream_end) {
c.low += u8buf(c.bytestream).v; c.low |= u8buf(c.bytestream).v;
c.bytestream++; c.bytestream++;
} else { } else {
overread++; overread++;
@@ -234,11 +234,10 @@ bool get_rac(inout RangeCoder c, uint64_t state)
int ranged = c.range + range1; int ranged = c.range + range1;
bool bit = c.low >= ranged; bool bit = c.low >= ranged;
int bv = bit ? 0xFFFFFFFF : 0; sb.v = zero_one_state[val + (bit ? 256 : 0)];
sb.v = zero_one_state[(bv & 0x100) + val];
c.low = c.low - (bv & ranged); c.low = c.low - (bit ? ranged : 0);
c.range = (ranged & ~bv) - (range1 & bv); c.range = (bit ? 0 : ranged) - (bit ? range1 : 0);
if (c.range < 0x100) if (c.range < 0x100)
refill(c); refill(c);