machine.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.  * Machine dependent defines/includes for LAME.
  3.  *
  4.  * Copyright (c) 1999 A.L. Faber
  5.  *
  6.  * This library is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU Library General Public
  8.  * License as published by the Free Software Foundation; either
  9.  * version 2 of the License, or (at your option) any later version.
  10.  *
  11.  * This library is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.  * Library General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU Library General Public
  17.  * License along with this library; if not, write to the
  18.  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  19.  * Boston, MA 02111-1307, USA.
  20.  */
  21. #ifndef MACHINE_H_INCLUDED
  22. #define MACHINE_H_INCLUDED
  23. #include        <stdio.h>
  24. #include        <string.h>
  25. #include        <math.h>
  26. #include        <stdlib.h>
  27. #include <ctype.h>
  28. #include <signal.h>
  29. #include <sys/types.h>
  30. #include <sys/stat.h>
  31. #include <fcntl.h>
  32. #include <errno.h>
  33. /* three different types of pow() functions:  
  34.    1. table lookup   
  35.    2. pow()
  36.    3. exp()   on some machines this is claimed to be faster than pow()
  37. */
  38. #define POW20(x)  pow20[x]
  39. /*
  40. #define POW20(x)  pow(2.0,((double)(x)-210)*.25)
  41. #define POW20(x)  exp( ((double)(x)-210)*(.25*LOG2) )
  42. */
  43. #define IPOW20(x)  ipow20[x]
  44. /*
  45. #define IPOW20(x)  exp( -((double)(x)-210)*.1875*LOG2 ) 
  46. #define IPOW20(x)  pow(2.0,-((double)(x)-210)*.1875)
  47. */
  48. #if ( defined(_MSC_VER) && !defined(INLINE))
  49. # define INLINE _inline
  50. #elif defined(__SASC) || defined(__GNUC__)
  51. # define INLINE __inline
  52. #else
  53. # define INLINE
  54. #endif
  55. #if ( defined(_MSC_VER))
  56. # pragma warning( disable : 4244 )
  57. # pragma warning( disable : 4305 )
  58. #endif
  59. #if ( defined(_MSC_VER) || defined(__BORLANDC__) )
  60. # define WIN32_LEAN_AND_MEAN
  61. # include <windows.h>
  62. #else
  63. typedef float FLOAT;
  64. #endif
  65. /* MH: the x86 asm quantization routines in quantize-pvt.c
  66.    are designed to work only with 8-byte doubles or 4-byte
  67.    floats. if you use a different type (e.g. 10-byte extended
  68.    precision long doubles, as supported by ICL), you will need
  69.    to disable the ASM routines (or fix them :) */
  70. #define FLOAT8_is_double
  71. typedef double FLOAT8;  
  72. /*#define FLOAT8_is_float*/
  73. /*typedef float FLOAT8;  */
  74. #if defined (_WIN32) && !defined (__CYGWIN__)
  75. typedef unsigned long u_long;
  76. typedef unsigned int u_int;
  77. typedef unsigned short u_short;
  78. typedef unsigned char u_char;
  79. #elif defined (__DECALPHA__)
  80. #       do nothing
  81. #elif !defined (__GNUC__) || defined (__STRICT_ANSI__)
  82. typedef unsigned long u_long;
  83. typedef unsigned int u_int;
  84. typedef unsigned short u_short;
  85. typedef unsigned char u_char;
  86. #endif
  87. #endif