portab.h
上传用户:sunbaby
上传日期:2013-05-31
资源大小:242k
文件大小:6k
源码类别:

mpeg/mp3

开发平台:

Visual C++

  1. /*****************************************************************************
  2.  *
  3.  *  T264 AVC CODEC
  4.  *
  5.  *  Copyright(C) 2004-2005 llcc <lcgate1@yahoo.com.cn>
  6.  *               2004-2005 visionany <visionany@yahoo.com.cn>
  7.  *
  8.  *  This program is free software ; you can redistribute it and/or modify
  9.  *  it under the terms of the GNU General Public License as published by
  10.  *  the Free Software Foundation ; either version 2 of the License, or
  11.  *  (at your option) any later version.
  12.  *
  13.  *  This program is distributed in the hope that it will be useful,
  14.  *  but WITHOUT ANY WARRANTY ; without even the implied warranty of
  15.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.  *  GNU General Public License for more details.
  17.  *
  18.  *  You should have received a copy of the GNU General Public License
  19.  *  along with this program ; if not, write to the Free Software
  20.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  21.  *
  22.  ****************************************************************************/
  23. #ifndef _PORTAB_H_
  24. #define _PORTAB_H_
  25. #include "config.h"
  26. #define _RW
  27. #define _R
  28. #define _W
  29. #define _INPUT
  30. #define _OUTPUT
  31. #define TRUE 1
  32. #define FALSE 0
  33. #if defined(_MSC_VER)
  34. #define int8_t   char
  35. #define uint8_t  unsigned char
  36. #define int16_t  short
  37. #define uint16_t unsigned short
  38. #define int32_t  int
  39. #define uint32_t unsigned int
  40. #define int64_t  __int64
  41. #define uint64_t unsigned __int64
  42. #define ptr_t uint32_t
  43. #define BYTE   uint8_t
  44. #define INT32  int32_t
  45. #define INT16  int16_t
  46. #define UINT16 uint16_t
  47. #define UINT32 uint32_t
  48. #if defined(ARCH_IS_IA32)
  49. #define BSWAP(a) __asm mov eax,a __asm bswap eax __asm mov a, eax
  50.          static __inline uint64_t read_counter(void)
  51.          {
  52.              __asm {
  53.                  rdtsc
  54.              }
  55.          }
  56. #define SWAP(type, x, y) { type* _tmp_; _tmp_ = x; x = y ; y = _tmp_;}
  57. #define CLIP1(x) (x & ~255) ? (-x >> 31) : x
  58. #define ABS(x) ((x) > 0 ? (x) : -(x))
  59. #else // ARCH_IS_IA32
  60. #error Please port BSWAP to other platform!
  61. #endif// ARCH_IS_IA32
  62. // vc6 does not support __declspec(aligned(x)) instead we need vc6 + sp5(or more), here we do some test
  63. #if _MSC_VER < 1200
  64. #error We need vc6 or more higher version!
  65. #else   // vc6 or higher
  66. extern _declspec(align(16)) int32_t if_you_see_errors_here_please_install_vc6_sp5_or_higher[1];
  67. #endif
  68. #define DECLARE_ALIGNED_MATRIX(name,sizex,sizey,type,alignment) 
  69.                 __declspec(align(alignment)) type name[(sizex)*(sizey)]
  70. #define DECLARE_ALIGNED_MATRIX_H(name,sizex,sizey,type,alignment) 
  71.     __declspec(align(alignment)) type name[(sizex)*(sizey)]
  72. #define DECLARE_ALIGNED2_MATRIX_H(name,sizex,sizey,type,alignment) 
  73.     __declspec(align(alignment)) type name[(sizex)][(sizey)]
  74. #endif // _MSC_VER
  75. #ifdef __GCC__
  76. #include <inttypes.h>
  77. #define ptr_t uint32_t
  78. #if defined(ARCH_IS_IA32)
  79. #define BSWAP(a) __asm__ ( "bswapl %0n" : "=r" (a) : "0" (a) );
  80.          static __inline int64_t read_counter(void)
  81.          {
  82.              int64_t ts;
  83.              uint32_t ts1, ts2;
  84.              __asm__ __volatile__("rdtscnt":"=a"(ts1), "=d"(ts2));
  85.              ts = ((uint64_t) ts2 << 32) | ((uint64_t) ts1);
  86.              return ts;
  87.          }
  88. #define SWAP(type, x, y) { type* _tmp_; _tmp_ = x; x = y ; y = _tmp_;}
  89. #define CLIP1(x) (x & ~255) ? (-x >> 31) : x
  90. #define ABS(x) ((x) > 0 ? (x) : -(x))
  91. #else // ARCH_IS_IA32
  92. #error Please port BSWAP to other platform!
  93. #endif// ARCH_IS_IA32
  94. #define DECLARE_ALIGNED_MATRIX(name,sizex,sizey,type,alignment) 
  95.                 type name[(sizex)*(sizey)] __attribute__((aligned(alignment)))
  96. #define DECLARE_ALIGNED_MATRIX_H DECLARE_ALIGNED_MATRIX
  97. #define DECLARE_ALIGNED2_MATRIX_H(name,sizex,sizey,type,alignment) 
  98.                 type name[(sizex)][(sizey)] __attribute__((aligned(alignment)))
  99. #endif // __GCC__
  100. //Ti_DSP Platform ported by YouXiaoquan,HFUT-Ti United Lab,China
  101. //YouXiaoquan@126.com
  102. #ifdef CHIP_DM642
  103. #define int8_t   char
  104. #define uint8_t  unsigned char
  105. #define int16_t  short
  106. #define uint16_t unsigned short
  107. #define int32_t  int
  108. #define uint32_t unsigned int
  109. #define int64_t  long
  110. #define uint64_t unsigned long
  111. #define ptr_t uint32_t
  112. #define BYTE   uint8_t
  113. #define INT32  int32_t
  114. #define INT16  int16_t
  115. #define UINT16 uint16_t
  116. #define UINT32 uint32_t
  117. #define BSWAP(a) { 
  118.                 unsigned int _temp0,_temp1,_temp2,_temp3,_temp4;
  119.                 _temp1=(a & 0xFF00FF00)>>8;
  120.                 _temp0=(a & 0x00FF00FF)<<8;
  121.                 _temp2=_temp0+_temp1;
  122.                 _temp3=(_temp2 & 0x0000FFFF)<<16;
  123.                 _temp4=(_temp2 & 0xFFFF0000)>>16;
  124.                      a=_temp3+_temp4;
  125.                 }
  126.          static __inline uint64_t read_counter(void)
  127.          { 
  128.           /*
  129.              __asm {
  130.                  rdtsc
  131.              }
  132.           *///Port to Ti_Platform
  133.           return clock();
  134.          }
  135. #define SWAP(type, x, y) { type* _tmp_; _tmp_ = x; x = y ; y = _tmp_;}
  136. #define CLIP1(x) (x & ~255) ? (-x >> 31) : x
  137. #define ABS(x) ((x) > 0 ? (x) : -(x))
  138. #define DECLARE_ALIGNED_MATRIX(name,sizex,sizey,type,alignment) 
  139.                 type name[(sizex)*(sizey)]
  140. #define DECLARE_ALIGNED_MATRIX_H(name,sizex,sizey,type,alignment) 
  141.                 type name[(sizex)*(sizey)]
  142. #define DECLARE_ALIGNED2_MATRIX_H(name,sizex,sizey,type,alignment) 
  143.                 type name[(sizex)][(sizey)] 
  144. #endif//// ported to Ti_Dsp_DM642 By You_xiaoQuan HFUT
  145. static __inline int32_t
  146. clip3(int32_t a, int32_t low, int32_t high)
  147. {
  148.     if (a < low)
  149.         return low;
  150.     
  151.     if (a > high)
  152.         return high;
  153.     return a;
  154. }
  155. #endif // _PORTAB_H_