[FFmpeg-cvslog] avcodec/rangecoder: eliminate main branch from renorm_encoder()

Michael Niedermayer git at videolan.org
Mon Dec 2 04:28:15 EET 2024


ffmpeg | branch: master | Michael Niedermayer <michael at niedermayer.cc> | Wed Oct 16 21:20:42 2024 +0200| [b2da4c33e31f85b9c755f2cdb08f5db694e90ca9] | committer: Michael Niedermayer

avcodec/rangecoder: eliminate main branch from renorm_encoder()

Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b2da4c33e31f85b9c755f2cdb08f5db694e90ca9
---

 libavcodec/rangecoder.h | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/libavcodec/rangecoder.h b/libavcodec/rangecoder.h
index cdd99eff56..15217a99a3 100644
--- a/libavcodec/rangecoder.h
+++ b/libavcodec/rangecoder.h
@@ -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++;



More information about the ffmpeg-cvslog mailing list