mirror of
https://github.com/ShaYmez/MMDVM_CM.git
synced 2024-12-22 09:10:57 -05:00
202 lines
5.5 KiB
C
202 lines
5.5 KiB
C
/*
|
|
* Project 25 IMBE Encoder/Decoder Fixed-Point implementation
|
|
* Developed by Pavel Yazev E-mail: pyazev@gmail.com
|
|
* Version 1.0 (c) Copyright 2009
|
|
*
|
|
* This is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 3, or (at your option)
|
|
* any later version.
|
|
*
|
|
* The software is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
* See the GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this; see the file COPYING. If not, write to the Free
|
|
* Software Foundation, Inc., 51 Franklin Street, Boston, MA
|
|
* 02110-1301, USA.
|
|
*/
|
|
/*
|
|
********************************************************************************
|
|
*
|
|
* GSM AMR speech codec Version 7.4.0 January 31, 2000
|
|
*
|
|
********************************************************************************
|
|
*
|
|
* File : typedefs.h
|
|
* Description : Definition of platform independent data
|
|
* types and constants
|
|
*
|
|
*
|
|
* The following platform independent data types and corresponding
|
|
* preprocessor (#define) constants are defined:
|
|
*
|
|
* defined type meaning corresponding constants
|
|
* ----------------------------------------------------------
|
|
* Char character (none)
|
|
* Bool boolean true, false
|
|
* Word8 8-bit signed minWord8, maxWord8
|
|
* UWord8 8-bit unsigned minUWord8, maxUWord8
|
|
* Word16 16-bit signed minWord16, maxWord16
|
|
* UWord16 16-bit unsigned minUWord16, maxUWord16
|
|
* Word32 32-bit signed minWord32, maxWord32
|
|
* UWord32 32-bit unsigned minUWord32, maxUWord32
|
|
* Float floating point minFloat, maxFloat
|
|
*
|
|
*
|
|
* The following compile switches are #defined:
|
|
*
|
|
* PLATFORM string indicating platform progam is compiled on
|
|
* possible values: "OSF", "PC", "SUN"
|
|
*
|
|
* OSF only defined if the current platform is an Alpha
|
|
* PC only defined if the current platform is a PC
|
|
* SUN only defined if the current platform is a Sun
|
|
*
|
|
* LSBFIRST is defined if the byte order on this platform is
|
|
* "least significant byte first" -> defined on DEC Alpha
|
|
* and PC, undefined on Sun
|
|
*
|
|
********************************************************************************
|
|
*/
|
|
#ifndef typedefs_h
|
|
#define typedefs_h "$Id $"
|
|
|
|
/*
|
|
********************************************************************************
|
|
* INCLUDE FILES
|
|
********************************************************************************
|
|
*/
|
|
#include <float.h>
|
|
#include <limits.h>
|
|
|
|
#define __MSDOS__
|
|
|
|
/*
|
|
********************************************************************************
|
|
* DEFINITION OF CONSTANTS
|
|
********************************************************************************
|
|
*/
|
|
/*
|
|
********* define char type
|
|
*/
|
|
typedef char Char;
|
|
|
|
/*
|
|
********* define 8 bit signed/unsigned types & constants
|
|
*/
|
|
#if SCHAR_MAX == 127
|
|
typedef signed char Word8;
|
|
#define minWord8 SCHAR_MIN
|
|
#define maxWord8 SCHAR_MAX
|
|
|
|
typedef unsigned char UWord8;
|
|
#define minUWord8 0
|
|
#define maxUWord8 UCHAR_MAX
|
|
#else
|
|
#error cannot find 8-bit type
|
|
#endif
|
|
|
|
|
|
/*
|
|
********* define 16 bit signed/unsigned types & constants
|
|
*/
|
|
#if INT_MAX == 32767
|
|
typedef int Word16;
|
|
#define minWord16 INT_MIN
|
|
#define maxWord16 INT_MAX
|
|
typedef unsigned int UWord16;
|
|
#define minUWord16 0
|
|
#define maxUWord16 UINT_MAX
|
|
#elif SHRT_MAX == 32767
|
|
typedef short Word16;
|
|
#define minWord16 SHRT_MIN
|
|
#define maxWord16 SHRT_MAX
|
|
typedef unsigned short UWord16;
|
|
#define minUWord16 0
|
|
#define maxUWord16 USHRT_MAX
|
|
#else
|
|
#error cannot find 16-bit type
|
|
#endif
|
|
|
|
|
|
/*
|
|
********* define 32 bit signed/unsigned types & constants
|
|
*/
|
|
#if INT_MAX == 2147483647
|
|
typedef int Word32;
|
|
#define minWord32 INT_MIN
|
|
#define maxWord32 INT_MAX
|
|
typedef unsigned int UWord32;
|
|
#define minUWord32 0
|
|
#define maxUWord32 UINT_MAX
|
|
#elif LONG_MAX == 2147483647
|
|
typedef long Word32;
|
|
#define minWord32 LONG_MIN
|
|
#define maxWord32 LONG_MAX
|
|
typedef unsigned long UWord32;
|
|
#define minUWord32 0
|
|
#define maxUWord32 ULONG_MAX
|
|
#else
|
|
#error cannot find 32-bit type
|
|
#endif
|
|
|
|
/*
|
|
********* define floating point type & constants
|
|
*/
|
|
/* use "#if 0" below if Float should be double;
|
|
use "#if 1" below if Float should be float
|
|
*/
|
|
#if 0
|
|
typedef float Float;
|
|
#define maxFloat FLT_MAX
|
|
#define minFloat FLT_MIN
|
|
#else
|
|
typedef double Float;
|
|
#define maxFloat DBL_MAX
|
|
#define minFloat DBL_MIN
|
|
#endif
|
|
|
|
/*
|
|
********* define complex type
|
|
*/
|
|
typedef struct {
|
|
Float r; /* real part */
|
|
Float i; /* imaginary part */
|
|
} CPX;
|
|
|
|
/*
|
|
********* define boolean type
|
|
*/
|
|
typedef int Bool;
|
|
#define false 0
|
|
#define true 1
|
|
|
|
/*
|
|
********* Check current platform
|
|
*/
|
|
#if defined(__MSDOS__)
|
|
#define PC
|
|
#define PLATFORM "PC"
|
|
#define LSBFIRST
|
|
#elif defined(__osf__)
|
|
#define OSF
|
|
#define PLATFORM "OSF"
|
|
#define LSBFIRST
|
|
#elif defined(__sun__) || defined(__sun)
|
|
#define SUN
|
|
#define PLATFORM "SUN"
|
|
#undef LSBFIRST
|
|
#elif defined(linux) && defined(i386)
|
|
#define PC
|
|
#define PLATFORM "PC"
|
|
#define LSBFIRST
|
|
#else
|
|
#error "can't determine architecture; adapt typedefs.h to your platform"
|
|
#endif
|
|
|
|
#endif
|
|
|