Showing the changes to libavcodec (1 of 1 file). Show all
Unified · Split
| @@ -61,17 +61,12 @@ void ff_build_rac_states(RangeCoder *c, int factor, int max_p); · 60 unmodified lines | ||
| 61 | 61 | |
| 62 | 62 | static inline void renorm_encoder(RangeCoder *c) |
| 63 | 63 | { |
| 64 | − // FIXME: optimize | |
| 65 | − if (c->low <= 0xFF00) { | |
| 66 | − *c->bytestream = c->outstanding_byte; | |
| 64 | + if (c->low - 0xFF01 >= 0x10000 - 0xFF01U) { | |
| 65 | + int mask = c->low - 0xFF01 >> 31; | |
| 66 | + *c->bytestream = c->outstanding_byte + 1 + mask; | |
| 67 | 67 | c->bytestream += c->outstanding_byte >= 0; |
| 68 | 68 | for (; c->outstanding_count; c->outstanding_count--) |
| 69 | − *c->bytestream++ = 0xFF; | |
| 70 | − c->outstanding_byte = c->low >> 8; | |
| 71 | − } else if (c->low >= 0x10000) { | |
| 72 | − *c->bytestream++ = c->outstanding_byte + 1; | |
| 73 | − for (; c->outstanding_count; c->outstanding_count--) | |
| 74 | − *c->bytestream++ = 0x00; | |
| 69 | + *c->bytestream++ = mask; | |
| 75 | 70 | c->outstanding_byte = c->low >> 8; |
| 76 | 71 | } else { |
| 77 | 72 | c->outstanding_count++; |