From ff0c5bfdbf5e8db00256c01995b570ac0a9fbb05 Mon Sep 17 00:00:00 2001
From: Ehsan Akhgari <ehsan@mozilla.com>
Date: Tue, 4 Dec 2012 19:59:05 -0500
Subject: [PATCH] Bug 818327 - Make libspeex's resampler usable; r=padenot

DONTBUILD since this is NPOTB
---
 media/libspeex_resampler/src/Makefile.in      |   2 +
 .../src/speex_config_types.h                  |  11 ++
 media/libspeex_resampler/src/speex_types.h    | 130 ++++++++++++++++++
 media/libspeex_resampler/update.sh            |   2 +
 4 files changed, 145 insertions(+)
 create mode 100644 media/libspeex_resampler/src/speex_config_types.h
 create mode 100644 media/libspeex_resampler/src/speex_types.h

diff --git a/media/libspeex_resampler/src/Makefile.in b/media/libspeex_resampler/src/Makefile.in
index fe6046b4426f..2d80d5d97b3a 100644
--- a/media/libspeex_resampler/src/Makefile.in
+++ b/media/libspeex_resampler/src/Makefile.in
@@ -34,7 +34,9 @@ CSRCS = \
     $(NULL)
 
 EXPORTS_speex = \
+    speex_config_types.h \
     speex_resampler.h \
+    speex_types.h \
     $(NULL)
 
 include $(topsrcdir)/config/rules.mk
diff --git a/media/libspeex_resampler/src/speex_config_types.h b/media/libspeex_resampler/src/speex_config_types.h
new file mode 100644
index 000000000000..095257b2f739
--- /dev/null
+++ b/media/libspeex_resampler/src/speex_config_types.h
@@ -0,0 +1,11 @@
+#ifndef __SPEEX_TYPES_H__
+#define __SPEEX_TYPES_H__
+
+/* these are filled in by configure */
+typedef uint16_t spx_int16_t;
+typedef unsigned uint16_t spx_uint16_t;
+typedef uint32_t spx_int32_t;
+typedef unsigned uint32_t spx_uint32_t;
+
+#endif
+
diff --git a/media/libspeex_resampler/src/speex_types.h b/media/libspeex_resampler/src/speex_types.h
new file mode 100644
index 000000000000..59bb5b435f6b
--- /dev/null
+++ b/media/libspeex_resampler/src/speex_types.h
@@ -0,0 +1,130 @@
+/* speex_types.h taken from libogg */
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * 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 Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: #ifdef jail to whip a few platforms into the UNIX ideal.
+ last mod: $Id: os_types.h 7524 2004-08-11 04:20:36Z conrad $
+
+ ********************************************************************/
+/**
+   @file speex_types.h
+   @brief Speex types
+*/
+#ifndef _SPEEX_TYPES_H
+#define _SPEEX_TYPES_H
+
+#if defined(_WIN32) 
+
+#  if defined(__CYGWIN__)
+#    include <_G_config.h>
+     typedef _G_int32_t spx_int32_t;
+     typedef _G_uint32_t spx_uint32_t;
+     typedef _G_int16_t spx_int16_t;
+     typedef _G_uint16_t spx_uint16_t;
+#  elif defined(__MINGW32__)
+     typedef short spx_int16_t;
+     typedef unsigned short spx_uint16_t;
+     typedef int spx_int32_t;
+     typedef unsigned int spx_uint32_t;
+#  elif defined(__MWERKS__)
+     typedef int spx_int32_t;
+     typedef unsigned int spx_uint32_t;
+     typedef short spx_int16_t;
+     typedef unsigned short spx_uint16_t;
+#  else
+     /* MSVC/Borland */
+     typedef __int32 spx_int32_t;
+     typedef unsigned __int32 spx_uint32_t;
+     typedef __int16 spx_int16_t;
+     typedef unsigned __int16 spx_uint16_t;
+#  endif
+
+#elif defined(__MACOS__)
+
+#  include <sys/types.h>
+   typedef SInt16 spx_int16_t;
+   typedef UInt16 spx_uint16_t;
+   typedef SInt32 spx_int32_t;
+   typedef UInt32 spx_uint32_t;
+
+#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */
+
+#  include <sys/types.h>
+   typedef int16_t spx_int16_t;
+   typedef u_int16_t spx_uint16_t;
+   typedef int32_t spx_int32_t;
+   typedef u_int32_t spx_uint32_t;
+
+#elif defined(__BEOS__)
+
+   /* Be */
+#  include <inttypes.h>
+   typedef int16_t spx_int16_t;
+   typedef u_int16_t spx_uint16_t;
+   typedef int32_t spx_int32_t;
+   typedef u_int32_t spx_uint32_t;
+
+#elif defined (__EMX__)
+
+   /* OS/2 GCC */
+   typedef short spx_int16_t;
+   typedef unsigned short spx_uint16_t;
+   typedef int spx_int32_t;
+   typedef unsigned int spx_uint32_t;
+
+#elif defined (DJGPP)
+
+   /* DJGPP */
+   typedef short spx_int16_t;
+   typedef int spx_int32_t;
+   typedef unsigned int spx_uint32_t;
+
+#elif defined(R5900)
+
+   /* PS2 EE */
+   typedef int spx_int32_t;
+   typedef unsigned spx_uint32_t;
+   typedef short spx_int16_t;
+
+#elif defined(__SYMBIAN32__)
+
+   /* Symbian GCC */
+   typedef signed short spx_int16_t;
+   typedef unsigned short spx_uint16_t;
+   typedef signed int spx_int32_t;
+   typedef unsigned int spx_uint32_t;
+
+#elif defined(CONFIG_TI_C54X) || defined (CONFIG_TI_C55X)
+
+   typedef short spx_int16_t;
+   typedef unsigned short spx_uint16_t;
+   typedef long spx_int32_t;
+   typedef unsigned long spx_uint32_t;
+
+#elif defined(CONFIG_TI_C6X)
+
+   typedef short spx_int16_t;
+   typedef unsigned short spx_uint16_t;
+   typedef int spx_int32_t;
+   typedef unsigned int spx_uint32_t;
+
+#else
+
+# ifdef _BUILD_SPEEX
+#  include "include/speex/speex_config_types.h"
+#else
+#  include <speex/speex_config_types.h>
+#endif
+
+#endif
+
+#endif  /* _SPEEX_TYPES_H */
diff --git a/media/libspeex_resampler/update.sh b/media/libspeex_resampler/update.sh
index a77c5e27ecd2..01a3340081a0 100644
--- a/media/libspeex_resampler/update.sh
+++ b/media/libspeex_resampler/update.sh
@@ -11,5 +11,7 @@ cp $1/libspeex/arch.h src
 cp $1/libspeex/stack_alloc.h src
 cp $1/libspeex/fixed_generic.h src
 cp $1/include/speex/speex_resampler.h src
+cp $1/include/speex/speex_types.h src
+sed -e 's/@SIZE16@/uint16_t/g' -e 's/@SIZE32@/uint32_t/g' < $1/include/speex/speex_config_types.h.in > src/speex_config_types.h
 cp $1/AUTHORS .
 cp $1/COPYING .