diff options
author | Monty <xiphmont@xiph.org> | 2003-04-23 21:53:11 +0000 |
---|---|---|
committer | Monty <xiphmont@xiph.org> | 2003-04-23 21:53:11 +0000 |
commit | 65123df53f623f215d5c29ee6ff2c30149a73cd5 (patch) | |
tree | 6eafede99a47b7ce3af8ec4c0eb2b9857bd47e41 /floor0.c | |
parent | 46ec6d77c8a88b45e003eb343522d5a0e9a86705 (diff) | |
download | tremor-65123df53f623f215d5c29ee6ff2c30149a73cd5.tar.gz |
Eliminate two small (redundant) dB lookups in floor0 and use the
version in floor1.
git-svn-id: https://svn.xiph.org/branches/lowmem-branch/Tremor@4632 0101bb08-14d6-0310-b084-bc0e0c8e3800
Diffstat (limited to 'floor0.c')
-rw-r--r-- | floor0.c | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -26,6 +26,7 @@ #include "os.h" #define LSP_FRACBITS 14 +extern const ogg_int32_t FLOOR_fromdB_LOOKUP[]; /*************** LSP decode ********************/ @@ -48,6 +49,21 @@ static inline ogg_int32_t vorbis_invsqlook_i(long a,long e){ /* interpolated lookup based fromdB function, domain -140dB to 0dB only */ /* a is in n.12 format */ +#ifdef _LOW_ACCURACY_ +static inline ogg_int32_t vorbis_fromdBlook_i(long a){ + if(a>0) return 0x7fffffff; + if(a<(-140<<12)) return 0; + return FLOOR_fromdB_LOOKUP[((a+140)*467)>>20]<<9; +} +#else +static inline ogg_int32_t vorbis_fromdBlook_i(long a){ + if(a>0) return 0x7fffffff; + if(a<(-140<<12)) return 0; + return FLOOR_fromdB_LOOKUP[((a+(140<<12))*467)>>20]; +} +#endif + +#if 0 static inline ogg_int32_t vorbis_fromdBlook_i(long a){ int i=(-a)>>(12-FROMdB2_SHIFT); if(i<0) return 0x7fffffff; @@ -55,6 +71,7 @@ static inline ogg_int32_t vorbis_fromdBlook_i(long a){ return FROMdB_LOOKUP[i>>FROMdB_SHIFT] * FROMdB2_LOOKUP[i&FROMdB2_MASK]; } +#endif /* interpolated lookup based cos function, domain 0 to PI only */ /* a is in 0.16 format, where 0==0, 2^^16-1==PI, return 0.14 */ |