* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
- * by the XIPHOPHORUS Company http://www.xiph.org/ *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
+ * by the Xiph.Org Foundation https://xiph.org/ *
* *
********************************************************************
function: linear scale -> dB, Bark and Mel scales
- last mod: $Id$
********************************************************************/
#include <math.h>
#include "os.h"
+#ifdef _MSC_VER
+/* MS Visual Studio doesn't have C99 inline keyword. */
+#define inline __inline
+#endif
+
/* 20log10(x) */
#define VORBIS_IEEE_FLOAT32 1
#ifdef VORBIS_IEEE_FLOAT32
-static float unitnorm(float x){
+static inline float unitnorm(float x){
union {
ogg_uint32_t i;
float f;
}
/* Segher was off (too high) by ~ .3 decibel. Center the conversion correctly. */
-static float todB(const float *x){
+static inline float todB(const float *x){
union {
ogg_uint32_t i;
float f;
#define todB(x) (*(x)==0?-400.f:log(*(x)**(x))*4.34294480f)
#define todB_nn(x) (*(x)==0.f?-400.f:log(*(x))*8.6858896f)
-#endif
+#endif
-#define fromdB(x) (exp((x)*.11512925f))
+#define fromdB(x) (exp((x)*.11512925f))
/* The bark scale equations are approximations, since the original
table was somewhat hand rolled. The below are chosen to have the
#define fromOC(o) (exp(((o)+5.965784f)*.693147f))
#endif
-