Put all the OS-dependent calls in os_support.h
authorjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Sat, 20 Oct 2007 14:04:02 +0000 (14:04 +0000)
committerjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Sat, 20 Oct 2007 14:04:02 +0000 (14:04 +0000)
git-svn-id: http://svn.xiph.org/trunk/speex@14021 0101bb08-14d6-0310-b084-bc0e0c8e3800

20 files changed:
libspeex/Makefile.am
libspeex/bits.c
libspeex/cb_search.c
libspeex/fftwrap.c
libspeex/filterbank.c
libspeex/jitter.c
libspeex/kiss_fft.c
libspeex/kiss_fftr.c
libspeex/math_approx.h
libspeex/mdf.c
libspeex/misc.h
libspeex/nb_celp.c
libspeex/os_support.h [new file with mode: 0644]
libspeex/preprocess.c
libspeex/resample.c
libspeex/sb_celp.c
libspeex/smallft.c
libspeex/speex.c
libspeex/speex_callbacks.c
libspeex/speex_header.c

index e3d0968..a5156da 100644 (file)
@@ -20,13 +20,13 @@ libspeexdsp_la_SOURCES = preprocess.c       smallft.c       lbr_48k_tables.c \
                                jitter.c        mdf.c fftwrap.c kiss_fft.c _kiss_fft_guts.h kiss_fft.h \
        kiss_fftr.c kiss_fftr.h filterbank.c resample.c
 
-noinst_HEADERS = lsp.h         nb_celp.h       lpc.h   lpc_bfin.h      ltp.h   quant_lsp.h \
-                               cb_search.h     filters.h       stack_alloc.h   vq.h    vq_sse.h        vq_arm4.h       vq_bfin.h \
-                               modes.h         sb_celp.h       vbr.h   misc.h  misc_bfin.h     ltp_sse.h       ltp_arm4.h \
-                               ltp_bfin.h      filters_sse.h   filters_arm4.h  filters_bfin.h  math_approx.h \
-                               smallft.h       arch.h  fixed_arm4.h    fixed_arm5e.h   fixed_bfin.h    fixed_debug.h \
-                               fixed_generic.h         cb_search_sse.h         cb_search_arm4.h        cb_search_bfin.h \
-               fftwrap.h pseudofloat.h lsp_bfin.h quant_lsp_bfin.h filterbank.h
+noinst_HEADERS =       arch.h  cb_search_arm4.h        cb_search_bfin.h        cb_search_sse.h \
+               filters.h       filters_arm4.h  filters_bfin.h  filters_sse.h   fixed_arm4.h \
+               fixed_arm5e.h   fixed_bfin.h    fixed_debug.h   lpc.h   lpc_bfin.h      ltp.h   ltp_arm4.h \
+               ltp_sse.h       math_approx.h   misc.h  misc_bfin.h     nb_celp.h       quant_lsp.h     sb_celp.h \
+               stack_alloc.h   vbr.h   vq.h    vq_arm4.h       vq_bfin.h       vq_sse.h cb_search.h fftwrap.h \
+       filterbank.h fixed_generic.h lsp.h lsp_bfin.h ltp_bfin.h modes.h os_support.h \
+       pseudofloat.h quant_lsp_bfin.h smallft.h vorbis_psy.h
 
 
 libspeex_la_LDFLAGS = -no-undefined -version-info @SPEEX_LT_CURRENT@:@SPEEX_LT_REVISION@:@SPEEX_LT_AGE@
index 2245ec6..09432a3 100644 (file)
@@ -38,6 +38,7 @@
 
 #include <speex/speex_bits.h>
 #include "misc.h"
+#include "os_support.h"
 
 /* Maximum size of the bit-stream (for fixed-size allocation) */
 #ifndef MAX_CHARS_PER_FRAME
index a0b668a..4c0a035 100644 (file)
@@ -38,6 +38,8 @@
 #include "stack_alloc.h"
 #include "vq.h"
 #include "misc.h"
