Mercurial > libavcodec.hg
changeset 1037:44a230c11d83 libavcodec
optimizing av_log2
author | michaelni |
---|---|
date | Mon, 27 Jan 2003 20:39:29 +0000 |
parents | c7922c5becf6 |
children | 2e4521b485a1 |
files | common.c common.h |
diffstat | 2 files changed, 30 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- 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,
--- 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);