[xiph-cvs] cvs commit: vorbis/lib scales.h

Monty xiphmont at xiph.org
Wed Mar 20 20:04:27 PST 2002



xiphmont    02/03/20 20:04:27

  Modified:    lib      scales.h
  Log:
  Uiver's improved IEEE754 32 bit float-specific todB optimization
  improvement.  It still needs to be made completely proof against
  optimization.

Revision  Changes    Path
1.22      +6 -71     vorbis/lib/scales.h

Index: scales.h
===================================================================
RCS file: /usr/local/cvsroot/vorbis/lib/scales.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- scales.h	2002/03/17 19:50:47	1.21
+++ scales.h	2002/03/21 04:04:26	1.22
@@ -11,7 +11,7 @@
  ********************************************************************
 
  function: linear scale -> dB, Bark and Mel scales
- last mod: $Id: scales.h,v 1.21 2002/03/17 19:50:47 xiphmont Exp $
+ last mod: $Id: scales.h,v 1.22 2002/03/21 04:04:26 xiphmont Exp $
 
  ********************************************************************/
 
@@ -36,78 +36,13 @@
   return(x);
 }
 
-static float todB_LOOKUP[256]={
-        -140.277330f, -139.633636f, -139.034372f, -138.473797f, 
-        -137.450747f, -136.535597f, -135.707743f, -134.951972f, 
-        -134.256730f, -133.613036f, -133.013772f, -132.453198f, 
-        -131.430147f, -130.514997f, -129.687144f, -128.931372f, 
-        -128.236130f, -127.592437f, -126.993172f, -126.432598f, 
-        -125.409547f, -124.494397f, -123.666544f, -122.910772f, 
-        -122.215530f, -121.571837f, -120.972572f, -120.411998f, 
-        -119.388947f, -118.473797f, -117.645944f, -116.890173f, 
-        -116.194930f, -115.551237f, -114.951972f, -114.391398f, 
-        -113.368347f, -112.453198f, -111.625344f, -110.869573f, 
-        -110.174331f, -109.530637f, -108.931372f, -108.370798f, 
-        -107.347748f, -106.432598f, -105.604744f, -104.848973f, 
-        -104.153731f, -103.510037f, -102.910773f, -102.350198f, 
-        -101.327148f, -100.411998f,  -99.584144f,  -98.828373f, 
-         -98.133131f,  -97.489437f,  -96.890173f,  -96.329598f, 
-         -95.306548f,  -94.391398f,  -93.563544f,  -92.807773f, 
-         -92.112531f,  -91.468837f,  -90.869573f,  -90.308998f, 
-         -89.285948f,  -88.370798f,  -87.542944f,  -86.787173f, 
-         -86.091931f,  -85.448237f,  -84.848973f,  -84.288398f, 
-         -83.265348f,  -82.350198f,  -81.522344f,  -80.766573f, 
-         -80.071331f,  -79.427637f,  -78.828373f,  -78.267799f, 
-         -77.244748f,  -76.329598f,  -75.501745f,  -74.745973f, 
-         -74.050731f,  -73.407038f,  -72.807773f,  -72.247199f, 
-         -71.224148f,  -70.308998f,  -69.481145f,  -68.725373f, 
-         -68.030131f,  -67.386438f,  -66.787173f,  -66.226599f, 
-         -65.203548f,  -64.288399f,  -63.460545f,  -62.704774f, 
-         -62.009531f,  -61.365838f,  -60.766573f,  -60.205999f, 
-         -59.182948f,  -58.267799f,  -57.439945f,  -56.684174f, 
-         -55.988932f,  -55.345238f,  -54.745973f,  -54.185399f, 
-         -53.162349f,  -52.247199f,  -51.419345f,  -50.663574f, 
-         -49.968332f,  -49.324638f,  -48.725374f,  -48.164799f, 
-         -47.141749f,  -46.226599f,  -45.398745f,  -44.642974f, 
-         -43.947732f,  -43.304038f,  -42.704774f,  -42.144199f, 
-         -41.121149f,  -40.205999f,  -39.378145f,  -38.622374f, 
-         -37.927132f,  -37.283438f,  -36.684174f,  -36.123599f, 
-         -35.100549f,  -34.185399f,  -33.357545f,  -32.601774f, 
-         -31.906532f,  -31.262838f,  -30.663574f,  -30.102999f, 
-         -29.079949f,  -28.164799f,  -27.336945f,  -26.581174f, 
-         -25.885932f,  -25.242238f,  -24.642974f,  -24.082400f, 
-         -23.059349f,  -22.144199f,  -21.316346f,  -20.560574f, 
-         -19.865332f,  -19.221639f,  -18.622374f,  -18.061800f, 
-         -17.038749f,  -16.123599f,  -15.295746f,  -14.539974f, 
-         -13.844732f,  -13.201039f,  -12.601774f,  -12.041200f, 
-         -11.018149f,  -10.103000f,   -9.275146f,   -8.519375f, 
-          -7.824132f,   -7.180439f,   -6.581174f,   -6.020600f, 
-          -4.997549f,   -4.082400f,   -3.254546f,   -2.498775f, 
-          -1.803533f,   -1.159839f,   -0.560574f,    0.000000f, 
-           1.023050f,    1.938200f,    2.766054f,    3.521825f, 
-	   4.217067f,    4.860761f,    5.460025f,    6.020600f, 
-           7.043650f,    7.958800f,    8.786654f,    9.542425f, 
-          10.237667f,   10.881361f,   11.480625f,   12.041200f, 
-          13.064250f,   13.979400f,   14.807254f,   15.563025f, 
-          16.258267f,   16.901961f,   17.501225f,   18.061800f, 
-          19.084850f,   20.000000f,   20.827854f,   21.583625f, 
-          22.278867f,   22.922561f,   23.521825f,   24.082400f, 
-          25.105450f,   26.020600f,   26.848453f,   27.604225f, 
-          28.299467f,   28.943161f,   29.542425f,   30.102999f, 
-          31.126050f,   32.041200f,   32.869053f,   33.624825f, 
-          34.320067f,   34.963760f,   35.563025f,   36.123599f, 
-          37.146650f,   38.061800f,   38.889653f,   39.645424f, 
-          40.340667f,   40.984360f,   41.583625f,   42.144199f, 
-          43.167250f,   44.082399f,   44.910253f,   45.666024f, 
-          46.361266f,   47.004960f,   47.604225f,   48.164799f, 
-          49.187850f,   50.102999f,   50.930853f,   51.686624f
-};
-
 static float todB(const float *x){
+  float calc;
   ogg_int32_t *i=(ogg_int32_t *)x;
-  ogg_int32_t temp=((*i&0x7fffffff)-0x33c7ffff)>>20;
-  if(temp<0)return -400.f;
-  return(todB_LOOKUP[temp]);
+  calc = ((*i) & 0x7fffffff);
+  calc *= 7.1771144e-7f;
+  calc += -764.27118f;
+  return calc;
 }
 
 #define todB_nn(x) todB(x)

<p><p><p>--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'cvs-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.



More information about the commits mailing list