# HG changeset patch # User michaelni # Date 1043699969 0 # Node ID 44a230c11d83234ad6c80ccf3b4791ac841e69e9 # Parent c7922c5becf60392cb0846ab6bdc5ce6f0af7bc4 optimizing av_log2 diff -r c7922c5becf6 -r 44a230c11d83 common.c --- a/common.c Mon Jan 27 09:21:30 2003 +0000 +++ b/common.c Mon Jan 27 20:39:29 2003 +0000 @@ -27,6 +27,17 @@ 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11 }; +const uint8_t ff_log2_tab[256]={ + 0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 +}; + void init_put_bits(PutBitContext *s, UINT8 *buffer, int buffer_size, void *opaque, diff -r c7922c5becf6 -r 44a230c11d83 common.h --- a/common.h Mon Jan 27 09:21:30 2003 +0000 +++ b/common.h Mon Jan 27 20:39:29 2003 +0000 @@ -804,6 +804,7 @@ #endif /* misc math functions */ +extern const uint8_t ff_log2_tab[256]; static inline int av_log2(unsigned int v) { @@ -818,20 +819,26 @@ v >>= 8; n += 8; } - if (v & 0xf0) { - v >>= 4; - n += 4; - } - if (v & 0xc) { - v >>= 2; - n += 2; - } - if (v & 0x2) { - n++; - } + n += ff_log2_tab[v]; + return n; } +static inline int av_log2_16bit(unsigned int v) +{ + int n; + + n = 0; + if (v & 0xff00) { + v >>= 8; + n += 8; + } + n += ff_log2_tab[v]; + + return n; +} + + /* median of 3 */ static inline int mid_pred(int a, int b, int c) { @@ -861,7 +868,7 @@ } /* math */ -extern const UINT8 ff_sqrt_tab[128]; +extern const uint8_t ff_sqrt_tab[128]; int ff_gcd(int a, int b);