[FFmpeg-devel] [PATCH 4/4] avcodec/apedec: use ff_clz() instead of while loop

Paul B Mahol onemda at gmail.com
Tue Oct 6 03:17:14 EEST 2020


Signed-off-by: Paul B Mahol <onemda at gmail.com>
---
 libavcodec/apedec.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
index 8fe7b5ee86..ea36247eb9 100644
--- a/libavcodec/apedec.c
+++ b/libavcodec/apedec.c
@@ -575,14 +575,10 @@ static inline int ape_decode_value_3990(APEContext *ctx, APERice *rice)
         base = range_decode_culfreq(ctx, pivot);
         range_decode_update(ctx, 1, base);
     } else {
-        int base_hi = pivot, base_lo;
-        int bbits = 0;
+        int base_hi, base_lo;
+        int bbits = 16 - ff_clz(pivot);
 
-        while (base_hi & ~0xFFFF) {
-            base_hi >>= 1;
-            bbits++;
-        }
-        base_hi = range_decode_culfreq(ctx, base_hi + 1);
+        base_hi = range_decode_culfreq(ctx, (pivot >> bbits) + 1);
         range_decode_update(ctx, 1, base_hi);
         base_lo = range_decode_culfreq(ctx, 1 << bbits);
         range_decode_update(ctx, 1, base_lo);
-- 
2.17.1



More information about the ffmpeg-devel mailing list