17cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde/* 233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * Copyright 2011 The LibYuv Project Authors. All rights reserved. 37cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * 47cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * Use of this source code is governed by a BSD-style license 57cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * that can be found in the LICENSE file in the root of the source 67cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * tree. An additional intellectual property rights grant can be found 77cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * in the file PATENTS. All contributing project authors may 87cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * be found in the AUTHORS file in the root of the source tree. 97cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde */ 107cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 1133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifndef INCLUDE_LIBYUV_BASIC_TYPES_H_ // NOLINT 127cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define INCLUDE_LIBYUV_BASIC_TYPES_H_ 137cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 147cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#include <stddef.h> // for NULL, size_t 157cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 1633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#if !(defined(_MSC_VER) && (_MSC_VER < 1600)) 177cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#include <stdint.h> // for uintptr_t 187cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif 197cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 207cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#ifndef INT_TYPES_DEFINED 217cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define INT_TYPES_DEFINED 227cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#ifdef COMPILER_MSVC 237cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef unsigned __int64 uint64; 247cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef __int64 int64; 257cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#ifndef INT64_C 267cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define INT64_C(x) x ## I64 277cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif 287cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#ifndef UINT64_C 297cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define UINT64_C(x) x ## UI64 307cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif 317cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define INT64_F "I64" 3233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#else // COMPILER_MSVC 3333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifdef __LP64__ 3433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef unsigned long uint64; // NOLINT 3533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef long int64; // NOLINT 3633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifndef INT64_C 3733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define INT64_C(x) x ## L 3833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 3933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifndef UINT64_C 4033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define UINT64_C(x) x ## UL 4133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 4233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define INT64_F "l" 4333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#else // __LP64__ 4433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef unsigned long long uint64; // NOLINT 4533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef long long int64; // NOLINT 467cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#ifndef INT64_C 477cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define INT64_C(x) x ## LL 487cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif 497cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#ifndef UINT64_C 507cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define UINT64_C(x) x ## ULL 517cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif 527cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define INT64_F "ll" 5333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif // __LP64__ 5433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif // COMPILER_MSVC 557cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef unsigned int uint32; 5633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef int int32; 5733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef unsigned short uint16; // NOLINT 5833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef short int16; // NOLINT 597cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordetypedef unsigned char uint8; 6033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamptypedef signed char int8; 617cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif // INT_TYPES_DEFINED 627cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 637cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde// Detect compiler is for x86 or x64. 647cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#if defined(__x86_64__) || defined(_M_X64) || \ 657cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde defined(__i386__) || defined(_M_IX86) 667cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define CPU_X86 1 677cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#endif 6833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp// Detect compiler is for ARM. 6933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#if defined(__arm__) || defined(_M_ARM) 7033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define CPU_ARM 1 7133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 727cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 7333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifndef ALIGNP 747cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#define ALIGNP(p, t) \ 7533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp (reinterpret_cast<uint8*>(((reinterpret_cast<uintptr_t>(p) + \ 7633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp ((t) - 1)) & ~((t) - 1)))) 7733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 7833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 7933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#if !defined(LIBYUV_API) 8033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#if defined(_WIN32) || defined(__CYGWIN__) 8133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#if defined(LIBYUV_BUILDING_SHARED_LIBRARY) 8233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define LIBYUV_API __declspec(dllexport) 8333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#elif defined(LIBYUV_USING_SHARED_LIBRARY) 8433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define LIBYUV_API __declspec(dllimport) 8533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#else 8633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define LIBYUV_API 8733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif // LIBYUV_BUILDING_SHARED_LIBRARY 8833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#elif defined(__GNUC__) && (__GNUC__ >= 4) && !defined(__APPLE__) && \ 8933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp (defined(LIBYUV_BUILDING_SHARED_LIBRARY) || \ 9033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp defined(LIBYUV_USING_SHARED_LIBRARY)) 9133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define LIBYUV_API __attribute__ ((visibility ("default"))) 9233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#else 9333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define LIBYUV_API 9433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif // __GNUC__ 9533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif // LIBYUV_API 967cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 9733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif // INCLUDE_LIBYUV_BASIC_TYPES_H_ NOLINT 98