[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