diff options
Diffstat (limited to 'lib/os.h')
-rw-r--r-- | lib/os.h | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/lib/os.h b/lib/os.h deleted file mode 100644 index f93e579a..00000000 --- a/lib/os.h +++ /dev/null @@ -1,163 +0,0 @@ -#ifndef _OS_H -#define _OS_H -/******************************************************************** - * * - * 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-2001 * - * by the XIPHOPHORUS Company http://www.xiph.org/ * - * * - ******************************************************************** - - function: #ifdef jail to whip a few platforms into the UNIX ideal. - last mod: $Id: os.h,v 1.27 2001/08/13 01:36:57 xiphmont Exp $ - - ********************************************************************/ - -#include <math.h> -#include <ogg/os_types.h> - -#ifndef _V_IFDEFJAIL_H_ -# define _V_IFDEFJAIL_H_ - -# ifdef __GNUC__ -# define STIN static inline -# elif _WIN32 -# define STIN static __inline -#else -# define STIN static -#endif - -#ifndef M_PI -# define M_PI (3.1415926536f) -#endif - -#ifdef _WIN32 -# include <malloc.h> -# define rint(x) (floor((x)+0.5f)) -# define NO_FLOAT_MATH_LIB -# define FAST_HYPOT(a, b) sqrt((a)*(a) + (b)*(b)) -#endif - -#ifdef HAVE_SQRTF -# define sqrt sqrtf -#endif -#ifdef HAVE_LOGF -# define log logf -#endif -#ifdef HAVE_EXPF -# define exp expf -#endif -#ifdef HAVE_ACOSF -# define acos acosf -#endif -#ifdef HAVE_ATANF -# define atan atanf -#endif -#ifdef HAVE_FREXPF -# define frexp frexpf -#endif -#ifdef HAVE_RINTF -# define rint rintf -#endif - -#ifndef FAST_HYPOT -# define FAST_HYPOT hypot -#endif - -#endif - -#ifdef HAVE_ALLOCA_H -# include <alloca.h> -#endif - -#ifdef USE_MEMORY_H -# include <memory.h> -#endif - -#ifndef min -# define min(x,y) ((x)>(y)?(y):(x)) -#endif - -#ifndef max -# define max(x,y) ((x)<(y)?(y):(x)) -#endif - -#if defined(__i386__) && defined(__GNUC__) && !defined(__BEOS__) -# define VORBIS_FPU_CONTROL -/* both GCC and MSVC are kinda stupid about rounding/casting to int. - Because of encapsulation constraints (GCC can't see inside the asm - block and so we end up doing stupid things like a store/load that - is collectively a noop), we do it this way */ - -/* we must set up the fpu before this works!! */ - -typedef ogg_int16_t vorbis_fpu_control; - -static inline void vorbis_fpu_setround(vorbis_fpu_control *fpu){ - ogg_int16_t ret; - ogg_int16_t temp; - __asm__ __volatile__("fnstcw %0\n\t" - "movw %0,%%dx\n\t" - "orw $62463,%%dx\n\t" - "movw %%dx,%1\n\t" - "fldcw %1\n\t":"=m"(ret):"m"(temp): "dx"); - *fpu=ret; -} - -static inline void vorbis_fpu_restore(vorbis_fpu_control fpu){ - __asm__ __volatile__("fldcw %0":: "m"(fpu)); -} - -/* assumes the FPU is in round mode! */ -static inline int vorbis_ftoi(double f){ /* yes, double! Otherwise, - we get extra fst/fld to - truncate precision */ - int i; - __asm__("fistl %0": "=m"(i) : "t"(f)); - return(i); -} -#endif - - -#if defined(_WIN32) && !defined(__GNUC__) -# define VORBIS_FPU_CONTROL - -typedef ogg_int16_t vorbis_fpu_control; - -static __inline int vorbis_ftoi(double f){ - int i; - __asm{ - fld f - fistp i - } - return i; -} - -static __inline void vorbis_fpu_setround(vorbis_fpu_control *fpu){ -} - -static __inline void vorbis_fpu_restore(vorbis_fpu_control fpu){ -} - -#endif - - -#ifndef VORBIS_FPU_CONTROL - -typedef int vorbis_fpu_control; - -static int vorbis_ftoi(double f){ - return (int)(f+.5); -} - -/* We don't have special code for this compiler/arch, so do it the slow way */ -# define vorbis_fpu_setround(vorbis_fpu_control) {} -# define vorbis_fpu_restore(vorbis_fpu_control) {} - -#endif - -#endif /* _OS_H */ |