+#include "math_approx.h"
+#include "os_support.h"
 
 #ifdef _USE_SSE
 #include "cb_search_sse.h"
index 35e2d05..f9f33b2 100644 (file)
@@ -41,6 +41,7 @@
 
 
 #include "misc.h"
+#include "os_support.h"
 
 #define MAX_FFT_SIZE 2048
 
index cb7a2bc..a79050d 100644 (file)
@@ -39,6 +39,7 @@
 #include "misc.h"
 #include <math.h>
 #include "math_approx.h"
+#include "os_support.h"
       
 #ifdef FIXED_POINT
 
index b778f15..b6bf687 100644 (file)
@@ -41,6 +41,7 @@
 #include <speex/speex.h>
 #include <speex/speex_bits.h>
 #include <speex/speex_jitter.h>
+#include "os_support.h"
 
 #ifndef NULL
 #define NULL 0
index e0ae2a9..3c6bf89 100644 (file)
@@ -20,6 +20,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 
 #include "_kiss_fft_guts.h"
 #include "misc.h"
+#include "os_support.h"
 
 /* The guts header contains all the multiplication and addition macros that are defined for
  fixed or floating point complex numbers.  It also delares the kf_ internal functions.
index 308b131..f6275b8 100644 (file)
@@ -16,6 +16,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 #include "config.h"
 #endif
 
+#include "os_support.h"
 #include "kiss_fftr.h"
 #include "_kiss_fft_guts.h"
 
index 8421d63..1b84943 100644 (file)
 #define spx_cos_norm(x) (cos((.5f*M_PI)*(x)))
 #define spx_atan atan
 
-#endif
+/** Generate a pseudo-random number */
+static inline spx_word16_t speex_rand(spx_word16_t std, spx_int32_t *seed)
+{
+   spx_word32_t res;
+   *seed = 1664525 * *seed + 1013904223;
+   res = MULT16_16(EXTRACT16(SHR32(*seed,16)),std);
+   return EXTRACT16(PSHR32(SUB32(res, SHR32(res, 3)),14));
+}
 
+#endif
 
 
 static inline spx_int16_t spx_ilog2(spx_uint32_t x)
@@ -106,6 +114,19 @@ static inline spx_int16_t spx_ilog4(spx_uint32_t x)
 
 #ifdef FIXED_POINT
 
+/** Generate a pseudo-random number */
+static inline spx_word16_t speex_rand(spx_word16_t std, spx_int32_t *seed)
+{
+   const unsigned int jflone = 0x3f800000;
+   const unsigned int jflmsk = 0x007fffff;
+   union {int i; float f;} ran;
+   *seed = 1664525 * *seed + 1013904223;
+   ran.i = jflone | (jflmsk & *seed);
+   ran.f -= 1.5;
+   return 3.4642*std*ran.f;
+}
+
+
 /* sqrt(x) ~= 0.22178 + 1.29227*x - 0.77070*x^2 + 0.25723*x^3 (for .25 < x < 1) */
 /*#define C0 3634
 #define C1 21173
index 5a6fa2f..ccf6860 100644 (file)
@@ -74,6 +74,7 @@
 #include "fftwrap.h"
 #include "pseudofloat.h"
 #include "math_approx.h"
+#include "os_support.h"
 
 #ifndef M_PI
 #define M_PI 3.14159265358979323846
index 3846f49..30b3146 100644 (file)
 #ifndef MISC_H
 #define MISC_H
 
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
 #ifndef SPEEX_VERSION
 #define SPEEX_MAJOR_VERSION 1         /**< Major Speex version. */
 #define SPEEX_MINOR_VERSION 1         /**< Minor Speex version. */
-#define SPEEX_MICRO_VERSION 14        /**< Micro Speex version. */
+#define SPEEX_MICRO_VERSION 15        /**< Micro Speex version. */
 #define SPEEX_EXTRA_VERSION ""        /**< Extra Speex version. */
