summaryrefslogtreecommitdiff
path: root/floor0.c
diff options
context:
space:
mode:
authorMonty <xiphmont@xiph.org>2003-04-23 21:53:11 +0000
committerMonty <xiphmont@xiph.org>2003-04-23 21:53:11 +0000
commit65123df53f623f215d5c29ee6ff2c30149a73cd5 (patch)
tree6eafede99a47b7ce3af8ec4c0eb2b9857bd47e41 /floor0.c
parent46ec6d77c8a88b45e003eb343522d5a0e9a86705 (diff)
downloadtremor-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.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/floor0.c b/floor0.c
index 58da923..509bcb5 100644
--- a/floor0.c
+++ b/floor0.c
@@ -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 */