avcodec/rangecoder: eliminate main branch from renorm_encoder()

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
Michael Niedermayer 2024-10-16 21:20:42 +02:00
parent 18922f4ae3
commit b2da4c33e3
No known key found for this signature in database
GPG Key ID: B18E8928B3948D64

View File

@ -61,17 +61,12 @@ void ff_build_rac_states(RangeCoder *c, int factor, int max_p);
static inline void renorm_encoder(RangeCoder *c)
{
// FIXME: optimize
if (c->low <= 0xFF00) {
*c->bytestream = c->outstanding_byte;
if (c->low - 0xFF01 >= 0x10000 - 0xFF01U) {
int mask = c->low - 0xFF01 >> 31;
*c->bytestream = c->outstanding_byte + 1 + mask;
c->bytestream += c->outstanding_byte >= 0;
for (; c->outstanding_count; c->outstanding_count--)
*c->bytestream++ = 0xFF;
c->outstanding_byte = c->low >> 8;
} else if (c->low >= 0x10000) {
*c->bytestream++ = c->outstanding_byte + 1;
for (; c->outstanding_count; c->outstanding_count--)
*c->bytestream++ = 0x00;
*c->bytestream++ = mask;
c->outstanding_byte = c->low >> 8;
} else {
c->outstanding_count++;