-#define SPEEX_VERSION "speex-1.2beta2"  /**< Speex version string. */
+#define SPEEX_VERSION "speex-1.2beta3"  /**< Speex version string. */
 #endif
 
 /* A couple test to catch stupid option combinations */
@@ -90,138 +86,10 @@ static inline spx_int32_t le_int(spx_int32_t i)
 #endif
 }
 
-#define speex_fatal(str) _speex_fatal(str, __FILE__, __LINE__);
-#define speex_assert(cond) {if (!(cond)) {speex_fatal("assertion failed: " #cond);}}
-
-#ifndef RELEASE
-static inline void print_vec(float *vec, int len, char *name)
-{
-   int i;
-   printf ("%s ", name);
-   for (i=0;i<len;i++)
-      printf (" %f", vec[i]);
-   printf ("\n");
-}
-#endif
 
 #ifdef FIXED_DEBUG
 long long spx_mips=0;
 #endif
 
 
-/** Speex wrapper for calloc. To do your own dynamic allocation, all you need to do is replace this function, speex_realloc and speex_free */
-#ifndef OVERRIDE_SPEEX_ALLOC
-static inline void *speex_alloc (int size)
-{
-   return calloc(size,1);
-}
-#endif
-
-/** Same as speex_alloc, except that the area is only needed inside a Speex call (might cause problem with wideband though) */
-#ifndef OVERRIDE_SPEEX_ALLOC_SCRATCH
-static inline void *speex_alloc_scratch (int size)
-{
-   return calloc(size,1);
-}
-#endif
-
-/** Speex wrapper for realloc. To do your own dynamic allocation, all you need to do is replace this function, speex_alloc and speex_free */
-#ifndef OVERRIDE_SPEEX_REALLOC
-static inline void *speex_realloc (void *ptr, int size)
-{
-   return realloc(ptr, size);
-}
-#endif
-
-/** Speex wrapper for calloc. To do your own dynamic allocation, all you need to do is replace this function, speex_realloc and speex_alloc */
-#ifndef OVERRIDE_SPEEX_FREE
-static inline void speex_free (void *ptr)
-{
-   free(ptr);
-}
-#endif
-
-/** Same as speex_free, except that the area is only needed inside a Speex call (might cause problem with wideband though) */
-#ifndef OVERRIDE_SPEEX_FREE_SCRATCH
-static inline void speex_free_scratch (void *ptr)
-{
-   free(ptr);
-}
-#endif
-
-/** Print warning message with integer argument to stderr */
-#ifndef OVERRIDE_SPEEX_MOVE
-static inline void *speex_move (void *dest, void *src, int n)
-{
-   return memmove(dest,src,n);
-}
-#endif
-
-#ifndef OVERRIDE_SPEEX_FATAL
-static inline void _speex_fatal(const char *str, const char *file, int line)
-{
-   fprintf (stderr, "Fatal (internal) error in %s, line %d: %s\n", file, line, str);
-   exit(1);
-}
-#endif
-
-#ifndef OVERRIDE_SPEEX_WARNING
-static inline void speex_warning(const char *str)
-{
-#ifndef DISABLE_WARNINGS
-   fprintf (stderr, "warning: %s\n", str);
-#endif
-}
-#endif
-
-#ifndef OVERRIDE_SPEEX_WARNING_INT
-static inline void speex_warning_int(const char *str, int val)
-{
-#ifndef DISABLE_WARNINGS
-   fprintf (stderr, "warning: %s %d\n", str, val);
-#endif
-}
-#endif
-
-#ifndef OVERRIDE_SPEEX_NOTIFY
-static inline void speex_notify(const char *str)
-{
-#ifndef DISABLE_NOTIFICATIONS
-   fprintf (stderr, "notification: %s\n", str);
-#endif
-}
-#endif
-
-#ifdef FIXED_POINT
-/** Generate a pseudo-random number */
-static inline spx_word16_t speex_rand(spx_word16_t std, spx_int32_t *seed)
-{
-   spx_word32_t res;
-   *seed = 1664525 * *seed + 1013904223;
-   res = MULT16_16(EXTRACT16(SHR32(*seed,16)),std);
-   return EXTRACT16(PSHR32(SUB32(res, SHR32(res, 3)),14));
-}
-#else
-/** Generate a pseudo-random number */
-static inline spx_word16_t speex_rand(spx_word16_t std, spx_int32_t *seed)
-{
-   const unsigned int jflone = 0x3f800000;
-   const unsigned int jflmsk = 0x007fffff;
-   union {int i; float f;} ran;
-   *seed = 1664525 * *seed + 1013904223;
-   ran.i = jflone | (jflmsk & *seed);
-   ran.f -= 1.5;
-   return 3.4642*std*ran.f;
-}
-#endif
-
-#ifndef OVERRIDE_SPEEX_PUTC
-/** Speex wrapper for putc */
-static inline void _speex_putc(int ch, void *file)
-{
-   FILE *f = (FILE *)file;
-   fprintf(f, "%c", ch);
-}
-#endif
-
 #endif
