diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2024-10-16 14:53:57 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2024-12-02 03:14:46 +0100 |
commit | 832649986c2bd20943e9983d452ff28c50e6a180 (patch) | |
tree | 358fb7e9e45b987de721075634e1989bc5e4f8d7 /libavcodec/rangecoder.h | |
parent | c314a68d0462bff9a7a1fae37b71f98dcb4e7c04 (diff) | |
download | ffmpeg-832649986c2bd20943e9983d452ff28c50e6a180.tar.gz |
avcodec/rangecoder: Move refill check out of refill() function
If the function is not inlined, this is more efficient. Also
it allows calling refill() without the check
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/rangecoder.h')
-rw-r--r-- | libavcodec/rangecoder.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libavcodec/rangecoder.h b/libavcodec/rangecoder.h index 2248161bca..da13c453ed 100644 --- a/libavcodec/rangecoder.h +++ b/libavcodec/rangecoder.h @@ -112,7 +112,6 @@ static inline void put_rac(RangeCoder *c, uint8_t *const state, int bit) static inline void refill(RangeCoder *c) { - if (c->range < 0x100) { c->range <<= 8; c->low <<= 8; if (c->bytestream < c->bytestream_end) { @@ -120,7 +119,6 @@ static inline void refill(RangeCoder *c) c->bytestream++; } else c->overread ++; - } } static inline int get_rac(RangeCoder *c, uint8_t *const state) @@ -130,13 +128,15 @@ static inline int get_rac(RangeCoder *c, uint8_t *const state) c->range -= range1; if (c->low < c->range) { *state = c->zero_state[*state]; - refill(c); + if (c->range < 0x100) + refill(c); return 0; } else { c->low -= c->range; *state = c->one_state[*state]; c->range = range1; - refill(c); + if (c->range < 0x100) + refill(c); return 1; } } |