History

vulkan_ffv1: slightly optimize the range decoder

GPUs have cmovs as standard.

Lynne committed 1 year ago

Commit defebd71 parent d7772da1 file · +4 −5Browse files

Showing the changes to libavcodec (1 of 1 file). Show all

Unified · Split

libavcodec/vulkan/rangecoder.comp+4−5
@@ -219,7 +219,7 @@ void refill(inout RangeCoder c) · 218 unmodified lines
219 c.range <<= 8;219 c.range <<= 8;
220 c.low <<= 8;220 c.low <<= 8;
221 if (c.bytestream < c.bytestream_end) {221 if (c.bytestream < c.bytestream_end) {
222 c.low += u8buf(c.bytestream).v;222 c.low |= u8buf(c.bytestream).v;
223 c.bytestream++;223 c.bytestream++;
224 } else {224 } else {
225 overread++;225 overread++;
@@ -234,11 +234,10 @@ bool get_rac(inout RangeCoder c, uint64_t state) · 8 unmodified lines
234 int ranged = c.range + range1;234 int ranged = c.range + range1;
235 235
236 bool bit = c.low >= ranged;236 bool bit = c.low >= ranged;
237 int bv = bit ? 0xFFFFFFFF : 0;237 sb.v = zero_one_state[val + (bit ? 256 : 0)];
238 sb.v = zero_one_state[(bv & 0x100) + val];
239 238
240 c.low = c.low - (bv & ranged);239 c.low = c.low - (bit ? ranged : 0);
241 c.range = (ranged & ~bv) - (range1 & bv);240 c.range = (bit ? 0 : ranged) - (bit ? range1 : 0);
242 241
243 if (c.range < 0x100)242 if (c.range < 0x100)
244 refill(c);243 refill(c);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t