index bf7a641..e308477 100644 (file)
@@ -47,6 +47,7 @@
 #include "vbr.h"
 #include "misc.h"
 #include "math_approx.h"
+#include "os_support.h"
 #include <speex/speex_callbacks.h>
 
 #ifdef VORBIS_PSYCHO
diff --git a/libspeex/os_support.h b/libspeex/os_support.h
new file mode 100644 (file)
index 0000000..8c89d4d
--- /dev/null
@@ -0,0 +1,151 @@
+/* Copyright (C) 2007 Jean-Marc Valin
+      
+   File: os_support.h
+   This is the (tiny) OS abstraction layer. Aside from math.h, this is the
+   only place where system headers are allowed.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are
+   met:
+
+   1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+   2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+   3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+   IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+   OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+   DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+   STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+   ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+/** Speex wrapper for calloc. To do your own dynamic allocation, all you need to do is replace this function, speex_realloc and speex_free */
+#ifndef OVERRIDE_SPEEX_ALLOC
+static inline void *speex_alloc (int size)
+{
+   return calloc(size,1);
+}
+#endif
+
+/** Same as speex_alloc, except that the area is only needed inside a Speex call (might cause problem with wideband though) */
+#ifndef OVERRIDE_SPEEX_ALLOC_SCRATCH
+static inline void *speex_alloc_scratch (int size)
+{
+   return calloc(size,1);
+}
+#endif
+
+/** Speex wrapper for realloc. To do your own dynamic allocation, all you need to do is replace this function, speex_alloc and speex_free */
+#ifndef OVERRIDE_SPEEX_REALLOC
+static inline void *speex_realloc (void *ptr, int size)
+{
+   return realloc(ptr, size);
+}
+#endif
+
+/** Speex wrapper for calloc. To do your own dynamic allocation, all you need to do is replace this function, speex_realloc and speex_alloc */
+#ifndef OVERRIDE_SPEEX_FREE
+static inline void speex_free (void *ptr)
+{
+   free(ptr);
+}
+#endif
+
+/** Same as speex_free, except that the area is only needed inside a Speex call (might cause problem with wideband though) */
+#ifndef OVERRIDE_SPEEX_FREE_SCRATCH
+static inline void speex_free_scratch (void *ptr)
+{
+   free(ptr);
+}
+#endif
+
+/** Print warning message with integer argument to stderr */
+#ifndef OVERRIDE_SPEEX_MOVE
+static inline void *speex_move (void *dest, void *src, int n)
+{
+   return memmove(dest,src,n);
+}
+#endif
+
+/** Print warning message with integer argument to stderr */
+#ifndef OVERRIDE_SPEEX_MOVE
+static inline void *speex_memset (void *s, int c, int n)
+{
+   return memset(s,c,n);
+}
+#endif
+
+
+#ifndef OVERRIDE_SPEEX_FATAL
+static inline void _speex_fatal(const char *str, const char *file, int line)
+{
+   fprintf (stderr, "Fatal (internal) error in %s, line %d: %s\n", file, line, str);
+   exit(1);
+}
+#endif
+
+#ifndef OVERRIDE_SPEEX_WARNING
+static inline void speex_warning(const char *str)
+{
+#ifndef DISABLE_WARNINGS
+   fprintf (stderr, "warning: %s\n", str);
+#endif
+}
+#endif
+
+#ifndef OVERRIDE_SPEEX_WARNING_INT
+static inline void speex_warning_int(const char *str, int val)
+{
+#ifndef DISABLE_WARNINGS
+   fprintf (stderr, "warning: %s %d\n", str, val);
+#endif
+}
+#endif
+
+#ifndef OVERRIDE_SPEEX_NOTIFY
+static inline void speex_notify(const char *str)
+{
+#ifndef DISABLE_NOTIFICATIONS
+   fprintf (stderr, "notification: %s\n", str);
+#endif
+}
+#endif
+
+#ifndef OVERRIDE_SPEEX_PUTC
+/** Speex wrapper for putc */
+static inline void _speex_putc(int ch, void *file)
+{
+   FILE *f = (FILE *)file;
+   fprintf(f, "%c", ch);
+}
+#endif
+
+#define speex_fatal(str) _speex_fatal(str, __FILE__, __LINE__);
+#define speex_assert(cond) {if (!(cond)) {speex_fatal("assertion failed: " #cond);}}
+
+#ifndef RELEASE
+static inline void print_vec(float *vec, int len, char *name)
+{
+   int i;
+   printf ("%s ", name);
+   for (i=0;i<len;i++)
+      printf (" %f", vec[i]);
+   printf ("\n");
+}
+#endif
index bbdb19f..01b1a9b 100644 (file)
@@ -66,6 +66,7 @@
 #include "fftwrap.h"
 #include "filterbank.h"
 #include "math_approx.h"
