vpx_timer: increase resolution
[profile/ivi/libvpx.git] / vpx_ports / vpxtypes.h
1 /*
2  *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10
11
12 #ifndef __VPXTYPES_H__
13 #define __VPXTYPES_H__
14
15 #include "vpx_config.h"
16
17 //#include <sys/types.h>
18 #ifdef _MSC_VER
19 # include <basetsd.h>
20 typedef SSIZE_T ssize_t;
21 #endif
22
23 #if defined(HAVE_STDINT_H) && HAVE_STDINT_H
24 /* C99 types are preferred to vpx integer types */
25 # include <stdint.h>
26 #endif
27
28 /*!\defgroup basetypes Base Types
29   @{*/
30 #if !defined(HAVE_STDINT_H) && !defined(INT_T_DEFINED)
31 # ifdef STRICTTYPES
32 typedef signed char  int8_t;
33 typedef signed short int16_t;
34 typedef signed int   int32_t;
35 # else
36 typedef char         int8_t;
37 typedef short        int16_t;
38 typedef int          int32_t;
39 # endif
40 typedef unsigned char  uint8_t;
41 typedef unsigned short uint16_t;
42 typedef unsigned int   uint32_t;
43 #endif
44
45 typedef int8_t     vpxs8;
46 typedef uint8_t    vpxu8;
47 typedef int16_t    vpxs16;
48 typedef uint16_t   vpxu16;
49 typedef int32_t    vpxs32;
50 typedef uint32_t   vpxu32;
51 typedef int32_t    vpxbool;
52
53 enum {vpxfalse, vpxtrue};
54
55 /*!\def OTC
56    \brief a macro suitable for declaring a constant #vpxtc*/
57 /*!\def VPXTC
58    \brief printf format string suitable for printing an #vpxtc*/
59 #ifdef UNICODE
60 # ifdef NO_WCHAR
61 #  error "no non-wchar support added yet"
62 # else
63 #  include <wchar.h>
64 typedef wchar_t vpxtc;
65 #  define OTC(str) L ## str
66 #  define VPXTC "ls"
67 # endif /*NO_WCHAR*/
68 #else
69 typedef char vpxtc;
70 # define OTC(str) (vpxtc*)str
71 # define VPXTC "s"
72 #endif /*UNICODE*/
73 /*@} end - base types*/
74
75 /*!\addtogroup basetypes
76   @{*/
77 /*!\def VPX64
78    \brief printf format string suitable for printing an #vpxs64*/
79 #if defined(HAVE_STDINT_H)
80 # define VPX64 PRId64
81 typedef int64_t vpxs64;
82 #elif defined(HASLONGLONG)
83 # undef  PRId64
84 # define PRId64 "lld"
85 # define VPX64 PRId64
86 typedef long long vpxs64;
87 #elif defined(WIN32) || defined(_WIN32_WCE)
88 # undef  PRId64
89 # define PRId64 "I64d"
90 # define VPX64 PRId64
91 typedef __int64 vpxs64;
92 typedef unsigned __int64 vpxu64;
93 #elif defined(__uClinux__) && defined(CHIP_DM642)
94 # include <lddk.h>
95 # undef  PRId64
96 # define PRId64 "lld"
97 # define VPX64 PRId64
98 typedef long vpxs64;
99 #else
100 # error "64 bit integer type undefined for this platform!"
101 #endif
102 #if !defined(HAVE_STDINT_H) && !defined(INT_T_DEFINED)
103 typedef vpxs64 int64_t;
104 typedef vpxu64 uint64_t;
105 #endif
106 /*!@} end - base types*/
107
108 /*!\ingroup basetypes
109    \brief Common return type*/
110 typedef enum
111 {
112     VPX_NOT_FOUND        = -404,
113     VPX_BUFFER_EMPTY     = -202,
114     VPX_BUFFER_FULL      = -201,
115
116     VPX_CONNREFUSED      = -102,
117     VPX_TIMEDOUT         = -101,
118     VPX_WOULDBLOCK       = -100,
119
120     VPX_NET_ERROR        = -9,
121     VPX_INVALID_VERSION  = -8,
122     VPX_INPROGRESS       = -7,
123     VPX_NOT_SUPP         = -6,
124     VPX_NO_MEM           = -3,
125     VPX_INVALID_PARAMS   = -2,
126     VPX_ERROR            = -1,
127     VPX_OK               = 0,
128     VPX_DONE             = 1
129 } vpxsc;
130
131 #if defined(WIN32) || defined(_WIN32_WCE)
132 # define DLLIMPORT __declspec(dllimport)
133 # define DLLEXPORT __declspec(dllexport)
134 # define DLLLOCAL
135 #elif defined(LINUX)
136 # define DLLIMPORT
137 /*visibility attribute support is available in 3.4 and later.
138   see: http://gcc.gnu.org/wiki/Visibility for more info*/
139 # if defined(__GNUC__) && ((__GNUC__<<16|(__GNUC_MINOR__&0xff)) >= (3<<16|4))
140 #  define GCC_HASCLASSVISIBILITY
141 # endif /*defined(__GNUC__) && __GNUC_PREREQ(3,4)*/
142 # ifdef GCC_HASCLASSVISIBILITY
143 #  define DLLEXPORT   __attribute__ ((visibility("default")))
144 #  define DLLLOCAL __attribute__ ((visibility("hidden")))
145 # else
146 #  define DLLEXPORT
147 #  define DLLLOCAL
148 # endif /*GCC_HASCLASSVISIBILITY*/
149 #endif /*platform ifdefs*/
150
151 #endif /*__VPXTYPES_H__*/
152
153 #undef VPXAPI
154 /*!\def VPXAPI
155    \brief library calling convention/storage class attributes.
156
157    Specifies whether the function is imported through a dll
158    or is from a static library.*/
159 #ifdef VPXDLL
160 # ifdef VPXDLLEXPORT
161 #  define VPXAPI DLLEXPORT
162 # else
163 #  define VPXAPI DLLIMPORT
164 # endif /*VPXDLLEXPORT*/
165 #else
166 # define VPXAPI
167 #endif /*VPXDLL*/