• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2011 The LibYuv 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 #ifndef INCLUDE_LIBYUV_BASIC_TYPES_H_
12 #define INCLUDE_LIBYUV_BASIC_TYPES_H_
13 
14 #include <stddef.h>  // for NULL, size_t
15 
16 #ifndef WIN32
17 #include <stdint.h>  // for uintptr_t
18 #endif
19 
20 #ifndef INT_TYPES_DEFINED
21 #define INT_TYPES_DEFINED
22 #ifdef COMPILER_MSVC
23 typedef __int64 int64;
24 #else
25 typedef long long int64;
26 #endif /* COMPILER_MSVC */
27 typedef int int32;
28 typedef short int16;
29 typedef char int8;
30 
31 #ifdef COMPILER_MSVC
32 typedef unsigned __int64 uint64;
33 typedef __int64 int64;
34 #ifndef INT64_C
35 #define INT64_C(x) x ## I64
36 #endif
37 #ifndef UINT64_C
38 #define UINT64_C(x) x ## UI64
39 #endif
40 #define INT64_F "I64"
41 #else
42 typedef unsigned long long uint64;
43 typedef long long int64;
44 #ifndef INT64_C
45 #define INT64_C(x) x ## LL
46 #endif
47 #ifndef UINT64_C
48 #define UINT64_C(x) x ## ULL
49 #endif
50 #define INT64_F "ll"
51 #endif /* COMPILER_MSVC */
52 typedef unsigned int uint32;
53 typedef unsigned short uint16;
54 typedef unsigned char uint8;
55 #endif  // INT_TYPES_DEFINED
56 
57 // Detect compiler is for x86 or x64.
58 #if defined(__x86_64__) || defined(_M_X64) || \
59     defined(__i386__) || defined(_M_IX86)
60 #define CPU_X86 1
61 #endif
62 
63 #define IS_ALIGNED(p, a) (0==(reinterpret_cast<uintptr_t>(p) & ((a)-1)))
64 #define ALIGNP(p, t) \
65   (reinterpret_cast<uint8*>(((reinterpret_cast<uintptr_t>(p) + \
66   ((t)-1)) & ~((t)-1))))
67 
68 #endif // INCLUDE_LIBYUV_BASIC_TYPES_H_
69