+#include "os_support.h"
 
 #ifndef M_PI
 #define M_PI 3.14159263
index 88ebbcc..0a0120b 100644 (file)
@@ -71,6 +71,7 @@ static void speex_free (void *ptr) {free(ptr);}
                
 #include "speex/speex_resampler.h"
 #include "misc.h"
+#include "os_support.h"
 #endif /* OUTSIDE_SPEEX */
 
 #include <math.h>
index 7fa6dce..d6e1432 100644 (file)
@@ -45,6 +45,7 @@
 #include "ltp.h"
 #include "misc.h"
 #include "math_approx.h"
+#include "os_support.h"
 
 #ifndef NULL
 #define NULL 0
index 269549d..369432d 100644 (file)
@@ -35,6 +35,7 @@
 #include <math.h>
 #include "smallft.h"
 #include "misc.h"
+#include "os_support.h"
 
 static void drfti1(int n, float *wa, int *ifac){
   static int ntryh[4] = { 4,2,3,5 };
index 846e021..3316b2f 100644 (file)
@@ -38,6 +38,7 @@
 
 #include "modes.h"
 #include <math.h>
+#include "os_support.h"
 
 #ifndef NULL
 #define NULL 0
index 682322e..9b69dc5 100644 (file)
@@ -38,6 +38,7 @@
 
 #include <speex/speex_callbacks.h>
 #include "misc.h"
+#include "os_support.h"
 
 int speex_inband_handler(SpeexBits *bits, SpeexCallback *callback_list, void *state)
 {
index 8e10851..38dba4a 100644 (file)
@@ -38,6 +38,7 @@
 #include "misc.h"
 #include <speex/speex_header.h>
 #include <speex/speex.h>
+#include "os_support.h"
 
 #ifndef NULL
 #define NULL 0