This was the fastest variant tested.
Showing the changes to libavcodec/vulkan (1 of 1 file). Show all
Unified · Split
| @@ -78,13 +78,11 @@ int get_isymbol(inout RangeCoder c, uint64_t state) · 77 unmodified lines | |||
| 78 | 78 | ||
| 79 | state += 21; | 79 | state += 21; |
| 80 | 80 | ||
| 81 | int a = 1 << e; | 81 | int a = 1; |
| 82 | int i; | 82 | for (int i = e - 1; i >= 0; i--) { |
| 83 | for (i = e - 1; i >= 9; i--) | 83 | a <<= 1; |
| 84 | a |= int(get_rac(c, state + 9)) << i; // 22..31 | 84 | a |= int(get_rac(c, state + min(i, 9))); // 22..31 |
| 85 | 85 | } | |
| 86 | for (; i >= 0; i--) | ||
| 87 | a |= int(get_rac(c, state + i)) << i; // 22..31 | ||
| 88 | 86 | ||
| 89 | return get_rac(c, state - 11 + min(e, 10)) ? -a : a; | 87 | return get_rac(c, state - 11 + min(e, 10)) ? -a : a; |
| 90 | } | 88 | } |